Ładny brzuch
Mam problem: w programie mam liste (ListaOkien - TList) i dodaje do niej okna:
fOkno := TfOkno.Create(Application); ListaOkien.Add(fOkno);
Problem pojawia sie przy zwalnianiu pamieci gdy okna nie sa juz potrzebne.
Probowalem:
for i := 0 to ListaOkien.Count - 1 do TfOkno(ListaOkien[i]).Free; i wyskakuje blad.
To wzialem to tak: do procedury OnClose okna fOkno wpisalem:
Close; Free; ale tez mam bledy. Czy ktos moglby mi napisac jak to zrobic w inny sposob (zeby dzialalo)?
1. nie TList tylko TObjectList z unitu contnrs
2. nie TfOkno.Create(Application); tylko TfOkno.Create(nil); bo inaczej przy zamykaniu aplikacji bdzie ona chciaa zwolni okno raz jeszcze
3. przy TObjectList wystarczy ListaOkien.Clear; dla wszystkich okien albo ListaOkien.Delete(i) dla konkretnego.
BTW jakie bdy?
BTW jakie bdy?
na przyklad taki:
Access violation at address 00000000. Read of address 00000000
ale juz wszystko dziala. dzieki
zanotowane.pl doc.pisz.pl pdf.pisz.pl zsf.htw.pl
fOkno := TfOkno.Create(Application); ListaOkien.Add(fOkno);
Problem pojawia sie przy zwalnianiu pamieci gdy okna nie sa juz potrzebne.
Probowalem:
for i := 0 to ListaOkien.Count - 1 do TfOkno(ListaOkien[i]).Free; i wyskakuje blad.
To wzialem to tak: do procedury OnClose okna fOkno wpisalem:
Close; Free; ale tez mam bledy. Czy ktos moglby mi napisac jak to zrobic w inny sposob (zeby dzialalo)?
1. nie TList tylko TObjectList z unitu contnrs
2. nie TfOkno.Create(Application); tylko TfOkno.Create(nil); bo inaczej przy zamykaniu aplikacji bdzie ona chciaa zwolni okno raz jeszcze
3. przy TObjectList wystarczy ListaOkien.Clear; dla wszystkich okien albo ListaOkien.Delete(i) dla konkretnego.
BTW jakie bdy?
BTW jakie bdy?
na przyklad taki:
Access violation at address 00000000. Read of address 00000000
ale juz wszystko dziala. dzieki