Guck dir mein Threading Tutorial an. In den Demos zeige ich, wie man Parameter an Threads übergibt.
Bitte nicht
CreateThread nutzen. Und die Thread-Funktion nicht als stdcall deklarieren.
Delphi-Quellcode:
type
TThreadParams = record
MyInt: Integer;
MyString: String[255];
end;
PThreadparams = ^TThreadParams;
[..]
function ThreadFunc(p: Pointer): Integer;
var
i: Integer;
s: String;
begin
i := PThreadParams(p)^.MyInt;
s := PThreadParams(p)^.MyString;
[..]
FreeMem(p, sizeof(TThreadParams));
end;
[..]
procedure Foobar;
var
ThreadParams: PThreadParams
begin
GetMem(ThreadParams, sizeof(TThreadParams));
ThreadParams.MyInt := 5;
ThreadParams.MyString := 'Meflin ist doof.';
hThread := BeginThread(0, nil, @ThreadFunc, ThreadParams, ... );
if hThread <> 0 then
begin
...;
CloseThread(hThrerad);
end;
Mal so auf die Schnelle ohne Compiler in die Tasten gehauen.