pasar de c a vb 6.0

Iniciado por n4zGuL, 10 Marzo 2009, 20:03 PM

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

n4zGuL

alber si alguien me puede ayudar a pasar este codigo de lenguaje C a VB 6.0:

public static string EncriptPassRunReg(string pass)
        {
            string buf ="";
            Random rnd = new Random();
            string[] rell = { "KK", "cB", "0x", "z2", "A6" };
            for (int i = pass.Length; i > 0;i--)
            {
                buf += rell[rnd.Next(5)] + Convert.ToChar(Convert.ToInt16( pass[pass.Length - i]) + i);
            }
            return buf;

Karcrack

#1
Si no me equivoco seria así:
Código (vb) [Seleccionar]
Public Function EncriptPassRunReg(ByVal pass As String) As String
    Dim i       As Long
    Dim buf     As String
    Dim rell()  As Variant
   
    rell = Array("KK", "cB", "0x", "z2", "A6")
   
    For i = 1 To Len(pass)
        Call Randomize(Timer)
        buf = buf & rell(CInt(Rnd * 4)) & Chr$(Asc(Mid$(pass, i, 1)) + 1)
    Next i
   
    EncriptPassRunReg = buf
End Function


MOD: Retoque un fallo, por cierto, en caso de que el valor Ascii de uno de los caracteres fuera 255 daria error...

Saludos ;D

PD:Feliz primer post :xD ;)

cassiani

hola karcrack, si me premites la sugerencia, la condición del bucle sería algo así a mi parecer:
Código (vb) [Seleccionar]
For i = Len(pass) To 1 Step -1

Dim rell()  As String

saludos ;)

Karcrack

Cita de: cΔssiΔnі en 11 Marzo 2009, 14:11 PM
hola karcrack, si me premites la sugerencia, la condición del bucle sería algo así a mi parecer:
Código (vb) [Seleccionar]
For i = Len(pass) To 1 Step -1

Dim rell()  As String

saludos ;)
No se permite rell() as string, ya que la funcion Array() devuelve variant...

En cuanto al bucle es cierto, traduci mal el bucle de C :xD

Saludos ;)

cassiani

Cita de: Karcrack en 11 Marzo 2009, 15:24 PM
No se permite rell() as string, ya que la funcion Array() devuelve variant...

los arrays deben ser del mismo tipo, no todo es perfecto, jodido vb
devuelve variants incluso si el contenido del array son cadenas  :-\

Karcrack

Cita de: cΔssiΔnі en 11 Marzo 2009, 16:28 PM
Cita de: Karcrack en 11 Marzo 2009, 15:24 PM
No se permite rell() as string, ya que la funcion Array() devuelve variant...

los arrays deben ser del mismo tipo, no todo es perfecto, jodido vb
devuelve variants incluso si el contenido del array son cadenas  :-\
Tampoco hay problema al trabajar con Variants ;D

Supongo que esta hecho por ejemplo para poder crear Arrays con umeros letras y objetos a la vez.. o yo que se! :xD

cobein

Como dice Karcrack, al parecer es para que sea mas "versatil", te permite trabajar con numeros, letras o lo que sea. Pero no es mucho problema.
Si te fijas vas a ver que hasta las funciones para trabajar con texto hacen lo mismo, por ejemplo Mid, Left y Right devuelven variant y Mid$, Left$ y Right$ devuelven strings.
http://www.advancevb.com.ar
Más Argentino que el morcipan
Aguante el Uvita tinto, Tigre, Ford y seba123neo
Karcrack es un capo.

wofdy

Hola, por fa, ayudenme a convertir el siguiente codigo que esta hecho en C, quiero pasarlo a visual basic 6. sirve para convertir un texto a formato PDU, y viceversa.

/* Transforma un texto normal (pchOriginal) en PDU (pchTransformado) devolviendo pchTransformado*/
char *formatoMensaje(char *pchOriginal, char *pchTransformado)
{
    char pchTablaHex[]={'0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F'};
    unsigned char chrCaracter;
    int intContador;
    int intIndice;
    int intTamano;
    int intMascara;
    int intDesplaza;

    intTamano = strlen(pchOriginal);
    intMascara = 1;
    intContador = 0;
    intIndice = 2;
    strcpy(pchTransformado,"00");
    intDesplaza = 7;

    while(intContador < intTamano)
    { 
        chrCaracter = ((*(pchOriginal + intContador + 1) & intMascara) << intDesplaza) + (*(pchOriginal + intContador) >> (7 - intDesplaza)); 
        pchTransformado[intIndice] = pchTablaHex[(chrCaracter & 0xF0) >> 4]; 
        intIndice++; 
        pchTransformado[intIndice] = pchTablaHex[chrCaracter & 0x0F]; 
        intIndice++; 
        intContador++; 
        intMascara <<= 1; 
        intMascara++ ; 
        intDesplaza--; 
        if(intDesplaza == -1) 
        {   
            intMascara = 1;   
            intDesplaza = 7;   
            intIndice -= 2; 
        }
    }

    pchTransformado[intIndice] = '';

    chrCaracter=(char)intTamano;
    pchTransformado[0] = pchTablaHex[(chrCaracter & 0xF0) >> 4];
    pchTransformado[1] = pchTablaHex[chrCaracter & 0x0F];

    return pchTransformado;
}

/* Transforma un texto PDU (pchOriginal) en texto normal (pchTransformado) devolviendo pchTransformado*/
char *decodificaMensaje(char *pchOriginal, char *pchTransformado)
{
    char pchLetras[5];
    unsigned char chrCaracter;
    int intTamano;
    int intContador;
    int intArrastre;
    int intDesplaza;
    int intIndice;
    int intMascara;

    intMascara = 128;
    intIndice = intContador = intArrastre = intDesplaza = 0;

    strcpy(pchLetras, "0x");
    strncat(pchLetras, pchOriginal + intIndice, 2);
    sscanf(pchLetras, "%x", &intTamano);

    intIndice += 2;

    while(intContador < intTamano)
    { 
        strcpy(pchLetras, "0x"); 
        strncat(pchLetras, pchOriginal + intIndice, 2); 
        sscanf(pchLetras, "%x", &chrCaracter); 
        pchTransformado[intContador] = ((chrCaracter & ~intMascara) << intDesplaza) + intArrastre; 
        intArrastre=(chrCaracter & intMascara) >> (7 - intDesplaza); 
        intIndice += 2; 
        intMascara >>= 1; 
        intMascara += 128; 
        intDesplaza++; 
        if(intMascara == 255) 
        {   
            intContador++;   
            pchTransformado[intContador] = chrCaracter >> 1;   
            intMascara = 128;   
            intDesplaza = intArrastre = 0; 
        }
        ++intContador;
    }

    pchTransformado[intContador] = '';

    return pchTransformado;

YST

Usa las etiquetas code , ¿en que te quedas atascado para ayudarte ?


Yo le enseñe a Kayser a usar objetos en ASM

cassiani