Hallo !
Delphi6 :
Also, ich hab ne ziemlich kompliziertes Programm mit parallelen Fenstern und zugehörigen Threads und natürlich auch ein entsprechendes Logfile, welches die Benutzeraktionen mitprotokolliert.
Systemweit gibt es also eine Funktion (SchreibInsLogFile), die in eine eigene
DLL ausgelagert ist.
Nun sollen die Logausgaben auch in einem Fenster (dort TMemo "AnzeigeLog") angezeigt werden ... .
Hab also ein Fenster gemalt und in die
DLL ausgelagert. Dieses Fenster wird auch in dem (Programmeigenen) Fenstermanager registriert und kann daher auch von dort gekillt werden.
a)
Alles geht gut, auch : SendMessage(LogFensterHwnd,...);
Dann neues Fenster und während des Aufbaus kommt mehrfach SendMessage(LogFensterHwnd,...);
und rums - neues Fenster - und Programm bleibt mitten im Aufbau stehn.
Hängt also irgendwie die MessageQueue ab...
Also folgendes versucht :
b)
procedure SchreibInsLog(text);
if LogHwnd <> 0 then
LogFenster.AnzeigeLog.Lines.Add(text); // hier ins Fenster
SchreibInLogDatei(text); // hier in Datei
end;
zeigt mir LogFenster im Debugger mit Wert nil an... -> Scheisse
c)
also in FormCreate(Sender : TObject);
Testsender := Sender; // ist massiv nicht sauber - weiss ich
zwischengespeichert;
und ...
procedure SchreibInsLog(text);
if LogHwnd <> 0 then
(Testsender as TLogFenster).AnzeigeLog.Lines.Add(text); // hier ins Fenster
SchreibInLogDatei(text); // hier in Datei
end;
=> gleiches wie bei "a)"
Brauche eigentlich nur eine Idee - moechte wg. Aufwand keinen eigenen Thread machen... .
GGf. Wie ich aus dem FensterHwnd irgendwie aus TMemo komme oder so... .
Gruss