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

Komponente i free

[es] :: Pascal / Delphi / Kylix :: Komponente i free

[ Pregleda: 2073 | Odgovora: 4 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

franjo_tahi
Franjo Tahi
Zagreb

Član broj: 34712
Poruke: 399
*.adsl.net.t-com.hr.



+1 Profil

icon Komponente i free30.11.2010. u 14:29 - pre 162 meseci
Imam definiran qrreport i u njemu:
....
public
qi: array of TQRImage;
end;

u formi u kojoj kreiran qrreport keriram i komponente QTRImage je proc. kao ova:

fmMain.btnTempClick(Sender: TObject);
begin
....
qr := tqr.Create(nil);
for i := 0 to Broj do begin
SetLength(qr.qi, i+1);
qr.qi := TQRImage.Create(nil);
qr.qi.Parent := qr;
....
end;

....
qr.free;
end;

Zanima me: da li se nakon qr.free oslobađa i memorija zauzeta s TQRImage greiranum u array-u qi ili moram raditi za svaku free (qr.qi.free) ?
 
Odgovor na temu

Milos D
Beograd

Član broj: 5621
Poruke: 280
*.adsl-3.sezampro.yu.



+1 Profil

icon Re: Komponente i free30.11.2010. u 18:48 - pre 162 meseci
Verovatno se ne oslobađa.

Code:

qr.qi := TQRImage.Create(nil);
qr.qi.Parent := qr;


Verovatno si hteo

Code:

qi[i] := TQRImage.Create(nil);
qi[i].Parent := qr;

?

A ako staviš

Code:

qi[i] := TQRImage.Create(qr);
qi[i].Parent := qr;


Onda će qr kad pozoveš qr.Free da "pobije" sve slike jer ih vidi kao svoju "decu".
 
Odgovor na temu

franjo_tahi
Franjo Tahi
Zagreb

Član broj: 34712
Poruke: 399
*.adsl.net.t-com.hr.



+1 Profil

icon Re: Komponente i free03.12.2010. u 08:21 - pre 162 meseci
Nisam shvatio razliku.

qi je definiran kao public varijabla u qr-u

Mjenjanje veličine qi se radi u drugoj formi isto kao i creiranje svakog člana.

U čemu je razlika ako varijablu dinamički kreiram u jednoj ili drugoj formi, ako ona pripada qr-u?

Sličan problem:
Code:

procedure fmMain.NekaProc
var a: TQRImage;
begin
   a := TQRImage.Create(nil);
   ....
end;


da li se nakon izlaska iz procedure oslobađa i varijabla a ?
 
Odgovor na temu

savkic
Igor Savkić

Moderator
Član broj: 92186
Poruke: 2739



+92 Profil

icon Re: Komponente i free03.12.2010. u 12:53 - pre 162 meseci
> qi je definiran kao public varijabla u qr-u

A qr je neki unit ili klasa, to je nebitno.

> U čemu je razlika ako varijablu dinamički kreiram u jednoj ili drugoj formi, ako ona pripada qr-u?

Nebitno je gde je praviš i gde je definisana, bitno je ko je njen owner, ako staviš Create(nil), nema ownera i sam vodiš računa o oslobađanju memorije. Ako staviš Create(Form1_orSomeOtherComponent) vlasnik je ta komponenta i kada se ona uništava biće uništeni i svi objekti koji joj pripadaju. To je isto kao kada stavljaš kontrole na formu, ne vodiš računa o njihovom kreiranju i oslobađanju, to radi automatski forma.

> a := TQRImage.Create(nil);
> da li se nakon izlaska iz procedure oslobađa i varijabla a ?

Ne, ako hoćeš neki reference counting mehanizam (oslobađanje objekta kada se više ne koristi), možeš koristiti interfejse ali to onda unekoliko menja način upotrebe.
 
Odgovor na temu

franjo_tahi
Franjo Tahi
Zagreb

Član broj: 34712
Poruke: 399
*.adsl.net.t-com.hr.



+1 Profil

icon Re: Komponente i free07.12.2010. u 08:07 - pre 162 meseci
Zahvaljujem na odgovoru, ovo mi je jasno.
 
Odgovor na temu

[es] :: Pascal / Delphi / Kylix :: Komponente i free

[ Pregleda: 2073 | Odgovora: 4 ] > FB > Twit

Postavi temu Odgovori

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