vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
sevDataGrid - Gönnen Sie Ihrem SQL-Kommando diesen krönenden Abschluß!  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2024
 
zurück

 Sie sind aktuell nicht angemeldet.Funktionen: Einloggen  |  Neu registrieren  |  Suchen

Fortgeschrittene Programmierung
Projekt-Ende mit "END" ist verboten - eigentlich 
Autor: Wolfgang Schwarz
Datum: 25.11.19 15:54

Hallo Forum,

seit Urzeiten lese ich in Fach-Artikeln:

- eine VB6 wird ordentlich beenden durch entladen aller Formen. Das Projekt beendet sich selbst beim Entladen der letzen Form.

- mache ich auch so

- nun habe ich habe ein unterschiedliches Verhalten in der IDE und der kompilierten EXE;
IDE: nach Entladen der letzten Form wechselt die IDE vom Laufzeitmodul in den Edit-Modul
EXE: nach Entladen der letzten Form ist zwar nichts mehr sichtbar, aber im Task-Manager sehe ich das die EXE noch im Arbeitsspeicher ist.

Ich kann mir das Verhalten nicht erklären, ich weis auch nicht was ich noch testen soll.
Eine Liste aller geladenen Forms habe ich mir schon protokollieren lassen, nix auffäliges keine Form heimlich dazu gekommen.

Doch verbotenes "END" machen ?

Wolfgang Schwarz

Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Projekt-Ende mit "END" ist verboten - eigentlich 
Autor: Zardoz
Datum: 25.11.19 16:25

Hallo Wolfgang,
nach dem Unload darf kein Befehl mehr ausgeführt werden,
der auf ein Control oder das Formular zugreift, sonst
wird es erneut verdeckt geladen.
Siehe auch:
https://activevb.de/rubriken/faq/faq0013.html

Gruss,

Zardoz

Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Projekt-Ende mit "END" ist verboten - eigentlich 
Autor: Wolfgang Schwarz
Datum: 25.11.19 17:05

Danke für die Antwort und für den Link.

Wie schon geschrieben, das abweichende Verhalten zwischen IDE und EXE wundert mich
In der IDE funktionert es wie geünscht.

Mein kniffeliges Problem ist das ich im Unload-Ereignis von Form1 auch die Form2 entladen möchte.
Das Problem ist ja das kein Code mehr läuft wenn das Unload-Ereignis von Form1 erledigt ist.
Wo also sonst die Form2 entladen ?
In der IDE funktionert es wie geünscht, aber in der EXE funzt es nur mit END

Da muss ich nochmal in mich gehen.

Vielen Dank

Wolfgang Schwarz

Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Projekt-Ende mit "END" ist verboten - eigentlich 
Autor: Souffleurlos
Datum: 26.11.19 15:11

Hallo Wolfgang,

wer sagt, dass das Schlüsselwort: "END" verboten ist? Ist das wieder so ein Gehirnfurz von einem durchgeknallten Prof?

Wozu implementiert man ein Schlüsselwort in eine Sprache wenn deren Anwendung verboten sein soll?

Wenn END das Problem löst, dann ist das Schlüsselwort die Lösung deines Problems und darauf kommt es an. END räumt nämlich die ROT (running object Table) auf und lässt damit Speicher frei werden.

Vielleicht auch so ein Gedanke?
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Projekt-Ende mit "END" ist verboten - eigentlich 
Autor: RBE.-Elektronik
Datum: 28.11.20 17:13

Hallo Freunde des VB6 und einen guten Tag.

End ist nicht verboten wenn es an der richtigen Stelle steht. Nachfolgend ein Programmteil aus meinem Programm. Hierbei funktioniert das bestens. Für alle die sich dafür interessieren. Darf auch genutzt werden. Anpassen nicht vergessen.

Mit freundlichem Gruß,

Ralf.


Sub Dateibeenden_Click()
If datenbankengespeichert = 0 Then Call Systemdatenbanklokalspeicherndatei
Dim i As Integer
Dim Cancel As Integer
Dim UnloadMode As Integer
Dim dbdatenbank2 As String
Dim dbdatenbank3 As String
Dim dbdatenbank4 As String
On Error GoTo 0
dbdatenbank2 = datensuchpfad & "HSVSchützendatenbank.dat"
dbdatenbank3 = datensuchpfad & "Konfig.av7.txt"
dbdatenbank4 = datensuchpfad & "Internetseiten.txt"
SetAttr dbdatenbank2, vbHidden
SetAttr dbdatenbank4, vbHidden
SetAttr dbdatenbank3, vbHidden
Unload Hauptseite
On Error Resume Next
For i = Forms.Count To 1 Step -1
Unload Forms(i)
Next i
Picture6.Picture = LoadPicture("")
On Error GoTo 0
datenbankengespeichert = 0
Call Form_QueryUnload(Cancel, UnloadMode)
End
End Sub

Private Sub Form_QueryUnload(Cancel As Integer, UnloadMode As Integer)
Unload frmSplash
Set frmSplash = Nothing
programmendeschluessel = 1
Dateinameloeschen = datensuchpfad & "Schützendatenbank.dat"
Hauptseite.Label3.Visible = True
Hauptseite.Label3.Caption = "Schützendatenbank wird entfernt und Programm beendet."
If Dir(datensuchpfad & "Schützendatenbank.dat") <> "" Then Call Dateientfernen(Dateinameloeschen)
If Dir(datensuchpfad & "Schützendatenbank.dat") <> "" Then Kill datensuchpfad & "Schützendatenbank.dat"
Dim dbdateiname2 As String
Dim dbdateiname3 As String
Dim dbdateiname4 As String
If datenbankengespeichert = 0 Then Call Systemdatenbanklokalspeicherndatei
If UnloadMode = vbFormControlMenu Then
Cancel = False
dbdateiname2 = datensuchpfad & "HSVSchützendatenbank.dat"
dbdateiname3 = datensuchpfad & "Konfig.av7.txt"
dbdateiname4 = datensuchpfad & "Internetseiten.txt"
On Error Resume Next
SetAttr dbdateiname2, vbSystem
On Error Resume Next
SetAttr dbdateiname3, vbSystem
On Error Resume Next
SetAttr dbdateiname4, vbSystem
On Error Resume Next
SetAttr dbdateiname2, vbHidden
On Error Resume Next
SetAttr dbdateiname3, vbHidden
On Error Resume Next
SetAttr dbdateiname4, vbHidden
On Error GoTo 0
On Error GoTo 0
On Error GoTo 0
On Error GoTo 0
On Error GoTo 0
On Error GoTo 0
Call Hauptseitebeenden
Call speicherfreigeben
Else
End If
On Error GoTo 0
Call Hauptseitebeenden
Call speicherfreigeben
End
End Sub

Ralf.

Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Sie sind nicht angemeldet!
Um auf diesen Beitrag zu antworten oder neue Beiträge schreiben zu können, müssen Sie sich zunächst anmelden.

Einloggen  |  Neu registrieren

Funktionen:  Zum Thema  |  GesamtübersichtSuchen 

nach obenzurück
 
   

Copyright ©2000-2024 vb@rchiv Dieter Otter
Alle Rechte vorbehalten.
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.

Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel