Forum Delphi.cz

FreePascal (FPC) a Lazarus => Obecné => Téma založeno: Libor.Karko 10-06-2018, 11:20:43

Název: Vlakno jako funkce
Přispěvatel: Libor.Karko 10-06-2018, 11:20:43
Dobrý den.Můj první pokus v lazaru.
Toto funkční v delphi.
Kód: [Vybrat]
Function OtevriThread(Param: Pointer): Longint;
begin
  beep;
end;


procedure TForm1.Button1Click(Sender: TObject);
var
 thh: THandle;
 thid: Cardinal;
begin
 thh:=BeginThread(nil,0,@OtevriThread,nil,0,thid);
 if (thh<>0) then CloseHandle(thh);
end;

Přes lazarus se mu nelibí CloseHandle"
unit1.pas(42,19) Error: Identifier not found "CloseHandle"

I když se mi to podaří rozjet pod win, půjde to i pod linuxem?
Název: Re:Vlakno jako funkce
Přispěvatel: Ondřej Pokorný 10-06-2018, 13:26:37
Klikni si na BeginThread pomocí Ctrl+levá myš a uvidíš, co všechno máš pro thready k dispozici v FPC. Mimo jiné i CloseThread, ten pod Windows volá právě CloseHandle.
Název: Re:Vlakno jako funkce
Přispěvatel: Libor.Karko 10-06-2018, 15:35:46
Zkoušel jsem a je tam  ;)
Proč mi to pak vyhazuje chybu?
Název: Re:Vlakno jako funkce
Přispěvatel: 100127 10-06-2018, 16:03:56
Zkoušel jsem a je tam  ;)
Proč mi to pak vyhazuje chybu?

Nevim kde je co (ani jakou verzi FPC pouzivas), ale modul threadh.inc aktualne neobsahuje funkci CloseHandle (tady je neoficialni mirror (https://github.com/graemeg/freepascal/blob/master/rtl/inc/threadh.inc)).
Název: Re:Vlakno jako funkce
Přispěvatel: Libor.Karko 10-06-2018, 16:21:14
I tam je   function CloseThread (threadHandle : TThreadID) : dword;
Název: Re:Vlakno jako funkce
Přispěvatel: 100130 10-06-2018, 16:23:33
I tam je   function CloseThread (threadHandle : TThreadID) : dword;

Ano, jen ve Tvem kodu v prvnim prispevku je CloseHandle, ne CloseThread.
Název: Re:Vlakno jako funkce
Přispěvatel: Libor.Karko 10-06-2018, 16:50:20
Tak stačilo zaměnít na CloseThread  ;)
Jsem to ale plantala  ;D
Název: Re:Vlakno jako funkce
Přispěvatel: Libor.Karko 10-06-2018, 17:00:39
Ve win je to ok, ale v linuxu to místo ukončení vlákna ukončí celou aplikací  >:(