Hallo zusammen,
ich möchte nur mal fragen, ob ihr das auch so machen würdet bzw. ob es hier vielleicht eine "elegantere" Lösung gibt oder wie auch immer.
Eins vorab: Dieser Programmteil funktioniert schon und ich möchte nur eure Meinung dazu hören!
Es geht darum von "außen" an einen Thread eine Nachricht in Form eines AnsiStrings zu schicken.
Aufruf von außen:
Delphi-Quellcode:
function SchickeNachricht (aMsg: PAnsiString): Boolean;
var
SendMsg : PAnsiString;
wParam,
lParam : LongInt;
aPointer : Pointer;
begin
New (SendMsg);
SendMsg^ := aMsg^;
aPointer := SendMsg;
wParam := MyOwnID;
Move (aPointer, lParam, SizeOf(LongInt));
Result := PostThreadMessage (MyThreadID, WM_User, wparam, lparam);
end;
Und hier der Empfang im Thread:
Delphi-Quellcode:
var
MessageData : TMsg;
wParam,
lParam : LongInt;
RecPointer : Pointer;
SendMsg : PAnsiString;
...
while PeekMessage(MessageData, 0, 0, 0, PM_REMOVE) do
begin
Case MessageData.Message of
WM_User : begin
wParam := MessageData.wParam;
if wParam = MyOwnID then
begin
lParam := MessageData.lParam;
Move (lParam, RecPointer, SizeOf(Pointer));
SendMsg := RecPointer;
//Hier irgendwas mit der Nachricht machen
CheckPoint := 5;
Dispose (SendMsg);
end;
end;
end;
end;
Ich hoffe ich habe nichts übersehen bei der Variablendeklaration
Gruß
Alex