[ Milan Milosevic @ 06.06.2008. 08:51 ] @
Ovako, imam jedan mali problem.
Pokusavam da napravim proceduru koja obavlja neku stvar
i nije problem u samoj proceduri vec zelim da se parametri koje unosim
odnose kako na roditeljsku klasu tako i na izvedenu klasu.
Konkretno
TFarmer = class
public
Ruke:Truke;
.......
end;

TFarmerovSin = class(TFarmer)

Ono sto zelim je da napravim proceduru koja ce se odnositi i na roditeljski i na klasu potomka
Procedure Seje(Farmer:?);
Farmer.Ruke:=....
Odnosno ne zelim da pravim zasebnu proceduru koja bi se odnosila posebno na TFarmer i na TFarmerovSin
[ schild @ 06.06.2008. 09:14 ] @
Ovo bi trebalo da radi ako sam dobro razumeo:
Code:
TFarmer = class
public
  Ruke:Truke;
  procedure Seje;
.......
end;

TFarmerovSin = class(TFarmer)
...

implementation

procedure TFarmer.Seje;
begin
  Ruke:=....
end;


Znaci mozes pozvati i Farmer.Seje i FarmerovSin.Seje. Uvek ce se te "Ruke" odnositi na onog za koga si pozvao metod.
To si mislio?

[ Milan Milosevic @ 06.06.2008. 09:57 ] @
Nisi dobro razumeo.
Procedura nije sastavni deo klase. Cak se nalazi u drugom modulu.
Znam i ja da bi tako radilo ali bi na taj nacin opteretio klasu procedurama.
Jer treba da uradim na stotine slicnih funkcija i procedura koje cu kasnije
smestiti u zaseban dll.
[ priki @ 06.06.2008. 10:10 ] @
tebi treba nešto što se zove "indirection"

evo ti link na tu temu kao i na celo OOP u Delphiju

http://delphi.about.com/od/oopindelphi/a/delphi_oop17.htm
[ schild @ 06.06.2008. 11:04 ] @
Mozda ovako nesto:

Code:

Unit UFarmeri;
TFarmer = class
public
  Ruke:Truke;
.......
end;

TFarmerovSin = class(TFarmer)
...


i onda u drugom unitu, koji je mozda i DLL ide...

Code:

Unit UDLL;
interface
uses UFarmeri;
type ctFarmeri = class of TFarmer;
...
procedure Seje(ATip: ctFarmeri; AObject: TObject);
...
implementation

procedure Seje(ATip: ctFarmeri; AObject: TObject);
begin
  (AObject as ATip).Ruke:=...;
end;


Onda bi mogao pozivati proceduru:
Seje(TFarmerovSin, FarmerovSin); ili Seje(TFarmer, Farmer);
[ Milan Milosevic @ 06.06.2008. 16:11 ] @
Hvala vam prijatelji. Resio sam problem.
Stvari su onakve kakve i treba da budu.
Dovoljno je navesti kao promenjivu samo tip roditeljske klase
i radice za sve nasledene klase.
To ne funkcionise u slucaju ako je parametar definisan kao var.
procedure seje( var Farmer:Tfarmerovsin);
ako je definisana za klasu TFarmer , ali to cu da resim na drugi nacin.
Hvala jos jednom za pomoc i trud.