Newsgroup: it.comp.lang.visual-basic
Titolo: Occhiatina al codice

Salve, vi posto questo codice perchè mi lascia perplesso:
Private Sub cmd_crea_Click()
  For i = 0 To 2
    a = i - 1
    If i > 0 Then
      Do Until nominativo(i) = nominativo(a)
        valore = Int((3 * Rnd) + 1)
        If valore = 1 Then nominativo(i).Caption = "Io"
        If valore = 2 Then nominativo(i).Caption = "Gigi"
        If valore = 3 Then nominativo(i).Caption = "La Cremeria"
      Loop
    End If
    valore = Int((3 * Rnd) + 1)
    If valore = 1 Then nominativo(i).Caption = "Io"
    If valore = 2 Then nominativo(i).Caption = "Gigi"
    If valore = 3 Then nominativo(i).Caption = "La Cremeria"
  Next i
End Sub
Il codice dovrebbe visualizzare in 3 label dei nomi che in questo caso sono
io, gigi e la cremeria (lasciate perdere la fantasia:-). Fino a qui c'ero
riuscito. Poi però vorrei anche che uguali nomi venmgano visualizzati in
modo consecutivo, cioè, non posso avere un sequenza tipo gigi, gigi, io.
Cioè, non può mettere i due gigi attaccati. Ho tentato di farlo con il do,
ma non sembra fungere. Non da alcun errore nella compilazione, ma non fa
quello che dovrebbe.
Spero che qualcuno passa darmi una soluzione.
Grazie a tutti.
Ramses

Spero che qualcuno passa darmi una soluzione.
Comincia col dichiarare le variabili, poi ne riparliamo :)
ciao, hal

Consiglio di togliere tutti gli IF e di mettere un bel Select Case:
Private Sub cmd_crea_Click()
  For i = 0 To 2
    a = i - 1
    If i > 0 Then
      Do Until nominativo(i) = nominativo(a)
        valore = Int((3 * Rnd) + 1)
        Select Case valore
        Case 1: nominativo(i).Caption = "Io"
        Case 2: Then nominativo(i).Caption = "Gigi"
        Case 3: Then nominativo(i).Caption = "La Cremeria"
        End Select
      Loop
    End If
    valore = Int((3 * Rnd) + 1)
        Select Case valore
        Case 1: nominativo(i).Caption = "Io"
        Case 2: Then nominativo(i).Caption = "Gigi"
        Case 3: Then nominativo(i).Caption = "La Cremeria"
        End Select
  Next i
End Sub
Questo non risolve il tuo problema, ma secondo me è sempre meglio usare i
select case al posto di tanti if...
Ciao,
Timothy
timothy....@email.it

 wrote in message
news:9c4tgb$bo1mr$1...@ID-56381.news.dfncis.de...


 select case al posto di tanti if...
Grazie.
Ramses

Scusate, sono riuscito ora. Tanto per informazione, magari a qualcuno
interessa questo è il sorgente esatto:
Private Sub cmd_crea_Click()
  valore = Int((3 * Rnd) + 1)
    Select Case valore
      Case 1:
        nominativo(0).Caption = "Io"
      Case 2:
        nominativo(0).Caption = "Gigi"
      Case 3:
        nominativo(0).Caption = "La Cremeria"
    End Select
  For i = 0 To 5
    a = i - 1
    If i > 0 Then
      Do
        valore = Int((3 * Rnd) + 1)
        Select Case valore
          Case 1:
            nominativo(i).Caption = "Io"
          Case 2:
            nominativo(i).Caption = "Gigi"
          Case 3:
            nominativo(i).Caption = "La Cremeria"
        End Select
      Loop Until nominativo(i) <> nominativo(a)
    End If
  Next i
End Sub
Con le varie dichiarazioni.
Grazie cmq per tutte le risposte.
Ramses


 Prova cosě   ciao
Option Explicit
Dim i As Integer
Dim valore As Integer
Dim a As Integer
Private Sub cmd_crea_Click()
Dim ValoriIndici(2) As Byte
    For i = 0 To 2
    a = i - 1
    If i > 0 Then
      Do
        valore = Int((3 * Rnd) + 1)
         ValoriIndici(i - 1) = valore
        If valore = 1 Then nominativo(i).Caption = "Io"
        If valore = 2 Then nominativo(i).Caption = "Gigi"
        If valore = 3 Then nominativo(i).Caption = "La Cremeria"
      Loop Until nominativo(i) <> nominativo(a)
    End If
  Next i
    Select Case ValoriIndici(0) + ValoriIndici(1)
     Case 3
      nominativo(0) = "La Cremeria"
     Case 4
     nominativo(0) = "Gigi"
     Case 5
     nominativo(0) = "Io"
    End Select
End Sub