FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
|
#1
|
|||
|
|||
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 ' dandole uso a la funcion Private Sub AddField(sMessage As String) Dim lAux As Long lAux = AddMessageField(sMessage, Len(sMessage)) If lAux <> 0 Then ShowError (lAux) End Sub 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? |
#2
|
||||
|
||||
erickperez6,
Cita:
Código:
' Declaración de la llamada a la DLL en VB6 Private Declare Function AddMessageField Lib "efProtocol.dll" (ByVal szField As String, ByVal lFieldLength As Long) As Long 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. Última edición por nlsgarcia fecha: 26-05-2013 a las 21:26:37. |
#3
|
|||
|
|||
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.
|
|
|
Temas Similares | ||||
Tema | Autor | Foro | Respuestas | Último mensaje |
Instalando Delphi 2006 en diferente equipo | malcantar | Varios | 1 | 20-09-2007 09:43:03 |
¿Qué versión de Delphi me recomiendan? ¿Cuál es la más usada? | Chiefesito | Varios | 18 | 13-09-2006 00:10:24 |
El RichEdit se comporta raro | darkerbyte | Varios | 4 | 16-11-2005 01:34:19 |
Algun instalador para Delphi diferente del InstallShield? | delphivan | Varios | 3 | 19-04-2005 05:19:04 |
Ultima celda usada en excell | davezf | Varios | 4 | 03-02-2005 23:22:59 |
|