[ 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.
[ 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