funcion en dll usada en vb6 se comporta diferente en delphi
Saludos,
Tengo una DLL que no se en que ambiente fue desarrollada, ni tampoco tengo documentacion de ella, solo tengo el codigo fuente de una aplicacion en visual basic 6 que la utiliza y funciona bien. El problema lo tengo en una funcion que en vb6 funciona bien pero en delphi funciona pero a medias, me explico que sucede, tengo la siguiente declaracion de la funcion en vb6: Código:
Private Declare Function AddMessageField Lib "efProtocol.dll" (ByVal szField As String, ByVal lFieldLength As Long) As Long Código:
AddField "" ' esto es valido
No importa la situacion ni el momento, pero siempre que mando un mensaje en blanco obtengo un error en la version delphi, pero nunca en la vb6, creo que la definificion en delphi de la funcion no es la apropiada, a alguien le ha pasado algo similar? |
erickperez6,
Cita:
Código:
' Declaración de la llamada a la DLL en VB6 1- En VB6 cuando una función envía un String por Valor a un DLL (ByVal), lo esta enviando como un String terminado en Nulo. 2- El tipo de dato Long en VB6 es equivalente a Integer en Delphi (Win32). 3- En el ejemplo en VB6 la función llamada en el DLL se denomina AddMessageField no SendSerialMessage, lo cual parece ser una incongruencia en el ejemplo en Delphi mostrado en el Msg #1. Revisa este código: El código anterior carga una DLL de forma dinámica para el envío de datos a un puerto serial tomando en consideración los puntos señalados anteriormente en función del problema planteado. Espero sea útil :) Nelson. |
si, tienes razon con la incogruencia, lo que pasa que tenia muchas funciones declaradas y las quite porque no venian al caso, y deje una funcion equivocada en el ejemplo.
En fin, resolvi el caso simplemente con definir el szField como Pchar y no como String.
|
La franja horaria es GMT +2. Ahora son las 17:09:25. |
Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi