1. Der Parameter CREATE_SUSPENDED steht an der falschen Stelle.
2. Die Thread-Prozedur selbst musst du klassenlos machen.
3. Du solltest "Self" als "lpParameter" hinter der Thread-Startadresse übergeben, denn
4. dann erhält die Thread-Prozedur das Objekt als Parameter und kann damit "Execute" aufrufen.
// Nachtrag
Etwa so:
Delphi-Quellcode:
function ThreadCallback(Data: Pointer): LongInt; stdcall;
begin
Result := TThread(Data).Execute;
end;
constructor TThread.Create(CreateSuspended: boolean);
const
SuspOrNot: array [Boolean] of DWORD = ( 0, CREATE_SUSPENDED );
begin
FThreadHandle := CreateThread(nil, 0, @ThreadCallback, Self, SuspOrNot[CreateSuspended], ThreadID);
end;