Delphi - Pasar parámetros entre DLL de Delphi y VB6

 
Vista:

Pasar parámetros entre DLL de Delphi y VB6

Publicado por Sebas Mercado (2 intervenciones) el 12/08/2004 16:58:15
Hola gente:
Resulta que tengo hecha una DLL en Delphi y la llamo desde Visual Basic 6. El tema es que tengo una función que debería retornar a VB6 un Integer. Pero no me actualiza dicho valor, veo dentro de la función que el valor cambia, pero cuando lo verifico en VB6 sigue con el mismo valor de antes de llamar a la DLL. En VB6 tego la función declarada de la siguiente manera:

Public Declare Function GetVisibleCount Lib "TreeDLL.dll" (ByRef Visible As Integer)

Y el llamado a la función lo hago así:

GetVisibleCount (VScrollbar.Max).

En Delphi, la función es así:

procedure GetVisibleCount(Visible:PInteger);{$ifdef STANDARD} stdcall; {$endif} export;
begin
Visible^ := frmMain.arbol.Items.VisCount;
end;

Desde ya agradezco su ayuda.

Sebas
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Pasar parámetros entre DLL de Delphi y VB6

Publicado por mamcx (533 intervenciones) el 13/08/2004 18:06:16
Porque estas haciendolo con un Pointer???? Y que es PInteger? Usa un integer normal y asignacion normal...asi funciona...
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Pasar parámetros entre DLL de Delphi y VB6

Publicado por Sebas (2 intervenciones) el 13/08/2004 18:34:42
Si, tenés razón! La verdad que me enredé al vicio. El tema es que venía enredado por otra razón y es que no encuentro la forma de devolver desde la DLL un string, ése es realmente mi problema.

Si tenés alguna idea de como se hace te lo agradeceré.

Saludos y gracias por tu tiempo!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Pasar parámetros entre DLL de Delphi y VB6

Publicado por mamcx (533 intervenciones) el 13/08/2004 23:59:43
Ese es el unico "hack" para las Dlls. Si vas a usar el tipo String debes agregar la libreria ShareMem o algo asi (se te informa en el archivo de projecto de Dll cual es). La solucion simple es usar ShortString o WideString y listo el pollo...
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Pasar parámetros entre DLL de Delphi y VB6

Publicado por SVENSSON Victoria (76 intervenciones) el 14/08/2004 00:42:11
has esto:
en VB6 creas un buffer y lo pasas a la DLL y ya la DLL llena este buffer creado por el programa de VB6.
asi es como lo hacen las APIs de Windows.

otra forma creo que vi es trabajando con las API OLEAUT32.DLL y sus funciones como SysAllocString(), SysAllocStringByteLen(), etc
esas funciones te darian una string compatible a las de VB6
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar