Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

TStringList - exception safe ili ne?

[es] :: Pascal / Delphi / Kylix :: TStringList - exception safe ili ne?

[ Pregleda: 3030 | Odgovora: 8 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

srki
Srdjan Mitrovic
Auckland, N.Z.

Član broj: 2237
Poruke: 3654
*.navman.com.



+3 Profil

icon TStringList - exception safe ili ne?21.02.2006. u 03:51 - pre 221 meseci
U TList imam property da podesim da li lista posedje objekte ali nisam video tako nesto u TStringList. Ako u funkciji definisem promenjivu tipa TStringList i ako se u toj funkciji desi exception, sta ce da se desi sa stringovima iz TStringList? Da li ce destruktor od TStringList probati da pocisti stringove koji nisu referencirani od nekog drugog objekta?

[Ovu poruku je menjao srki dana 21.02.2006. u 09:47 GMT+1]
 
Odgovor na temu

morlic
Milos Orlic
Beograd

Član broj: 6081
Poruke: 735
*.98.EUnet.yu.



+1 Profil

icon Re: TStringList - exception safe ili ne?21.02.2006. u 08:45 - pre 221 meseci
Negde moras da uradis Free te string liste jer se to ne radi automatski, i to je najbolje u try..finally varijanti, na primer:

Code:

Sl:= TStringList.Create;
try
  // Nesto se radi sa listom
finally
  Sl.Free;
end;


Posebno resenje trazi varijanta u kojoj string listu ne koristis samo unutar jednog metoda, vec je koristis na nivou forme, data modul-a i sl. Onda radis Free u OnDestroy te forme ili DM-a. Naravno, obavezno proveravaj da li je objekat liste uposte napravljen:

Code:

OnCreate:
   Sl:= nil;
   Sl:= TStringList.Create;

....

OnDestroy:
  if Assigned(Sl) then
     FreeAndNil(Sl); // ili Sl.Free;













 
Odgovor na temu

srki
Srdjan Mitrovic
Auckland, N.Z.

Član broj: 2237
Poruke: 3654
*.jetstream.xtra.co.nz.



+3 Profil

icon Re: TStringList - exception safe ili ne?21.02.2006. u 08:57 - pre 221 meseci
Citat:
morlic: Negde moras da uradis Free te string liste jer se to ne radi automatski.

Ne mogu da verujem da nisu stavili da to moze da se podesava kao u TList. Hvala u svakom slucaju.
 
Odgovor na temu

nikola.j
Nikola Janković

Član broj: 15712
Poruke: 85
*.com
Via: [es] mailing liste



Profil

icon Re: TStringList - exception safe ili ne?21.02.2006. u 09:47 - pre 221 meseci
>

Mozda ti ovo pomogne

http://bdn.borland.com/article/0,1410,33423,00.html
 
Odgovor na temu

srki
Srdjan Mitrovic
Auckland, N.Z.

Član broj: 2237
Poruke: 3654
*.jetstream.xtra.co.nz.



+3 Profil

icon Re: TStringList - exception safe ili ne?21.02.2006. u 10:41 - pre 221 meseci
To mi treba! Nazalost ne radi mi u ovom slucaju jer koristim neke properties od TStringList kojih nema ovde ali makar mogu ovo da iskoristim na nekim drugim mestima. Resenje sa try finaly mi nije dobro jer u mom slucaju meni funkcija vraca TStringList pa onda moram da stavljam try finaly ne samo u funkciji vec na svakom mestu gde pozivam tu funkciju i radim nesto sa povratnim rezultatom a ne mogu da ocekujem od drugih da ce uvek to da postuju kada pozivaju moju funkciju. Nista, izgleda da cu morati da doradim ovaj TStringListRecord i ubacim te properties koji mi trebaju: Duplicates, Sorted...

Dugo nisam radio sa Delphijem pa sam zaboravio da se destruktori ne pozivaju automatski za razliku od C++ jezika.

Hvala vam obojici.

[Ovu poruku je menjao srki dana 21.02.2006. u 14:25 GMT+1]
 
Odgovor na temu

bondja

Član broj: 10286
Poruke: 167
*.adsl.sezampro.yu.



+3 Profil

icon Re: TStringList - exception safe ili ne?21.02.2006. u 14:12 - pre 221 meseci
Pa mozes da koristis TStringList, ako stavis da ti fja vraca preko interfejs promenljive.... onda ce ona sama da se oslobodi kada vise ne bude potrebe za njom.... :) tako da i ako neko zaboravi u kodu da je oslobodi......

poz.

 
Odgovor na temu

srki
Srdjan Mitrovic
Auckland, N.Z.

Član broj: 2237
Poruke: 3654
*.jetstream.xtra.co.nz.



+3 Profil

icon Re: TStringList - exception safe ili ne?21.02.2006. u 14:37 - pre 221 meseci
E super, nisam se setio toga. Probacu da koristim interfejse. Ja sam inace pre ovoga programirao u C++-u a tamo nema interfejsa pa se nisam navikao. Sada sam video da interfejsi imaju reference counter pa na kraju pozovu destruktor kada ne postoje vise interfejsi ka tom objektu. Hvala svima na idejama, mislim da cu sve negde primenjivati...
 
Odgovor na temu

morlic
Milos Orlic
Beograd

Član broj: 6081
Poruke: 735
*.213.EUnet.yu.



+1 Profil

icon Re: TStringList - exception safe ili ne?21.02.2006. u 21:47 - pre 221 meseci
HE, he, pa ja sam tek sada shvatio sta tebi treba :)
 
Odgovor na temu

srki
Srdjan Mitrovic
Auckland, N.Z.

Član broj: 2237
Poruke: 3654
*.navman.com.



+3 Profil

icon Re: TStringList - exception safe ili ne?22.02.2006. u 02:15 - pre 221 meseci
Nasao sam jednu zaista dobru stranicu, savetujem svima da pogledaju:
http://www.wehlou.com/Code/d6_items.htm

Citat:

I’m really and truly grieving that Delphi doesn’t allow objects on the stack and the automatic destructors. It’s a tragedy. The only thing that can, sometimes, replace it is the destruction of reference counted objects as they go out of scope. In other words, if you do the following, the object is exception safe and destroys itself as the procedure exits, even if it goes feet first:

Code:
type
  IMyObj = interface
  end;
  
  TMyObj = class(TInterfacedObject, IMyObj)
  end;

procedure MyProc;
var
  myobj : IMyObj;
begin
  myobj := TMyObj.Create;
  .. dadada
  .. dididi
  .. dododo
end;  <= here myobj will go out of scope and the object be freed
 
Odgovor na temu

[es] :: Pascal / Delphi / Kylix :: TStringList - exception safe ili ne?

[ Pregleda: 3030 | Odgovora: 8 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.