Newsgroup: it.comp.lang.delphi
Titolo: Gestione memoria

Qualcuno mi saprebbe indiricare dove torvare informazioni sulla modalità di
gestione della memoria utilizzata da Delphi 6/Kylix 2 visto che ho un bel po
di problemi utilizzando i tipi di dato TList di classi?
Grazie mille!

 di problemi utilizzando i tipi di dato TList di classi?
non x fare l'avvocato del diavolo, ma non potrebbe essere che il problema
sia sil tuo codice e non il modo di gestione della memoria?
xche non posti una breve info dei problemi che hai riscontrato?
Bye
A-

Creo un vettore privato in una unit di una form1.
Questo vettore conterrà oggetti(TList <--- classe)
-Mediante un bottone avvio la maschera2..
-mi carico l'oggetto della maschera2..
-nascondo la maschera2..
-carico l'oggetto della maschera2 nel vettore della maschera1..
-carico la listview nella maschera1 con i dati del vettore
-distruggo la maschera2..
la seconda volta che esegue il ciclo il vettore non riconosce più il primo
record caricato. Leggendo il primo elemento mi dice valore inaccessibile.
Come mai?
Le ho provate di tutte...:
 - non ho distrutto la seconda maschera
 - ho provato a aggiungere il primo oggetto creandolo nella prima unit e non
riportandolo dalla seconda maschera
...
mi sapete aiutare?

Mi sono un po perso...
Facciamo che spieghi cosa devi realizzare?
A.

Devo caricarmi un vettore di classe attraverso una semplice funzione. Ogni
volta che aggiungo un record devo riportare l'intero contenuto del vettore
su una listview.
Mi è sembrato molto chiaro come te l'ho spiegato!
Allora i passi che faccio sono:
-creo la classe (classe:= tipoclasse.create);
-valorizzo le proprietà della classe(classe.proprieta1:= valore);
-aggiungo la classe nel vettore(vettore.add(classe));
-cancello il contenuto della listview;
-scarico il vettore nella listview;
cosa succede?
Succede che una volta che esco dalla procedura contenente queste istruzioni,
non riesco più a leggere l'elemento aggiunto.
Praticamente se aggiungo un nuovo elemento in coda al vettore, il record
leggibile sarà l'ultimo. I precedenti non vengono interpretati in modo
corretto. Mi restituisce un errore di memoria!
Spero che qualcuno mi possa aiutare.
"Alberto Salvati" <x@x.x from office> ha scritto nel messaggio
news:akvf0u$12m7$1...@newsreader1.mclink.it...


 non riesco più a leggere l'elemento aggiunto.
Come aggiungi e come leggi?
Inoltre, a cosa serve questa dualita'.
Gli elementi di una listview hanno una prorprietà di tipo pointer alla quale
puoi associare cio che vuoi.
Bye e complimenti x la chiarezza.
A.

 Quindi, quello è un vettore di classe, giusto?
ROTFL!!!!!!!!!
Sei unico :)))
--
Jax

 puoi associare cio che vuoi.
Come è possibile fare nel mio caso. Non ho mai utilizzato ciò che mi
consigli.

 Sei unico :)))
Si!
Infatti i miei, visto il risultato del primo, hanno adottato drastici metodi
anticoncezionali... ;-))
BaiBai
A.

 anticoncezionali... ;-))
Ri-ROTFL! (e qui mi fermo altrimenti esagero :))
--
Jax

 Ri-ROTFL! (e qui mi fermo altrimenti esagero :))
ahahahahahah!
Bye
A.

 Io sempre utilizzato questa procedura. E' un mio standard.
Prendetela sul ridere, ve ne prego, ma mi fa venire troppo in mente il corso
"illuminante":
http://www.soft-land.org/documenti/pessimo.html
(che tra l'altro č una bibbia per me...eheh)
Matteo

 wrote in message
news:akvp8e$1lobae$1...@ID-134361.news.dfncis.de...


Non mi sembra un bell'aiuto il tuo post.
Se non capisci perchč la spiegazione č poco chiara chiedi ancora, e ancora e
ancora di esporre meglio il concetto.
Perň sempre in maniera educata, se ti stanchi e credi che sia una perdita di
tempo lascia stare. I tuoi commenti su "vettori di classe" ecc... mi sono
sembrati assolutamente fuori luogo (anche se divertenti per Jax, credo meno
per nek2000).
A proposito di correttezza, ti avrei scritto in privato perň la tua e-mail
mi sembra "abbastanza" falsa (visto che probabilmente scrivi dall'ufficio).
Cigno

mi sembra "abbastanza" falsa (visto che probabilmente scrivi dall'ufficio).
Essendo stato + volte oggetto di spam galattici, non pubblico + la mia email
sul ng ma la passo a richiesta.
Bye
A.

> > non riesco più a leggere l'elemento aggiunto.
Si, ma classe cambia a ogni loop...
E' come se creassi n oggetti ma usassi un solo handle.
Non dovresti passare per la var classe.
Con una TList potresti scrivere:
MiaLista.Add( TQualcheClasse.Create );
Bye
A.

 sul ng ma la passo a richiesta.
Non ti devi giustificare
Saluti salati ... anzi, Saluti Salviati
Cigno74


 e quindi cos'è che non va tra queste operazioni:
-creo la classe nella maschera principale(maschera1.classe:=
tipoclasse.create);
-valorizzo le proprietà della classe nella maschera
principale(maschera1.classe.proprieta1:= maschera2.copiaclasse1.proprieta1);
-aggiungo la classe valorizzara nel vettore presente naturalmente nella
maschera1(maschera1.vettore.add(classe));
-distruggo la maschera2;
-cancello il contenuto della listview;
-scarico il vettore nella listview;
Grazie per la vostra collaborazione.