Forum: Win32/Win64 API (native code)
Delphi
by himitsu,
16. Feb 2021
Einfach: Am Anfang im Queue nochmal prüfen, ob das Fenster noch da ist (z.B. über Screen.Forms das Self prüfen), bevor darauf zugegriffen wird.
Während des Queue kann das Fenster dann anschließend nicht mehr verschwinden. (außer man hat ein Application.ProgressMessage, einen Dialog oder Ähnliches darin)
Bei Dateioperationen auf eine Netzwerkfreigabe, da kann es auch schonmal ewig hängen....
Forum: Win32/Win64 API (native code)
Delphi
by himitsu,
12. Feb 2021
Nur im Programm oder auch im Debugger?
Wie gesagt, im Programm selber werden unbehandelte Exceptions im Thread von Delphi abgefangen (und dann böswillig nicht ausgegeben).
Wann haben die das umgebaut? bin mir fast sicher FatalException wurde früher vor Destroy freigegeben.
Somit ist es jetzt aber auch im Destroy noch verfügbar. :firejump:
Denn Exceptions in irgendeinem Thread...
Forum: Win32/Win64 API (native code)
Delphi
by himitsu,
12. Feb 2021
Thread-Exceptions ausgeben
type
TAnalyseThread = class(TThread)
protected
procedure DoTerminate; override; // oder z.B. als MyOnTerminate über OnTerminate
end;
procedure TAnalyseThread.DoTerminate;
begin
if Assigned(FatalException) then begin // FatalException ist ausschließlich im OnTerminate/DoTerminate verfügbar
Forum: Win32/Win64 API (native code)
Delphi
by himitsu,
12. Feb 2021
Da steht doch in dem Dialog aus #4, dass der Thread selbst nicht freigegeben wurde. (was in dem Thread ist, ist demnach eh egal)
PS: Strg+C im Dialog und dann Strg+V hier in ein ... das wird als "Text" kopiert.
Forum: Win32/Win64 API (native code)
Delphi
by himitsu,
12. Feb 2021
Also per se stimmt mit TSammelListe eigentlich alles. (im Create erstellen und im Destroy freigeben ... beides auf der selben Ebene ist immer gut)
Bist du sicher, dass das Speicherleck "dieses" Objekt ist und nicht irgendwas Anderes?
Was aber niemand verbieter, ins Create und Destroy der TSammelListe einen Haltepunkt oder Logmeldung einzufügen und zu schauen ob und wie oft das...