Newsgroup: it.comp.lang.delphi
Titolo: [2] combobox

Scusate se ri-posto, ma non trovo il mio msg nel ng (non so se voi lo
vedete). Se mi avete risposto, per cortesia rifatelo, Grazie.
Nell'evento TForm1.FormShow ho inserito pure questo codice :
assignFile(fileTXT, 'c:\documenti\testotxt.txt');
reset(fileTXT);
tot := 0;
while not eof(fileTXT) do begin
readLn(fileTXT, line);
tot := tot+1;
       //         combobox3.AddItem(line; ...)
end;
closeFile(fileTXT);
label1.Caption := inttostr(tot);
Vorrei fare in modo di inserire i dati letti in combobox, ma l'istruzione
combobox3.AddItem(line; ...) e' incompleta e non sono riuscito a trovare un
esempio in nessun posto.
Sapete aiutarmi ?
C'e' un modo per fare in modo che nella visualizzazione del form, prima
compaiano tutti gli elementi (text, label, ecc) e poi mi esegua il codice
sopra riportato ?
Attualmente mi compare il form vuoto e dopo la lettura del file, mi
compaiono tutti gli elementi e quindi per un po' di secondi resta vuoto.
C'e' modo di sapere quante linee sono contenute nel file che ho letto cosi'
da poter utlizzare questo valore come limite MAX di una progressbar ?
Grazie nuovamente e scusatemi per l'inconveniente.

Se vuoi usare una progressbar, per l'avzanzamento puoi usare come max la
FileSize(file) che restituisce la dim di un  file aperto accettando come
parametro il suo handle assegnato da AssignFile, e, ad ogni iteazione,
aggiungere al valore della progressbar la length della stringa letta da
readln.
Inoltre, eviterei di invrementare Tot a ogni loop. Basterbbe usare, dopo il
caricamento di tutte le ricghe, questa:
label1.Caption := inttostr(combobox3.items.count);
Bye
A.
Ps: se non hai da fare altri casini, ricorda che gli items di una combo sono
raggruppati in una Tstrings che dovrebbe supportare il metodo LoadFromFile.

 readln.
Pero', cosi' succede che appena il form viene visualizzato, la progress bar
e' piena, poi quando finisce la lettura del file, si svuota e si riempie
immediatamente : mi spiego meglio : e' come se ci forrero due cicli separati
: il primo dura 10-12 secondi e legge il file (ci sono circa 80000 righe) e
in questo lasso di tempo la progressbar resta piena, poi in 1 secondo la
progress si svuota e si riempie eppure dal codice che invio di seguito
sembrerebbe che le due cose dovessero andare di pari passo:
                progressbar1.Min := 0;
                progressbar1.Max := FileSize(fileTXT);
                lung := 0;
                while not eof(fileTXT) do begin
                        readLn(fileTXT, line);
                        combobox3.Items.Add (line);
                        lung := lung + Length(line);
                        progressbar1.Position := lung;
                end;
Grazie.
P.S. ricordatevi sempre che ho inziato da poco e quindi giustificate le mie
domande magari troppo banali.
Grazie

 da poter utlizzare questo valore come limite MAX di una progressbar ?
No. La lettura di un file di testo e' sequenziale, non c'e' modo di sapere
quante linee di testo sono contenute se non prima leggendolo tutto.
--------------------------------
Inviato via 
http://usenet.libero.it

 FileSize(file)
Category
I/O routines
function FileSize(var F): Integer;
<...>
Note: FileSize can't be used on a text file.


 da poter utlizzare questo valore come limite MAX di una progressbar ?
Se il file e' strutturato (linee della stessa dimensione, oppure
numerate).
Per velocizzare un po' il caricamento puoi provare i metodi BeginUpdate
/ EndUpdate.
80 kLinee in una ComboBox?
Saluti
Paolo Arosio