Generar Codigos Alfanumericos

Iniciado por {_The_Alwar_}, 11 Octubre 2005, 18:02 PM

0 Miembros y 1 Visitante están viendo este tema.

{_The_Alwar_}

¿Como puedo crear codigos alfanumericos de x digitos? existe alguna funcion o api para esto? Si hay algun post donde se explique esto, avisenme
Saludos!

noob_Setup

hola lo que puedes hacer es escribir en un txt o un dat a travez de random. Busca por ahi
En las msdn tienes ayuda sobre el tema

saludos

{_The_Alwar_}

si pero ramdon me genera un numerito, y yo qero una clave de 10 numeros y letras, buscare en la msdn
Gracias!

c0rrupt_gamer

Podrias generas una variable con random k diera numeros aleatorios entre 1 y (num.caracteres del text), k diera unos cuantos valores y los caracteres correspondientes cambiarlos a letras.

Ej: text = 10 caracteres
variable aleatoria te da los valores 2, 5 y 9.
Al segundo, quinto y noveno caracter le poner el Chr$(pa pasarlo a letra) y ya esta.

{_The_Alwar_}

podria, pero si me diera el 1?? eso en ascii me parece q es nulo, weno ya me pasaron un codigo, y creo q mas o menos es como tu dices, os lo pego por si a alguien le interesa:


Private Function Palabra(iCarMin As Integer, iCarMax As Integer) As String
Dim sPalabra As String
Dim iTotalCarac As Integer
   
    If iCarMin > iCarMax Then Exit Function
   
    iTotalCarac = Int((iCarMax - iCarMin + 1) * Rnd + iCarMin)
    For j = 1 To iTotalCarac
        sPalabra = sPalabra + Chr(Int((122 - 97 + 1) * Rnd + 97))
    Next j
    Palabra = sPalabra
End Function

Nota: iCarMin = Caracteres minimos que quieres que tenga la cadena
iCarMax = Caracteres Maximos que tendra la cadena

c0rrupt_gamer

CitarsPalabra = sPalabra + Chr(Int((122 - 97 + 1) * Rnd +97))


1 question: si le pones el chr$ a todo solo deberian salir letras, no?


{_The_Alwar_}

Si el procedimiento ahora solo hace letras, pero weno me vale, ¿se les ocurre como hacer para que intercale numeros?

dexer

#7
CitarDim letra As String
Dim final As String
Dim DigitosMax As Integer
DigitosMax = 10 'NUMERO DE DIGITOS
Dim i As Integer
For h = 1 To DigitosMax
Randomize Timer
i = Rnd * 35 + 1
Select Case i
Case 10
letra = "A"
Case 11
letra = "B"
Case 12
letra = "C"
Case 13
letra = "D"
Case 14
letra = "E"
Case 15
letra = "F"
Case 16
letra = "G"
Case 17
letra = "H"
Case 18
letra = "I"
Case 19
letra = "J"
Case 20
letra = "K"
Case 21
letra = "L"
Case 22
letra = "M"
Case 23
letra = "N"
Case 24
letra = "O"
Case 25
letra = "P"
Case 26
letra = "Q"
Case 27
letra = "R"
Case 28
letra = "S"
Case 29
letra = "T"
Case 30
letra = "U"
Case 31
letra = "V"
Case 32
letra = "W"
Case 33
letra = "X"
Case 34
letra = "Y"
Case 35
letra = "Z"
Case Else
letra = i
End Select
final = final & letra
Next h
If Len(final) > DigitosMax Then
final = Mid(final, 1, DigitosMax) 'Por si se pasa de los DigitosMAX xD
End If
Text1.Text = final
puedes añadir mas letras o lo que quieras cambiando el RNd y añadiendo mas Case X

c0rrupt_gamer

#8
CitarFor j = 1 To iTotalCarac
        sPalabra = sPalabra + Chr(Int((122 - 97 + 1) * Rnd + 97))
    Next j

Pues con una variable aleatoria k diero valores entre 1 o 0, en caso k diera 1 k se ejecute la orden con el chr$. En caso k diera 0 pues k ejecute una orden como la anterior pero sin el chr$.
Supongo k algo asi:


dim R as integer
randomize timer
R = int(rnd*2)
For j = 1 To iTotalCarac
if R = 1 then
        sPalabra = sPalabra + Chr(Int((122 - 97 + 1) * Rnd + 97))
elseif R = 0 then
        sPalabra = sPalabra + Int((122 - 97 + 1) * Rnd + 97)
end if
Next j