Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Username: Password: oppure
Visual Basic 6 - Domanda su funzione random in VBA
Forum - Visual Basic 6 - Domanda su funzione random in VBA

Avatar
Gilean (Normal User)
Rookie


Messaggi: 54
Iscritto: 18/05/2008

Segnala al moderatore
Postato alle 11:51
Domenica, 18/05/2008
Salve a tutti. Ho creato un piccolo programma in excel e vbs che chiede un codice per poter essere sbloccato, a partire da 5 codici iniziali. il problema e' che se si chiude la finestra e la riapro, le varabili da Codice1 a Codice 5 sono sempre le stesse (ed uso il random). sapreste aiutarmi? ecco il codice

Codice sorgente - presumibilmente Delphi

  1. Sub Workbook_Open()
  2.         'Const CellaRegistrazione As Integer = 1
  3.        'password di sicurezza
  4.         Const PassWordSecurity As String = "homerjsi"
  5.         'Stringa da trovare nel file di check per risultare registrato
  6.        Const StringaVerifica As String = "rec_ok"
  7.        Dim Paths As String
  8.        ' percorso e nome del file di check
  9.         Paths = "C:\Windows\System32\pac.txt"
  10.         FileExists = EsisteFile(Paths)
  11.         'vediamo se il file esiste
  12.        If (FileExists = True) Then
  13.            'Apriamo il nostro file spia
  14.             Open Paths For Input As #1
  15.             Input #1, Registrato
  16.             Close #1
  17.             If (Registrato = StringaVerifica) Then
  18.                 Exit Sub
  19.             Else
  20. VarInput:
  21.                 ' Generate random value between 1 and 6.
  22.                 Dim LB As Integer
  23.  
  24.                Dim UB As Integer
  25.  
  26.                LB = 1
  27.  
  28.                UB = 50
  29.                Randomize (Rnd())
  30.                Dim Codice1 As Integer
  31.                Dim Codice2 As Integer
  32.                Dim Codice3 As Integer
  33.                Dim Codice4 As Integer
  34.                Dim Codice5 As Integer
  35.                Codice1 = CInt(Rnd() * UB) + 1
  36.  
  37.                Codice2 = CInt(Rnd() * UB) + 1
  38.  
  39.                Codice3 = CInt(Rnd() * UB) + 1
  40.  
  41.                Codice4 = CInt(Rnd() * UB) + 1
  42.  
  43.                Codice5 = CInt(Rnd() * UB) + 1
  44.                VariabileInput = InputBox("Codice di assistenza=" & Codice1 & "-" & Codice2 & "-" & Codice3 & "-" & Codice4 & "-" & Codice5 & "." & Space(20) & "Inserire codice di convalida.")
  45.                Risultato1 = Abs(2 * Codice1 - Codice2 + 5 * (Codice3 * Codice4) - 4 * Codice5)
  46.                Risultato2 = Abs(Codice2 + Codice1 + Codice3 - 2 * (Codice4 * 5 - 7 * Codice5) * 3)
  47.                Risultato3 = Abs(Codice3 - Codice4 * Codice5 + 6 * (Codice1 + 1))
  48.                Risultato4 = Abs(Codice4 + Codice5 - Codice1 + 2 * (Codice3 - Codice2))
  49.                Risultato5 = Abs(Codice5 + Codice2 + 2 * Codice3 - 4 * Codice5)
  50.                If (VariabileInput = (Risultato1 & "-" & Risultato2 & "-" & Risultato3 & "-" & Risultato4 & "-" & Risultato5) Or VariabileInput = PassWordSecurity) Then
  51.                    MsgBox ("Il programma e' stato correttamente registrato, grazie")
  52.                     ok = StringaVerifica
  53.                     'apriamo il file spia
  54.                    Open Paths For Output As #1
  55.                    'marchiamo il file di testo come registrato
  56.                     Print #1, ok
  57.                     Close #1
  58.                     Exit Sub
  59.                 Else
  60.                     MsgBox ("Spiacente il codice e' errato, siete pregati di inserire il codice corretto, grazie")
  61.                    Codice1 = CInt(Rnd() * UB) + 1
  62.  
  63.                    Codice2 = CInt(Rnd() * UB) + 1
  64.  
  65.                    Codice3 = CInt(Rnd() * UB) + 1
  66.    
  67.                    Codice4 = CInt(Rnd() * UB) + 1
  68.    
  69.                    Codice5 = CInt(Rnd() * UB) + 1
  70.                    ActiveWindow.Close
  71.                End If
  72.            End If
  73.        Else
  74.            Open Paths For Output As #1
  75.            Print #1, asd
  76.            Close #1
  77.            GoTo VarInput
  78.        End If
  79.    End Sub
  80.    
  81. Function EsisteFile(NomeFile As String) As Boolean
  82. On Error Resume Next
  83. EsisteFile = (GetAttr(NomeFile) And vbDirectory) = 0
  84. End Function


Ultima modifica effettuata da Gilean il 18/05/2008 alle 11:52
PM Quote
Avatar
gantonio (Normal User)
Guru^2


Messaggi: 1532
Iscritto: 09/09/2007

Segnala al moderatore
Postato alle 18:46
Domenica, 18/05/2008
Non scrivere

Randomize (Rnd())

ma

Randomize Timer

PM Quote