Autor Beitrag
winx
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 249



BeitragVerfasst: Di 15.11.05 11:53 
Hallo,

ich habe in Delphi 2005.Net ein bereits bestehendes Delphi 7 Projekt importiert und alles so geändert, dass es sich kompilieren lässt.

Nun habe ich folgendes Problem:

Das Programm läuft einwandfrei ab. Wenn ich es jedoch beende und debugge steht der Debugger schon an der folgenden Stelle:

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
begin
  Application.Initialize;
  Application.CreateForm(TFormMain, FormMain);
  Application.CreateForm(TformMessageDialog, formMessageDialog);
  Application.CreateForm(TStatusForm, StatusForm);
  Application.Run;
end//Hier steht der Debugger


Wenn ich ihn nun weiterlaufen lassen (F8) kommen nacheinander 4 Speicherverletzung (Exceptions), 3 Unknown Software Exceptions, und ein Runtime Error.

Danach ist es gut und das Programm ist weg...

Habt ihr ne Ahnung wpran das liegen kann? Mein programm ist doch eigentlich schon zu...

Gruß und Danke,
winx
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19272
Erhaltene Danke: 1740

W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: Di 15.11.05 12:47 
Nun an dieser Stelle wird dann auf etwas, also irgendein Objekt, zugegriffen, was bereits aus dem Speicher entfernt wurde.

Und das passiert eben nach dem Application.Run, nämlich nach der Ausführung deines Programms...
Deshalb steht der Debugger dort.

Woran das liegen kann: Du greiftst auf irgendwas zu, was nicht mehr existiert, beispielsweise in finalization oder so. Oder in einem Destructor, z.B. von einem Formular oder so.

Warum das in Delphi 7 nicht auftritt, weiß ich allerdings nicht, denn es wurden zwar Änderungen an der Erzeugungs- und Entfernungsreihenfolge vorgenommen, das jedoch VOR Delphi 7 und nicht von Delphi 7 zu 2005.
Das hat vermutlich mit .NET zu tun, da wird diese Reihenfolge wieder anders sein, aber da hab ich keine große Ahnung von...

Aber vielleicht hilft es, wenn du dir mal alle Zugriffe auf Objekte in Destruktoren oder so ansiehst bzw. alles dort testweise auskommentierst.