jak przekazać jakiś parametr (np. typu string) do wątku, tworząc go metodą
CreateThread();
. męczę sięz tym i męczę i nic nie moge zrobić. Proszę o pomoc ;-(
jak przekazać jakiś parametr (np. typu string) do wątku, tworząc go metodą
CreateThread();
. męczę sięz tym i męczę i nic nie moge zrobić. Proszę o pomoc ;-(
patrzyłem czy przypadkiem nie zrobiłem błędu pisząc ten post, ale jednak nie zrobiłem. :-8
Używam funkcji CreateThread() - i wniej jest parametr który zostanie przekazany do funkcji wywoływanej w ramach wątku. i nie wiem jak z tego skorzystać.
jak bym mógł to bym użył klasy TThread, [glowa] [glowa] [glowa] [glowa] [glowa]
Kawalek kodu zawsze jest najlepszy.
program Project1;
{$APPTYPE CONSOLE}
uses
SysUtils, Windows;
Type
PRekord = ^TRekord;
TRekord = record
liczba: Integer;
znak: Char;
end;
function funkcja1(parametr: Pointer): DWORD;stdcall;
var
i: Cardinal;
begin
i:=0;
while(i < 100000) do
begin
WriteLn('funkcja1, parametr: ', Integer(parametr));
Inc(i);
Sleep(10);
end;
end;
function funkcja2(parametr: Pointer): DWORD;stdcall;
var
i: Cardinal;
pomoc: PRekord;
begin
pomoc:=parametr;
i:=0;
while(i < 100000) do
begin
WriteLn('funkcja2, parametr: liczba: ', pomoc^.liczba, ' znak: ', pomoc^.znak );
Inc(i);
Sleep(11);
end;
end;
var
watek1, watek2: THandle;
watekid1, watekid2: DWORD;
Rekord: TRekord;
begin
Rekord.liczba:=666;
Rekord.znak:='*';
watek1:=CreateThread(nil, 20, @funkcja1, Pointer(100), 0, watekid1);//przez rzutowanie
watek2:=CreateThread(nil, 20, @funkcja2, @Rekord, 0, watekid2);//przez ares np. rekordu
WaitForSingleObject(watek1, INFINITE);
WaitForSingleObject(watek2, INFINITE);
CloseHandle(watek1);
CloseHandle(watek2);
end.