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

Nasledjivanje klase

[es] :: Pascal / Delphi / Kylix :: Nasledjivanje klase

[ Pregleda: 2560 | Odgovora: 3 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

reiser

Član broj: 7895
Poruke: 2314



+102 Profil

icon Nasledjivanje klase08.02.2010. u 16:34 - pre 173 meseci
Dakle, imam TStringList klasu koja cuva stringove u FItems : Array of String. Da li je moguce da napravim novu klasu, recimo TNotifyList koja bi imala sve mogucnosti koje ima StringList (dakle, da je nasledi) s' tim sto ne bi cuvala samo stringove vec i jedno boolean polje za svaki item ? Dakle, deklaracija FItema u toj novoj klasi bi bila ovako nesto:

Code:

TNotifyListItem = record
  Item : String;
  Polje : Boolean;
end;
TNotifyListItems = Array of TNotifyListItem;

...

FItems  : TNotifyListItems;


Probao sam nesto sa inherited; ali mi nije bas poslo za rukom.
 
Odgovor na temu

krle_zr

Član broj: 96307
Poruke: 258
93.87.251.*



+7 Profil

icon Re: Nasledjivanje klase08.02.2010. u 18:39 - pre 173 meseci
Hm, nije mi bas najjasnije u cemu je problem. Ti deklarises novo privatno polje sa novim tipom podatka i to je ok. Ukoliko ti treba neki metod sa istim nazivom onda ga mozes zaobici.
 
Odgovor na temu

Rapaic Rajko
Bgd

Član broj: 4105
Poruke: 810
*.dynamic.sbb.rs.



+62 Profil

icon Re: Nasledjivanje klase08.02.2010. u 21:58 - pre 172 meseci
Hm, stvari ne stoje tako kako si ih postavio.

Prvo, Delphi-jev TStringList ne cuva podatke ni u kakvom array-u. Koristi se TList, koji sadrzi pointere na record-e, otprilke ovakve:

Code:

  TStringListItem = record
    Data: String;
    Object: TObject;
  end;
  PStringListItem = ^TStringListItem;


Mozda imena nisu bas tacna, ali sustina jeste. Ti sad mozes da iskoristis field Object, koji je prakticno pointer (velicine 4 bajta), da u njega upises tvoj boolean. Nesto ovako:

Code:

  var 
    MyStrList: TStringList;
    MyBool: boolean;
    ...
  MyStrList.Objects[i] := TObject(ord(MyBool));  // ovo je zapravo cast-ovanje integer-a u pointer/TObject  
  ...
  MyBool := boolean(integer(MyStrList.Objects[i])); // a ovo je obratno cast-ovanje


Svakako da se moze iskoristiti gornji kod da se, u nekoj nasledjenoj klasi, (recimo) doda property BoolValues[index]: boolean.
Medjutim, ja licno bih krenuo od nule, znaci pravio bih novu klasu, a svakako bih iskoristio standardnu klasu TList za FItems.

Pozz

Rajko
 
Odgovor na temu

reiser

Član broj: 7895
Poruke: 2314



+102 Profil

icon Re: Nasledjivanje klase08.02.2010. u 23:22 - pre 172 meseci
Ok hvala, resio sam problem tako sto sam napisao klasu od pocetka.
 
Odgovor na temu

[es] :: Pascal / Delphi / Kylix :: Nasledjivanje klase

[ Pregleda: 2560 | Odgovora: 3 ] > FB > Twit

Postavi temu Odgovori

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