Newsgroup: it.comp.lang.delphi
Titolo: Problema Liste

Uso delphi 2005
Ho un problema con liste, non capisco a cosa sia dovuto il problema.
Ho una listview compilata attraverso l'evento OnData, i dati sono presi da 
una TList di record.
La TList viene regolarmente creata in Create e liberata con destroy.
La cosa strana che accade č che sfogliando la listview e controllando 
l'occupazione della memoria con task manager, l'utilizzo della memoria 
cresce sempre senza mai tornare al minimo. Ho provato a scorrere dalla prima 
riccorrenza all'ultima, poi spostandosi singolarmente di una riga aumenta 
ancora la memoria.
Il problema č che ad un certo punto sui PC scarsi di memoria il programma 
comincia a impazzire visualizzando cose strane, questo comportamento l'ho 
legato all'aumento di memoria, infatti se mi "muovo" poco non si inchioda.
Qualcuno mi puň aiutare ??
Grazie
Ste

 una TList di record.
Posso chiederti perché non usi una dbGrid?
-- 
questo articolo e` stato inviato via web dal servizio gratuito 
http://www.newsland.it/news
 segnala gli abusi ad 
ab...@newsland.it


Non ho i dati in un data base, ma in un file di testo.
Il file di testo lo carico in una tlist di Record che poi visualizzo nella 
listview.
Spero di essere stato chiaro
Grazie ancora per la disponibilità
Ste

 listview.
Caricali in un ClientDataSet e gestisci il tutto con una DbGrid.


 Spero di essere stato chiaro
non potresti postare il codice che usi per popolare la lista?
-- 
Morde

 listview.
Anch'io facevo come te, poi ho iniziato a conoscere i ClientDataSet: 
sono perfetti per questo compito (e non solo per questo)...
Praticamente ti definisci un dataset in memoria, con la struttura che 
vuoi tu, e poi lo riempi, scorri, usi come se fosse un normale dataset 
(ovviamente puoi usare anche componenti db-aware).
Stavo cercando la guida che avevo trovato ed era perfetta per iniziare 
ma non riesco a ritrovarla... :(
-- 
Jax


eccolo leggo righe del file di testo fino a quando non trovo [FINE]
myRecord è un record di esempio che può essere fatto come si vuole
  AssignFile(f, 'esempio.ini');
  Reset(f);
  Readln (f, S);
  while S <> '[FINE]' do begin
      new (myRecord);
      lVoci.Add (myRecord);
      myRecord.Id := S1;
       ............
      Readln (f, S);
    end;
  lvMenu.Items.Count := lVoci.Count;
  lvMenu.Refresh;
  CloseFile(f);


Mi fate un esempio di utilizzo del ClientDataSet
Grazie 

Stefano ha scritto:

Piazza un componente TClientDataSet sulla form (meglio se in un 
DataModule), mettiamo che lo chiami cdsData.
Ci fai doppio click sopra e da qui definisci tutti i campi che ti 
servono, il nome, il tipo, la dimensione, ecc...
Per creare il database:
     cdsData.CreateDataset;
     cdsData.Open;
poi lo popoli usando le normali funzioni dei dataset
     cdsData.Append;
     cdsData.FieldByName('pippo').AsString := sStringa1;
ti muovi attraverso di esso sempre con le funzioni dei dataset
     cdsData.First;
     cdsData.Next;
     if cdsData.EOF ...
e ci agganci i soliti componenti db-aware (per es. una DBGrid) tramite 
il solito DataSource.
-- 
Jax


Grazie, ma mi sto rendendo conto che il componente TClientDataSet  fa parte 
dei MIDAS che non ho !.

 dei MIDAS che non ho !.
Scusami, davo per scontato che in D2005 ci fosse, visto che in D7 (che 
uso io) c'è...
-- 
Jax

 io) c'č...
In D2005 Professional c'e'... Giorgio 

 In D2005 Professional c'e'... Giorgio
Scusate, mi corrego uso Delphi 5 !!!
Quindi nessuno mi riesce da una spiegazione dello strano comportamento ? 

 Quindi nessuno mi riesce da una spiegazione dello strano comportamento ? 
Non è che sia "strano", se in D5 non c'è quel componente (e io 
francamente non mi ricordo) c'è ben poco da fare.
Ma che versione hai? Professional, Enterprise...
-- 
Jax


Professional.
Mi sembra strano il comportamento con le liste . 

 
Puoi usare il componente TjvMemoryTable della JVcl o qualunque 
componente MemoryTable che trovi in giro per la rete.
Per quello che devi fare è sovrapponibile al CDS.
Ciao.

 Ma che versione hai? Professional, Enterprise...
Nella versione Enterprise c'era.
