Club Builder - Foros de discusión Club Builder
Foro de C++Builder en español
 
 FAQFAQ   BuscarBuscar   MiembrosMiembros   Grupos de UsuariosGrupos de Usuarios   RegistrarseRegistrarse 
 PerfilPerfil   Entra para ver tus mensajes privadosEntra para ver tus mensajes privados   EntrarEntrar 

Novato con C++ Builder.... Ayuda :(

 
Publicar nuevo tema   Responder al tema    Foros de discusión -> Consultas
Ver tema anterior :: Ver tema siguiente  
Autor Mensaje
Mensaje    Asunto: Novato con C++ Builder.... Ayuda :( Responder citando

Hola, llevo tiempo programando en VBasic y al final me he enganchado con esta maravilla del C++ Builder Smile
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 Wink

ironcatan
Volver arriba
Ver perfil de usuario Enviar mensaje privado Visitar sitio web del autor
Mensaje    Asunto: Responder citando

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
Ver perfil de usuario Enviar mensaje privado
Mensaje    Asunto: Responder citando

PERFECTO, y con solo 5 lineas de código Very Happy

MUCHAS GRACIAS y seguiré aprendiendo con maestros como vosotros Shocked

Un saludo
ironcatan
Volver arriba
Ver perfil de usuario Enviar mensaje privado Visitar sitio web del autor
Mostrar mensajes de anteriores:   
Cambiar a:  
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


Hosting WordPress Indedmedia desde 3,99 €
© 2002–2026 Club Builder · Funciona con phpBB.