ciao gente,
mi dite come si fa a prelevare casualmente una stringa da una lista di stringhe in un file di testo?
esempio:
file.txt
CIAO
Pippo
Lupo
Cane
Gatto
Topo
Cavallo
grazie
ciao gente,
mi dite come si fa a prelevare casualmente una stringa da una lista di stringhe in un file di testo?
esempio:
file.txt
CIAO
Pippo
Lupo
Cane
Gatto
Topo
Cavallo
grazie
a dir la verita saprei farlo in c dato che e' lunico linguaggio che conosco :-(
cmq ti dico cosa dovresti fare... dovresti calcolare il numero di righe nel file di testo (che corrisponde al numero di '\n'+1) e quindi fare un comando che in C e la random che ti permetta di scegliere un numero a caso tra 0 e il numero di righe... cmq penso che questo lo sapessi gia...
Si chiama random anche in delphi.
Devi passargli un valore(n) di tipo intero,dopodichè ti restituirà un valore compreso tra 0 e n-1
Usa la classe TStringList per gestire la lista di stringhe.
Tale classe supporta il metodo LoadFromFile che permette di caricare una lista di stringhe separate da ritorni a capo da un file di testo specificando come parametro il percorso.
Una volta caricate le stringhe, la proprietà Count ti restituirà il numero totale di stringhe.
Questo numero (decrementato di 1) rappresenterà il valore massimo per la generazione del numero casuale, mentre il minimo sarà 0 (zero).
Ti è già stato indicato in un thread passato come generare numeri casuali.
Dopo aver generato il numero, accedi alla i-esima stringa e con essa fai quel che vuoi.
Uno scheletro di esempio per creare e usare la classe...
Questo codice crea un'istanza di TStringList, carica un file di testo da disco, genera un indice casuale da 0 al numero di stringhe (-1) e usa tale indice per prelevare una stringa dall'elenco e visualizzarla in una casella di messaggio. Anche in caso di errori, grazie al costrutto try...finally, la memoria occupata dalla StringList viene comunque liberata tramite il metodo Free, preservando le risorse di sistema.codice:procedure TForm1.Button1Click(Sender: TObject); var SL: TStringList; n: Integer; begin SL := TStringList.Create; try SL.LoadFromFile('C:\Stringhe.txt'); Randomize; n := RandomRange(0, SL.Count - 1); ShowMessage(SL[n]); finally SL.Free; end; end;
Ulteriori informazioni sulle funzioni e le classi utilizzate le trovi sulla Guida.
Ciao!
MARCO BREVEGLIERI
Software and Web Developer, Teacher and Consultant
Home | Blog | Delphi Podcast | Twitch | Altro...
grazie la possibiltà di usare una TString lIt mi era nota dall'esperiwnza autodidatta:
avevo già fatto una cosa del genere.
michiedevo solo se ci fosse nn'opportunità di gestire diretamente un file invecee che un componente.
ma va bene lo stesso.
grazie.
Non si tratta di un componente, bensì di una classe.Originariamente inviato da Lyll0
michiedevo solo se ci fosse nn'opportunità di gestire diretamente un file invecee che un componente.
Cosa intendi per gestire direttamente un file??
E' possibile usare anche funzioni di apertura di un file, lettura di una linea, accesso sequenziale e casuale, ma si tratta di procedure e funzioni ereditate dal vecchio Pascal che sono, a mio avviso, meno eleganti ed intuitive rispetto all'uso della TStringList, soprattutto per le esigenze che hai scritto nel messaggio precedente.
MARCO BREVEGLIERI
Software and Web Developer, Teacher and Consultant
Home | Blog | Delphi Podcast | Twitch | Altro...
si infatti.
grazie.