[ mikap @ 29.08.2002. 02:47 ] @

Posto veoma brzo odgovarate imam jedan problem i ne znam kako da ga resim
treba da izbrisem vise itema u listboxu ali kada se obrise jedan poremeti se raspored i dolazi do access violationa kako to da izvedem a da ne dodje do access violation ?
[ broker @ 29.08.2002. 17:05 ] @
Najverovatnije je access violation zato sto obrises prvi slog, pa onda drugi postaje prvi a ti to nisi korigovao u svojoj petlji za brisanje.

Resenje: brisi unazad: od poslednjeg elementa ka prvom. Tada se redosled slogova u listi nece menjati.
[ Ilija Studen @ 29.08.2002. 22:07 ] @
Izvinjavam se... Nisam video brokerov post.
[ Rapaic Rajko @ 29.08.2002. 23:38 ] @
Ako imas vise nasumicnih Item-a (imas njihove reference/pointere), znaci ne dolazi u obzir brisanje po indeksima jer nisu poredjani uzastopno, onda svakom Item-u pozovi metodu Free. Svaki Item u svom destruktoru sam sebe obrise iz liste svog Owner-a.

Rajko

P.S. Sve u Delphi-ju radi tako: razni Item-i, CollectionItem-i, Componenti...
[ mikap @ 30.08.2002. 13:27 ] @
Hvala puno !!! toga se nisam setio
[ -zombie- @ 30.08.2002. 23:55 ] @
Citat:
Rapaic Rajko:
Ako imas vise nasumicnih Item-a (imas njihove reference/pointere), znaci ne dolazi u obzir brisanje po indeksima jer nisu poredjani uzastopno, onda svakom Item-u pozovi metodu Free. Svaki Item u svom destruktoru sam sebe obrise iz liste svog Owner-a.


pa mislim da nije neophodan ovakav pristup kod prostijih problema, jer onda dete mora da ima referencu na svog roditelja, sto se uglavnom moze izbeci kod prostijih problema.

mislim da je sasvim dovoljno da se obrati paznja na indexe, tj, ako se brise po indexima, da se brise unazad, a ako se brise po referencama (pointerima) da se pre svakog brisanja nadje index objekta koji treba da se obrise, da se on free-uje, pa da se obrise...
[ Rapaic Rajko @ 01.09.2002. 01:39 ] @
Uf! Ljudi, dugo nisam petljao sa Delphi-jem, i zato: izvinjavam se zbog pogresne informacije u mom prethodnom postu. Itemi od TListBox-a NEMAJU destruktore, jer su to prosti stringovi (nisu instance neke klase). Jos jednom se izvinjavam.

Rajko
[ -zombie- @ 01.09.2002. 08:17 ] @
ma nema sta da se izvinjavash... bio si poprilicno u pravu...

ali se ipak BASH vidi da se "odavno nisi petljao sa delphijem" jer tListBox Itemi MOGU da imaju destructore, zato sto MOGU da budu objekti ako se pozivom metoda tListBox.AddItem("string", Obj) dodaju sa objektom...

ali i dalje mi se cini da to njemu ne treba...