Foro de elhacker.net

Programación => Programación Visual Basic => Mensaje iniciado por: Krnl64 en 31 Mayo 2006, 03:20 am



Título: Pasarle Strings a una funcion de una DLL en VB6
Publicado por: Krnl64 en 31 Mayo 2006, 03:20 am
Vereis, el tema es que programe el code de la Siguiente Funcion para extraer los parámetros entre parentesis y corchetes que le pasaba a 1 Base de Datos.

Hasta aqui Ok.

Bueno, pues paso la funcion a 1 DLL y resulta que no me devuelve ningun String.

Pense que quiza habia que tratar la cadena antes de pasarsela a la funcion quitandole los espacios, pero esto tampoco me funciona.

Podeis decirme que tengo que hacer para que funcione ?

Gracias

Código:

Function Parser(texto As String) As String
 
 '' esta función extraera lo que encuentre entre parentesis y corchetes ignorando lo que haya antes

Dim lon As Integer ' longitud de la cadena

Dim pasadas As Long ' contador 1

Dim counter As Integer ' contador 2

Dim numero As String '' letra actual xDD

Dim num As String '' numero a formar tipo string

Dim cor As String '' nombre de la tabla


lon = Len(texto)

counter = 1

For pasadas = 1 To lon

    numero = Mid(texto, counter, 1)
   
       
        If numero <> "(" Then
       
        counter = counter + 1

       
        Else
Do
       counter = counter + 1
       
 
       
        numero = Mid(texto, counter, 1)
       
                If numero = ")" Then
                GoTo en
                End If
       
           
        num = num + numero

       
DoEvents

Loop
en:
        End If

If numero = "[" Then

Do

       
        numero = Mid(texto, counter, 1)
       
        counter = counter + 1
   
        If numero = "]" Then
    GoTo sal
    End If
       
        cor = cor + numero
       
Loop
sal:
Else
End If


Next pasadas

Parser = num + "," + cor
 
End Function





Título: Re: Pasarle Strings a una funcion de una DLL en VB6
Publicado por: <--v1c1ous--> en 31 Mayo 2006, 06:53 am
Buenas

Tiene que ser una funcion publica:

Citar
Prublic Function Parser(texto As String) As String
{RESTO DE FUNCION}

Tenes que declarar la libreria:

Citar
Public Declare Function mifuncion Lib "C:\TUDLL.dll" ( _texto As String) As String

Si no lo solucionas con eso es que estas creando mal la libreria DLL, explica un poco mas cual es el proceso que seguis.

Saludos.


Título: Re: Pasarle Strings a una funcion de una DLL en VB6
Publicado por: Krnl64 en 31 Mayo 2006, 12:59 pm
Efectivamente, La funcion dentro de la DLL es Public.

Y tambien la declaro Public en el proyecto que la uso.

El problema es que no se si la funcion coje el texto, es decir cuando llamo a la funcion asi:

Código:

Y=Parser(y)


No se que texto llega a la DLL, porque la funcion me devuelve un string vacio.

A ver si me pueden ayudar.

Gracias.



Título: Re: Pasarle Strings a una funcion de una DLL en VB6
Publicado por: Krnl64 en 31 Mayo 2006, 13:37 pm
Ya solucione el asunto.

Digo el motivo de por qué no funcionaba, para que no le pase a nadie igual que a mi.


Para Pasarle un argumento tipo String a una funcion en una DLL creada en VB6, hay que convertirla a UNICODE y para que nos devuelva 1 string, el valor devuelto debemos limpiarlo.

Código:

''Para Pasar el argumento tipo String:

y = StrConv(y, vbUnicode, vbcomparebinary)


Código:

'' Para tratar el valor devuelto

y=Mtrim(y)

'' Ahora ya podemos manejar el valor dentro de nuestro programa

Private Function MTrim(s As String) As String
    Dim i As Long
    Dim res As String
   
    For i = 1 To Len(s)
        If Mid$(s, i, 1) <> Chr$(0) Then
            res = res & Mid$(s, i, 1)
        End If
    Next
   
    MTrim = res

End Function

Salu2