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
  • 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

[Link mogu videti samo ulogovani korisnici]
[Link mogu videti samo ulogovani korisnici]

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
  • 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
  • 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
  • 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 867 korisnika na forumu :: 53 registrovanih, 3 sakrivenih i 811 gosta   ::   [ Administrator ] [ Supermoderator ] [ Moderator ] :: Detaljnije

Najviše korisnika na forumu ikad bilo je 20624 - dana 04 Apr 2026 04:18

Korisnici koji su trenutno na forumu:
Korisnici trenutno na forumu: 357magnum, A.R.Chafee.Jr., acatomic, alex71, ALEXV, amaterSRB, Atila919, black venom, Bojan198527, bojcistv, boromir, Branke90, BWG, davorb, djonsule, djuradj, doktor097, eagle.rs, FileFinder, Giskard, Imperator_Aleksandr_lll, IpMan, IQ116, Ir, Jozo74, kalens021, keyz, lcc, leopard83, ludiagresivan, Mi lao shu, Mikisha, milenko crazy north, Milometer, nnovakis, pein, picknick, Piicoki, precan, ShtagodShtagod, Sinisa76, StankoVrankovic, stefan95, tomigun, Vasilije Budović, vathra, Velizar Laro, Veljko™, vidra1, Vlad000, vukajlo71, Vukasin1981, ČOBAN