 |
Club Builder Foro de C++Builder en español
|
| Ver tema anterior :: Ver tema siguiente |
| Autor |
Mensaje |
ironcatan Cdt

Registrado: 16 Ago 2002Mensajes: 2
|
Publicado: Vie 16 Ago, 2002 1:43 pm Asunto: Novato con C++ Builder.... Ayuda :( |
|
|
Hola, llevo tiempo programando en VBasic y al final me he enganchado con esta maravilla del C++ Builder
Bueno la duda es esta (para vosotros seguro que facil)
En Visual Basic, cuando programo una aplicacion y la quiero proteger con Nombre de usuario y clave, creo una Funcion para que me genere un numero correspondiente al Nombre que se introduzca. El Código de la funcion es este:
-------------------------------------------------------------
Function aNumero(cambia As String) As Long
Dim longitud%, numero&, i%
'calcula la longitud de la cadena introducida
longitud = Len(cambia)
'inicializa la variable a 0
numero = 0
For i = 1 To longitud
'convierte a Ascii cada una de las letras
'y las va sumando a las anteriores hasta
'que llega al final (la longitud obtenida)
'Todo ello queda sumado en la variable numero
numero = numero + Asc(Mid(cambia, i, 1))
Next i
'toma la suma de caracteres, los multiplica por
'121 dividido entre 5
'y lo convierte en entero, después lo devuelve
'a la función aNumero
aNumero = numero * (121 / 5)
'aNumero es Long. Las variables de tipo Long
'(entero largo) se almacenan como números con
'signo de 32 bits (4 bytes) en el rango comprendido
'entre los valores -2.147.483.648 y 2.147.483.647.
'Si sobrepasa estos valores dará error.
End Function
-----------------------------------------------------------------
¿Se podria pasar esto a codigo C++ Builder?
A ver si me podeis ayudar, ya que me he quedado pillado y no encuentro la solucion?
¿Como seria el codigo en Builder?
Gracias a todos y espero vuestra ayuda
ironcatan |
|
| Volver arriba |
|
 |
R. Porcar Site Admin

Registrado: 08 Ago 2002Mensajes: 113Ubicación: Castellón (España)
|
Publicado: Vie 16 Ago, 2002 6:37 pm Asunto: |
|
|
A ver...
| Código: | long aNumero(AnsiString cambia)
{
long numero = 0;
for (int i = 1; i <= cambia.Length(); i++)
numero += (unsigned char)cambia[i]; // como Asc() de VB: siempre de 0 a 255
// VB calcula numero * (121 / 5) = numero * 24,2 y redondea al pasarlo a Long.
// Con enteros, (numero * 121 + 2) / 5 da exactamente el mismo resultado.
return (numero * 121 + 2) / 5;
} |
Espero que funcione. |
|
| Volver arriba |
|
 |
ironcatan Cdt

Registrado: 16 Ago 2002Mensajes: 2
|
Publicado: Vie 16 Ago, 2002 7:21 pm Asunto: |
|
|
PERFECTO, y con solo 5 lineas de código
MUCHAS GRACIAS y seguiré aprendiendo con maestros como vosotros
Un saludo
ironcatan |
|
| Volver arriba |
|
 |
|
|
No puedes publicar temas nuevos en este foro No puedes responder a temas en este foro No puedes editar tus mensajes en este foro No puedes borrar tus mensajes en este foro No puedes votar en las encuestas de este foro
|
© 2002–2026 Club Builder · Funciona con phpBB.
|