Critical section - jel zna neko

1

Critical section - jel zna neko

offline
  • Emil Beli
  • Pridružio: 03 Jan 2005
  • Poruke: 2990
  • Gde živiš: Beograd

function TProcessThread.GetFileFromList: string; var    cs:TRTLCriticalSection; begin (*    InitCriticalSection(cs);    {$IFDEF windows}      EnterCriticalSection(cs.LockCount);    {$ELSE}      EnterCriticalSection(cs.__m_count);    {$ENDIF}  *)    result:=FileList.strings[0];    FileList.Delete(0);  (*    {$IFDEF windows}      LeaveCriticalSection(cs.LockCount);    {$ELSE}      LeaveCriticalSection(cs.__m_count);    {$ENDIF}    DoneCriticalsection(cs);   *) end; 

ovo sto je komentovano, ne kompajlira zbog Linux dela : EnterCriticalSection(cs.__m_count);

jel zna neko kako se radi sa CriticalSection u lazarusu?

Dopuna: 29 Avg 2006 15:31

Zapravo, kad se odkomentuje Windows deo, ni to ne radi



Registruj se da bi učestvovao u diskusiji. Registrovanim korisnicima se NE prikazuju reklame unutar poruka.
offline
  • Srđan Tot
  • Am I evil? I am man, yes I am.
  • Pridružio: 12 Jul 2005
  • Poruke: 2483
  • Gde živiš: Ljubljana

Koliko znam treba da pise:
Critical: TRTLCriticalSection; InitializeCriticalSection(Critical); EnterCriticalSection(Critical); LeaveCriticalSection(Critical); DeleteCriticalSection(Critical);

Ovaj kod bi trebalo da radi na svim platformama.



offline
  • Pridružio: 04 Sep 2003
  • Poruke: 24135
  • Gde živiš: Wien

http://wiki.lazarus.freepascal.org/index.php/Multithreaded_Application_Tutorial
http://freepascal.org/docs-html/prog/progch10.html#x212-21500010

offline
  • Emil Beli
  • Pridružio: 03 Jan 2005
  • Poruke: 2990
  • Gde živiš: Beograd

@Srki

unProcess.pas(82,35) Error: call by var parameters have to match exactly: Got "TRTLCriticalSection" expected "LongInt"

@Bobby
Primer sa wikija nema to, primer iz drugog linka kreira gresku odozgo

offline
  • Srđan Tot
  • Am I evil? I am man, yes I am.
  • Pridružio: 12 Jul 2005
  • Poruke: 2483
  • Gde živiš: Ljubljana

Ok... evo ispravke koja radi (program se kompajlira i radi kada se pokrene). Napravio sam nov projekat, postavio dugmence i u OnClick event napisao ovo:
procedure TForm1.Button1Click(Sender: TObject); var   Critical: TRTLCriticalSection; begin   InitCriticalSection(Critical);   EnterCriticalSection(Critical);   LeaveCriticalSection(Critical);   DoneCriticalsection(Critical); end;

offline
  • Emil Beli
  • Pridružio: 03 Jan 2005
  • Poruke: 2990
  • Gde živiš: Beograd

Pa meni to ne radi..

offline
  • Srđan Tot
  • Am I evil? I am man, yes I am.
  • Pridružio: 12 Jul 2005
  • Poruke: 2483
  • Gde živiš: Ljubljana

Hajde kopiraj definicije funkcija InitCriticalSection, EnterCriticalSection, LeaveCriticalSection i DoneCriticalsection iz Lazarusa pa da vidimo... koristim 0.9.16 verziju Lazarusa.

offline
  • Emil Beli
  • Pridružio: 03 Jan 2005
  • Poruke: 2990
  • Gde živiš: Beograd

I ja koristim istu verziju, koju sam za windoze skinuo pre 4 dana sa sajta. Posto sam reinstalirao suse, nemam linux verziju, ali mi se apsolutno isto deshavalo.

offline
  • Srđan Tot
  • Am I evil? I am man, yes I am.
  • Pridružio: 12 Jul 2005
  • Poruke: 2483
  • Gde živiš: Ljubljana

Hajde kopiraj definicije tih funkcija iz source... sigurno ima razlike kad nece da se iskompajlira.

offline
  • Emil Beli
  • Pridružio: 03 Jan 2005
  • Poruke: 2990
  • Gde živiš: Beograd

Reshio sam to.

uses SyncObjs... function TProcessThread.GetFileFromList: string; var    Critical:TCriticalSection; begin   critical:=TCriticalSection.Create;   try   Critical.Acquire;    result:=FileList.strings[0];    FileList.Delete(0);   Critical.Release;   finally     critical.Free;   end; end;

Drugi problem... jel zna neko kako da resizujem JPG?

jpg := TJPEGImage.create;     try       jpg.LoadFromFile(infile);       // LAZARUS BUG u sledecoj       bmp.canvas.StretchDraw(Rect(0,0,AWidth,AHeight),jpg);     finally       jpg.Free;     end;        .....

StrechDraw je toliko bagiran da izlazi skroz zeznuta slika.
Jel zna neko kako da napravim resize?!

Ko je trenutno na forumu
 

Ukupno su 1118 korisnika na forumu :: 34 registrovanih, 6 sakrivenih i 1078 gosta   ::   [ Administrator ] [ Supermoderator ] [ Moderator ] :: Detaljnije

Najviše korisnika na forumu ikad bilo je 3466 - dana 01 Jun 2021 17:07

Korisnici koji su trenutno na forumu:
Korisnici trenutno na forumu: 357magnum, Bobrock1, cavatina, cenejac111, CikaKURE, comi_pfc, Dimitrise93, FileFinder, galerija, HrcAk47, Kubovac, kybonacci, Leonov, ljuba, Luka1998, Marex, MB120mm, mercedesamg, Mi lao shu, Milenaaa, Milos ZA, Mlav, mocnijogurt, Ne doznajem se u oružje, nebkv, nemkea71, Parker, rodoljub, Singidunumac, styg, suton, tomigun, Trpe Grozni, wolverined4