przekazywanie parametrów do wątku

0

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 ;-(

0

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]

0

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.

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0