Einzelnen Beitrag anzeigen

Benutzerbild von TERWI
TERWI

Registriert seit: 29. Mär 2008
Ort: D-49626
381 Beiträge
 
Delphi 11 Alexandria
 
#3

AW: Fenster zur Laufzeit in einer Klasse - Fehler bei FREE

  Alt 31. Mär 2013, 18:45
Hmm, war ja ne Idee wert - hab ich den Logger mal sich selbst loggen lassen (wo es geht).
Hier der LOG von:
- 2x mal Fenster erzeugen/freigeben
- 1x Fenster erzeugen
- Logger beenden
Code:
destructor TLOG.Destroy;
begin
  FOnDestroy := true;    // das scheint absolut nicht zu interessieren im OnDesrtoy des Fensters
  SetLogWin(false);      // ..... hier schon
  if Assigned(FLOGWIN) then FLOGWIN.Free;       // FEHLER, wenn nicht ausmarkiert !
  SetLogFile(false);    
  ...
  inherited destroy;
end;
Das LOG:
Code:
[18:31:25:640] [LOGGER - MAIN]: .... Logger created
[18:31:29:171] [LOGGER - SetLogWin = true]: create
[18:31:29:187] [LOG_WIN - OnCreate]: ....
[18:31:38:671] [LOGGER - SetLogWin = false]: Destroy manually
[18:31:38:671] [LOG_WIN - OnDestroy]: Destroy manually
[18:31:41:859] [LOGGER - SetLogWin = true]: create
[18:31:41:859] [LOG_WIN - OnCreate]: ....
[18:31:45:875] [LOGGER - SetLogWin = false]: Destroy manually
[18:31:45:875] [LOG_WIN - OnDestroy]: Destroy manually
[18:31:51:859] [LOGGER - SetLogWin = true]: create
[18:31:51:859] [LOG_WIN - OnCreate]: ....
[18:31:54:765] [LOG_WIN - OnDestroy]: Destroy manually
[18:31:54:765] [LOGGER - SetLogWin = false]: Destroy in destructor
Das letzte 'Destroy manually' kommt aus dem OnDestroy des Fensters - und zwar vor dem Aufruf der eigentlichen Routine 'SetLogWin(false)' !

Für mich macht das den Eindruck, als wenn der Destructor der Loggers selbst das Fenster schon gleich beim Aufruf zumacht - wenn es denn noch da ist.
FLOGWIN ist dann aber nicht NIL.

.... sehr eigenartig.

Geändert von TERWI (31. Mär 2013 um 18:47 Uhr)
  Mit Zitat antworten Zitat