elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Recopilación Tutoriales y Manuales Hacking, Seguridad, Privacidad, Hardware, etc


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  .NET (C#, VB.NET, ASP)
| | | |-+  Programación Visual Basic (Moderadores: LeandroA, seba123neo)
| | | | |-+  Pasarle Strings a una funcion de una DLL en VB6
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Pasarle Strings a una funcion de una DLL en VB6  (Leído 1,842 veces)
Krnl64

Desconectado Desconectado

Mensajes: 169


Exception 0x00005


Ver Perfil
Pasarle Strings a una funcion de una DLL en VB6
« 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





En línea

<--v1c1ous-->


Desconectado Desconectado

Mensajes: 776


¡Operadora! ¡Deme el número para el 911! - Homero


Ver Perfil WWW
Re: Pasarle Strings a una funcion de una DLL en VB6
« Respuesta #1 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.


En línea


Krnl64

Desconectado Desconectado

Mensajes: 169


Exception 0x00005


Ver Perfil
Re: Pasarle Strings a una funcion de una DLL en VB6
« Respuesta #2 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.

En línea

Krnl64

Desconectado Desconectado

Mensajes: 169


Exception 0x00005


Ver Perfil
Re: Pasarle Strings a una funcion de una DLL en VB6
« Respuesta #3 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







En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Velneo.... y esto?
Dudas Generales
Luna71c0 4 3,962 Último mensaje 22 Noviembre 2014, 16:02 pm
por ea3000
Como ingresar dos strings como parametros en una funcion
Programación C/C++
SNP 5 3,653 Último mensaje 17 Mayo 2012, 20:07 pm
por exel
pasarle argumentos a un bat?
Scripting
x64core 3 7,084 Último mensaje 22 Octubre 2012, 05:06 am
por x64core
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines