[ MarkoBalkan @ 04.04.2009. 23:35 ] @
koristim lazarus. kako u pascalu definirati varijablu kao new? kako koristiti recimo komponentu za firebird bazu, bez da ju stavim na formu? u uses je navedena klasa, ali mi ne radi. |
[ MarkoBalkan @ 04.04.2009. 23:35 ] @
[ xenox @ 05.04.2009. 22:08 ] @
uses mojekompnente;
procedure kreirajkomponentu; var MojaKomp:@TKompnenta; begin new(MojaKOmp); MojaKomp:=Tkomponenta.create; end; ne zaboravi da je free i dispose kad zavrsis... [ Rapaic Rajko @ 06.04.2009. 09:50 ] @
Ne bih rekao da je gornji primer dobar. Treba valjda ovako:
Code: procedure kreirajkomponentu; var MojaKomp: ^TKomponenta; // pointer na TKomponenta begin new(MojaKomp); MojaKomp^ := TKomponenta.Create(nil); // ako JESTE komponenta, ima parametar Owner... // ... // ... MojaKomp^.Free; dispose(MojaKomp); end; Kljucno u ovoj prici je da je MojaKomp zapravo pointer na pointer/referencu. Prema tome, i ovo je sasvim ispravno Code: var MojaKomp: ^TKomponenta; Komp: TKomponenta; begin Komp := TKomponenta.Create(nil); MojaKomp := @Komp; MojaKomp^.Free; // ovo upravo ubija komponentu // u ovom slucaju se NE radi dispose(), jer nije bilo ni new() end; Rajko Copyright (C) 2001-2025 by www.elitesecurity.org. All rights reserved.
|