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
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
Buenas
Tiene que ser una funcion publica:
CitarPrublic Function Parser(texto As String) As String
{RESTO DE FUNCION}
Tenes que declarar la libreria:
CitarPublic 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.
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:
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.
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.
''Para Pasar el argumento tipo String:
y = StrConv(y, vbUnicode, vbcomparebinary)
'' 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