[ Ilija Studen @ 24.06.2003. 01:41 ] @
Naisao sam na manji problem... Naime, potrebna mi je struktura koja ce cuvati podatke o prikljucenim bibliotekama. Ovako:

Lista stranica
-- property PageName
-- property Libs

Lista Libs
-- property LibName
-- property LibPath
-- property ImgPath
-- itd

Srpski receno, stavka liste kao svojstvo sadrzi drugi listu. Uradio sam klasu koristeci kolekcije. Objekat se uredno kreira i oslobadja, ali pri pokusaju insertovanja javi AccessViolation. Nazalost, taj kod vise nemam posto sam se razbesne i obrisao ga =[

Kako ovo da resim? Ako imate neki SRC postujte...
[ CandyMan @ 24.06.2003. 15:39 ] @
Rad sa kolekcijama bih voleo da vidim - informativno. Hvala!
[ Rapaic Rajko @ 25.06.2003. 18:05 ] @
Nije trebalo da brises kod; da si ga sacuvao, trazio bih ti samo da vidim deklaracije klasa i implementacije konstruktora. Nije to nesto tesko za pisanje, mada ima posla.
Primer source-a? Pa VCL je pun klasa izvedenih od TCollection-a i TCollectionItem-a. Odatle svako moze da nauci kako se to radi.
Pravi izazov je pisanje POLIMORFNOG kontejnera (TCollection to nije). Ali da se do toga dodje, mora se poznavati "u prste" klasa TList.
Ajde kreni ispocetka, pa gde zapnes, vici.
Pozdrav

Rajko
[ mipko @ 27.06.2003. 17:27 ] @
Sta podrazumevas pod polimorfnim kontejnerom ?
[ Rapaic Rajko @ 30.06.2003. 10:43 ] @
Elem...TCollection je kontejner klasa napravljena tako da u svojoj listi sadrzi instance jedne te iste klase (recimo klase A); ne postoji nacin da dodas bilo sta drugo u tu listu.
Polimorfnoi kontejner bi trebalo da omoguci dodavanje klase A1, A2, A3, gde su, recimo, A1 i A2 izvedene od A, A3 izvedena od A1 itd. itd. Drugim recima, svi itemi (instance objekata) u polimorfnom kontejneru su naslednici (descendenti) neke osnovne klase A.
E sad, kako se pristupa tom sarenilu od objekata? Kao i u TCollection-u: preko array propertija Items[] tipa klase A.
Kako fukcionise raznolikost tih objekata? Tako sto klasa A ima u sebi dosta virtuelnih metoda, koje njeni descendenti override-uju. Pa sad banalan primer: recimo da u petlji pozivas ovako nesto

for i := 0 to MyContainer.Count-1 do
MyContainer.Items.Go;

Neka je metoda A.Go virtuelna; svaki descendant je override-uje (napravi svoju verziju iste). Dobijes to, da ce recimo Items[0] koji je klase A1 da "hoda", Items[1] koji je A2 ce da "leti", A3 ce recimo da "pliva" itd.
Da li sam ti predocio moc OOP-a i makar malo priblizio pojam polimorfnog kontejnera?
Poz

Rajko
[ Ilija Studen @ 30.06.2003. 15:31 ] @
Posto cele nedelje nisam bio kuci nisam mogao da uradim nista. Juce sam dosao i napravio to sto mi treba... Nije zasnovano na onom principu koji sam ranije koristio. Sada se koristi jedna kolekcija koja cuva podatke o modulu i klasa TPage koja cuva kolekciju i naziv stranica. Objekti klase TPage se dodaju listi klase TObjectList uz adekvatne konverzije pri upisivanju i citanju... Greske sigurno postoje posto je kod napisan za manje od sat vremena (ono sto meni treba radi ko sat).

Ovom prilikom saljem source posto sam video da ima interesovanja za njim... Takodje, iskusniji programeri nek pogledaju kod i nek mi kazu gde gresim i kako bi se postojeca klasa/e mogla/e unaprediti...