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 - casualita' non casuale
Forum - Visual Basic 6 - casualita' non casuale

Pagine: [ 1 2 ] Precedente | Prossimo
Avatar
()
Newbie


Messaggi:
Iscritto:

Segnala al moderatore
Postato alle 1:00
Giovedì, 01/01/1970
scusate il gioco di parole.......nel programma di p2p che sto' facendo creo una password per la cifratura.....la password la creo facendo un ciclo for tra le lettere dell'alfabeto ed i 10 numeri del sistema decimale.....ovvialmnte vengono presi i simboli in maniera randomica.....

il codice che uso e' questo messo all'interno di un timer.....

  
Codice sorgente - presumibilmente VB.NET

  1. dim numerilettere as string
  2. dim splitnumerilettere() as string
  3. dim psw as string
  4.  
  5. numerilettere = "a,b,c,d,e,f,g,h,i,l,m,n,o,p,q,r,s,t,u,v,z,0,1,2,3,4,5,6,7,8,9"
  6. splitnumerilettere = Split(numerilettere, ",")
  7.  
  8. If psw = "" Then
  9.    For i = 1 To 5
  10.        psw = psw & splitnumerilettere(Int(UBound(splitnumerilettere) * Rnd))
  11.    Next i
  12. End If



il problema curioso e' che mi genera sempre la stessa password
e la stessa cosa mi succede creando dei nickname, mi genera sempre la stessa combinazione di lettere e numeri......
non riesco a capire

PM Quote
Avatar
Xaratroom (Ex-Member)
Expert


Messaggi: 526
Iscritto: 03/04/2008

Segnala al moderatore
Postato alle 16:49
Sabato, 16/05/2009
Devi usare randomize.
Codice sorgente - presumibilmente VB.NET

  1. dim numerilettere as string
  2. dim splitnumerilettere() as string
  3. dim psw as string
  4.  
  5. numerilettere = "a,b,c,d,e,f,g,h,i,l,m,n,o,p,q,r,s,t,u,v,z,0,1,2,3,4,5,6,7,8,9"
  6. splitnumerilettere = Split(numerilettere, ",")
  7.  
  8. Randomize()
  9.  
  10. If psw = "" Then
  11.    For i = 1 To 5
  12.        psw = psw & splitnumerilettere(Int(UBound(splitnumerilettere) * Rnd))
  13.    Next i
  14. End If


PM Quote
Avatar
Louis (Normal User)
Pro


Messaggi: 150
Iscritto: 22/04/2008

Segnala al moderatore
Postato alle 16:52
Sabato, 16/05/2009
Ho provato il tuo codice, senza timer, e funziona egregiamente:
Codice sorgente - presumibilmente VB.NET

  1. Private Sub Command1_Click()
  2.    
  3.     Dim numerilettere As String
  4.     Dim splitnumerilettere() As String
  5.     Dim psw As String
  6.     Dim i
  7.    
  8.     numerilettere = "a,b,c,d,e,f,g,h,i,l,m,n,o,p,q,r,s,t,u,v,z,0,1,2,3,4,5,6,7,8,9"
  9.     splitnumerilettere = Split(numerilettere, ",")
  10.    
  11.     If psw = "" Then
  12.        For i = 1 To 5
  13.            psw = psw & splitnumerilettere(Int(UBound(splitnumerilettere) * Rnd))
  14.        Next i
  15.     End If
  16.     Text1.Text = psw
  17.  
  18. End Sub



Restituisce sempre 5 lettere/numeri differenti; è evidente che nella tua realtà progettuale dopo il primo ciclo c'é qualcosa che non va; controlla. Ciao.

PM Quote
Avatar
GrG (Member)
Guru^2


Messaggi: 3430
Iscritto: 21/08/2007

Segnala al moderatore
Postato alle 16:56
Sabato, 16/05/2009
Testo quotato

Postato originariamente da Xaratroom:
Devi usare randomize.



Quoto, se ancora hai problemi facci sapere

PM Quote
Avatar
()
Newbie


Messaggi:
Iscritto:

Segnala al moderatore
Postato alle 17:09
Sabato, 16/05/2009
e' prorpio questo i punto....anchio se lo provo separatamente mi funziona.....se io creo un nuovo progetto solo con questo codice mi da passwrd diverse ogni volta.....pero' all'interno del progetto mi da' questa anomalia.......

forse e' arrivato il momento di postare l'intero progetto ormai pronto per una prima alpha che ne dite?


PM Quote
Avatar
Xaratroom (Ex-Member)
Expert


Messaggi: 526
Iscritto: 03/04/2008

Segnala al moderatore
Postato alle 17:12
Sabato, 16/05/2009
Ma hai provato a usare la funzione randomize ?

Ultima modifica effettuata da Xaratroom il 16/05/2009 alle 17:13
PM Quote
Avatar
()
Newbie


Messaggi:
Iscritto:

Segnala al moderatore
Postato alle 17:35
Sabato, 16/05/2009
si usando randomize funziona , ma non riesco a capire il perche'......
grazie mille dell'aiuto.....

PM Quote
Avatar
theprogrammer (Normal User)
Guru^2


Messaggi: 2509
Iscritto: 28/01/2009

Segnala al moderatore
Postato alle 17:36
Sabato, 16/05/2009
Testo quotato

Postato originariamente da Louis:

Ho provato il tuo codice, senza timer, e funziona egregiamente:



No Louis ... non va ...

Deve essere usata la

Randomize

come gia' detto perche' la sequenza cambi.

Non e' importante che le pwd siano diverse ma che la sequenza sia diversa.

Inoltre, quel codice puo' essere ottimizzato.

PM Quote
Avatar
theprogrammer (Normal User)
Guru^2


Messaggi: 2509
Iscritto: 28/01/2009

Segnala al moderatore
Postato alle 17:36
Sabato, 16/05/2009
Testo quotato

Postato originariamente da muteblaster:

si usando randomize funziona , ma non riesco a capire il perche'......



Leggi l'help in linea della funzione Rnd e della Randomize e capirai il perche' ...

PM Quote
Pagine: [ 1 2 ] Precedente | Prossimo