Beispiel Heap:
program ParameterHeap;
{$APPTYPE CONSOLE}
uses
Windows;
type
TThreadParams = packed record
Number: Integer;
Text: string;
end;
PThreadParams = ^TThreadParams;
function IntToStr(Int: integer): string;
begin
Str(Int, result);
end;
function ThreadFunc(tp: PThreadParams): Integer;
var
Number : Integer;
Text : string;
s : string;
begin
Number := PThreadParams(tp)^.Number;
Text := PThreadParams(tp)^.Text;
s := 'Zahl: ' + IntToStr(Number) +
Result := MessageBox(0, PChar(s), 'Thread', MB_YESNO or MB_ICONINFORMATION);
Dispose(tp);
end;
procedure RunThread;
var
tp : PThreadParams;
Thread : THandle;
ThreadID : Cardinal;
ExitCode : Cardinal;
begin
New(tp);
tp.Number := 42;
tp.Text := 'Die Antwort.';
Thread := BeginThread(nil, 0, @ThreadFunc, tp, 0, ThreadID);
WaitForSingleObject(Thread, INFINITE);
GetExitCodeThread(Thread, ExitCode);
case ExitCode of
IDYES: Writeln('Benutzer hat "Ja" angeklickt.');
IDNO: Writeln('Benutzer hat "Nein" angeklickt.');
end;
CloseHandle(Thread);
end;
begin
RunThread;
Readln;
end.
Beispiel Stack:
program ParameterStack;
{$APPTYPE CONSOLE}
uses
Windows;
type
TThreadParams = packed record
Number: Integer;
Text: string;
end;
PThreadParams = ^TThreadParams;
function IntToStr(Int: integer): string;
begin
Str(Int, result);
end;
function ThreadFunc(tp: PThreadParams): Integer;
var
Number : Integer;
Text : string;
s : string;
begin
Number := PThreadParams(tp)^.Number;
Text := PThreadParams(tp)^.Text;
s := 'Zahl: ' + IntToStr(Number) +
Result := MessageBox(0, PChar(s), 'Thread', MB_YESNO or MB_ICONINFORMATION);
end;
procedure RunThread;
var
tp : TThreadParams;
Thread : THandle;
ThreadID : Cardinal;
ExitCode : Cardinal;
begin
tp.Number := 42;
tp.Text := 'Die Antwort.';
Thread := BeginThread(nil, 0, @ThreadFunc, @tp, 0, ThreadID);
WaitForSingleObject(Thread, INFINITE);
GetExitCodeThread(Thread, ExitCode);
case ExitCode of
IDYES: Writeln('Benutzer hat "Ja" angeklickt.');
IDNO: Writeln('Benutzer hat "Nein" angeklickt.');
end;
CloseHandle(Thread);
end;
begin
RunThread;
Readln;
end.
Keine Kommentare:
Kommentar veröffentlichen