Guten Morgen,
neuer Tag, neues Glück.
Da mein ursprünglicher Fehler immer noch existiert, steige ich an dieser Stelle noch mal ein.
Wie bereits gesagt, wird eine
Exception ausgelößt, wenn mein Thread mit dem
TCP-Client (TWSocket von ICS) beendet wird bzw. beendet ist, und ich anschließen der Mainform den Focus geben, z.B. durch anklicken.
Was dann im Detail passiert kann ich schwer sagen. Aber ich nehme mal an, dass Windows sicherlich eine Window-Message schickt, deren Verarbeitung dann, aus welchen Gründen auch immer, fehlschlägt.
In meinem Programm fange ich im Grunde keinerlei Messages ab, bis auf eine einzige, die mein Thread an die Mainunit schickt wenn er sich beendet, aber die habe ich erst später hinzugefügt. Der Fehler war schon vorher da.
Leider weiß ich mir nicht zu helfen.
Wenn ich den Thread nicht erzeuge, und dem zur Folge auch nicht beende, tritt natürlich kein Problem auf.
Zu der
Exception springt mir die der Debugger der
IDE an folgende Stelle:
Delphi-Quellcode:
{ Standard window procedure }
function StdWndProc(Window: HWND;
Message: UINT; WParam: WPARAM; LParam: WPARAM): LRESULT;
stdcall;
{$IF Defined(CPUX86)}
{ In ECX = Address of method pointer }
{ Out EAX = Result }
asm
XOR EAX,EAX
PUSH EAX
PUSH LParam
PUSH WParam
PUSH
Message
MOV EDX,ESP
MOV EAX,[ECX].Longint[4]
CALL [ECX].Pointer
ADD ESP,12
//<- Genau hier hin.
POP EAX
end;
Ich habe mal eine Screenshot von der
IDE an dieser Stelle gemacht und angehängt. Vielleicht hat ja irgendjemand noch eine Idee, was ich machen könnte um dem Fehler auf die Spur zu kommen.
Meinen Thread häng ich auch noch mal dran, möglicherweise liegt der Fehler ja da drin.