Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Die Delphi-IDE (https://www.delphipraxis.net/62-die-delphi-ide/)
-   -   Frage zu ZV nach beenden des Programms (https://www.delphipraxis.net/175473-frage-zu-zv-nach-beenden-des-programms.html)

Jumpy 24. Jun 2013 13:22

Frage zu ZV nach beenden des Programms
 
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo,

bei einem bisher problemlos laufenden Programm, dass ich mir heute wg. einer Änderung nochmal angeschaut habe, bekomme ich beim Beenden des Programms immer eine Meldung über eine Zugriffsverletzung. Und ich habe noch nichtmal Begonnen die Änderungen einzubauen. Einfach Projekt in der IDE aufgemacht und mal F9 gedrückt und schon war der Fehler beim Schließen da.

Es handelt sich um eine simple Anwendung mit nur einem (Main)-Form.

Ich hab mal Haltepunkte ins OnClose des Forms gesetzt, da stept er problemlos durch und wechselt dann beim nächsten Step in die Projekdatei, steht da auf dem letzten End und da kommt dann beim nächsten Step die Fehlermeldung.

Er steht dann auch nirgendwo mehr im Programmcode, es popt direkt das CPU-Fenster auf. Siehe Screen-Shot.


Nachtrag: Hab in der Projektdatei immer im letzten Schritt F8 gedrückt. Jetzt mal F7 und siehe da es geht noch weiter und zwar in einer Unit HelpIntfs? Da geht er noch durch den finalization Abschnitt und da knallt es dann irgendwo glaub ich?

(Zum System: Delphi 6 auf Win7 64 bit Rechner)

Klaus01 24. Jun 2013 13:25

AW: Frage zu ZV nach beenden des Programms
 
Hallo,

vielleicht wird versucht eine bereits freigegbene Instanz nochmals freizugeben - oder es wird darauf zugegriffen.

Grüße
Klaus

baumina 24. Jun 2013 13:27

AW: Frage zu ZV nach beenden des Programms
 
Ich Tippe auf einen Zugriff auf ein Object im close oder destroy, das schon gefreet wurde. Ohne Code reines Ratespiel.

Jumpy 24. Jun 2013 13:53

AW: Frage zu ZV nach beenden des Programms
 
Wie gesagt. Das passiert mMn nachdem sämtlicher von mir geschriebener Code längst durch ist.

baumina 24. Jun 2013 14:02

AW: Frage zu ZV nach beenden des Programms
 
Unsauberer Thread, oder komische Komponenten.

Zitat:

Zitat von baumina (Beitrag 1219570)
Ohne Code reines Ratespiel.


Der schöne Günther 24. Jun 2013 14:09

AW: Frage zu ZV nach beenden des Programms
 
Kenne ich bislang auch nur von Threads die noch irgendwo im Hintergrund gelebt haben. Gibt der Call Stack wirklich nichts vernünftiges her?

Bernhard Geyer 24. Jun 2013 14:15

AW: Frage zu ZV nach beenden des Programms
 
Kompilier mal mit Debug-DCU's

Jumpy 24. Jun 2013 14:28

AW: Frage zu ZV nach beenden des Programms
 
Also ich benutz da kaum was aufwendiges, keine Threads, dlls oder so. Darum wundert mich das ja alles so. Ich hab aber jetzt gemerkt, dass ich die Fehlermeldung nur in der IDE bekomme. Starte und Beende ich die .exe ausserhalb der IDE kommt keine Fehlermeldung (gut, zu dem Zeitpunkt wo der Fehler kommt ist wahrscheinlich eh nicht mehr genug Programm da, um den Fehler anzuzeigen :wink:).

Somit könnte mich das also weiter nicht stören, weil ohne IDE merkt mans ja nicht, aber es stört mich trotzdem...

baumina 24. Jun 2013 14:33

AW: Frage zu ZV nach beenden des Programms
 
Ich seh in deinem angehängten Bild was von IDAPI32 -> benutzt du die BDE? Und du hast ein 64-bit System?

Sir Rufo 24. Jun 2013 14:36

AW: Frage zu ZV nach beenden des Programms
 
So einen komischen Fehler gab es auch mal im Zusammenhang mit den Livebindings.

Da wurde eine Komponente aus dem Speicher geworfen und eine andere Komponente hatte trotzdem noch eine Referenz darauf.
Diese wurde dann im Destroy nochmals versucht zu entsorgen und dann knallte es logischerweise.

Der Fehler tauchte ca. 1 min nach Beenden des Programms auf.

Pervers war, dass der Fehler nur dann aufgetaucht ist, wenn die Komponenten in einer bestimmten Reihenfolge zur Designtime auf das Formular gezogen wurden ;)

Bernhard Geyer 24. Jun 2013 14:41

AW: Frage zu ZV nach beenden des Programms
 
Zitat:

Zitat von Sir Rufo (Beitrag 1219586)
So einen komischen Fehler gab es auch mal im Zusammenhang mit den Livebindings.

Livebindings bei D6?


Also ich hatte den Fall das beim beenden einer DB-Verbindung mit der BDE auf das schon freigebeben Screen-Objekt zugegriffen wurde.
Lösung: Db-Verbindung im OnCloseQuery schließen.

Jumpy 24. Jun 2013 14:48

AW: Frage zu ZV nach beenden des Programms
 
Benutze keine BDE. DB ist Oracle via ADO->ODBC und kommt über ein Framework, auf das ich keinen Einfluss habe, das aber in anderen Anwendungen keine Fehler produziert, so dass ich da keinen Fehler vermute. Zumal ich im OnClose alle Datenbankverbindungen schließe.

Delphi-Quellcode:
procedure TMain.FormClose(Sender: TObject; var Action: TCloseAction);
begin
  if fprojekt <> nil then
    begin
      try
        Quelle.Close; //ADOQuery
        Con.Close;   //ADOConnection
        Projekt.WriteWindowPos(self);
        Projekt.Free;
      except
      end;
    end;
end;

Sir Rufo 24. Jun 2013 14:50

AW: Frage zu ZV nach beenden des Programms
 
Zitat:

Zitat von Bernhard Geyer (Beitrag 1219588)
Zitat:

Zitat von Sir Rufo (Beitrag 1219586)
So einen komischen Fehler gab es auch mal im Zusammenhang mit den Livebindings.

Livebindings bei D6?

Es ging nicht um die Livebindings, sondern um die komischen Reaktionen, die man sich mit
Delphi-Quellcode:
TComponent
-Nachfahren einhandeln kann.

Vor allem weil es nur in bestimmten Konstellationen auftreten kann (Reihenfolge der Erstellung zur Designtime).
Dann kann man sich einen Wolf suchen

baumina 24. Jun 2013 14:56

AW: Frage zu ZV nach beenden des Programms
 
Woher dann wohl das "call idapi32.@_..." kommt:?:

Jumpy 24. Jun 2013 15:15

AW: Frage zu ZV nach beenden des Programms
 
OK.OK. Ihr habt alle Recht.

Habe gerade gelernt, dass es in dem Framework noch eine Uralt dll gibt, die aus einer Oracle-Datenbank mittels BDE die Passwörter entschlüsselt ausliest.

Somit

@Baumina :thumb: für die BDE.
@Günther: :thumb: für die Thread-Vermutung (war zwar eine dll, aber halt auch eine Struktur, die ich da nicht vermutet habe.

Da das ganze aber normaleweise bisher zu funktionieren scheint:

@Sir Rufo: :thumb: Für die komischen Effekte, die hier warsch. der Auslösende Faktor sind.


Werd jetzt mal versuchen, ob ich diese Effekte (ohne das FrameWork) anzupacken eliminieren kann und dann bei Gelegenheit mal der GL vorschlagen ein paar Stunden darin zu investieren diesen ganzen Mechanismus im Framework "aufzuräumen".

baumina 24. Jun 2013 15:20

AW: Frage zu ZV nach beenden des Programms
 
Wow, alle haben Recht -> :party:


Alle Zeitangaben in WEZ +1. Es ist jetzt 06:20 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz