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