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 1741 korisnika na forumu :: 86 registrovanih, 7 sakrivenih i 1648 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., Akiro, aleph_one, Amerikanacc, Andrija357, annon, Bahuss, Baždaranac, brandža84, Bubimir, carinko, Chainsaw, DalmatinacMF, DeerHunter, deimos25, Doca, dolinalima, Donneraj, DonRumataEstorski, Dorcolac, Dorijan Grej, drpera, Drugard72, dule10savic, feanor, Giskard, Glavonja049, goran.vvv, hellenic, IpMan, Ivoo, Jakonjveliki, Jan, Jomini, Jovan.D, Kajzer Soze, kaput21, KimiMR, king111, koliko, Lazur_01, loon123, Macalone, Malahit, Man1ac021, max power, mercedesamg, Metanoja, Miki281, Milos ZA, mir juzni, mirkoro, MiroslavD, Miškić, Mićko, moldway, mrm, mustangkg, panonski mornar, Pavel Medved, pein, pera bager, pisac12, probisic, proka89, radovanstojkov023, Remarqe, Sharpshooter, Slingshot, Srki98, Tafocus, tooljan, trutcina, tubular, vazduh, veljko82, VJ, vladaa012, VNVK, vranjanac29, XBMC, Zastava, zeka013, zivojin32, 79693