Autore Topic: Inserire un testo random da una lista  (Letto 1012 volte)

Offline cellman

  • Gamberetto
  • *
  • Post: 14
    • Mostra profilo
Inserire un testo random da una lista
« il: 21 Dicembre 2013, 15:51:13 »
Ciao a tutti,
come da titolo, devo inserire in una variabile string un testo. Ho in una cartella vari file txt. Vorrei trovare il modo di inserire volta per volta un diverso testo random nella stringa.
Qualche idea?
Come sempre, grazie mille a tutti ;-)

Offline vuott

  • Moderatore globale
  • Senatore Gambero
  • *****
  • Post: 11.720
  • Ne mors quidem nos iunget
    • Mostra profilo
Re: Inserire un testo random da una lista
« Risposta #1 il: 22 Dicembre 2013, 01:11:21 »
Qualche idea?


Potresti inserire in una variabile vettoriale di tipo Stringa i percorsi con i nomi dei vari file, e poi far individuare di volta in volta un indice di quel vettore (e quindi un file txt specifico) dalla funzione Rnd().


Insomma una cosa come nell'esempio che segue. Ogni volta che si clicca sul Button viene effettuata una scelta casuale:
Codice: gambas [Seleziona]

Private ss As New String[]
Private percorsoCartella As String


Public Sub Form_Open()

  Dim s As String 

 
    percorsoCartella = "/percorso/della/cartella/contenente/i/file/txt"
   
' Di ogni nome di un file presente nella cartella...
    For Each s In Dir(percorsoCartella, "*.txt", gb.File)
'...è effettuato l'inserimento insieme con il suo intero percorso in un elemento del vettore "ss":
      ss.Add(percorsoCartella &/ s)
    Next 

End


Public Sub Button1_Click()

  Dim scelta As Short
  Dim testo As String


' Se nel vettore "ss" vi sono ancora elementi, e cioè
' un nome di un file con il suo intero percorso...
   If ss.Count > 0 Then
'...allora si procede all'individuazione casuale di un numero
' compreso tra zero ed il numero corrispondente al numero
' di elementi "attualmente" presenti nel vettore "ss":
     scelta = CShort(Rnd(0, ss.Count))
' Quindi si carica il testo del file presente nell'elemento di indice del vettore "ss"
' precedentemente individuato con la funzione Rnd().
' Si procede quindi ad eliminare quello stesso elemento con tutto il suo contenuto dal vettore:
     testo = File.Load(ss.Extract(scelta, 1)[0])
     Print testo
   Else
' Se al vettore sono stati eliminati tutti gli elementi, allora viene sollevato un avviso:
     Message.Warning("<FONT color=#B22222><B>E' stato inserito il testo di ciascun file .txt presente nella cartella: " & percorsoCartella)
   Endif

End
« Chiunque, non ricorrendo lo stato di necessità, nel proprio progetto Gambas fa uso delle istruzioni Shell o Exec, è punito con la sanzione pecuniaria da euro 20,00 a euro 60,00. »