Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 01-03-2007
Avatar de nlsgarcia
[nlsgarcia] nlsgarcia is offline
Miembro Premium
 
Registrado: feb 2007
Ubicación: Caracas, Venezuela
Posts: 2.206
Poder: 21
nlsgarcia Tiene un aura espectacularnlsgarcia Tiene un aura espectacular
Pregunta teórica sobre el tipo Record en DLLs en Delphi 7

Hola:

¿Hay alguna restricción teórica en el orden de los parámetros en una estructura tipo record definida por referencia cuando esta es utilizada en un DLL escrito en Delphi para devolver valores a un programa en VB6 o cualquier otro lenguaje?

Ejemplo:

Esta estructura definida en un Dll escrito en Delphi devuelve correctamente
los datos que solicita un programa escrito en VB6

Código Delphi [-]
 
TQueryPrnStatus = Record
   UltSecX : Array[0..2] of Char; 
   NTickets : Array[0..12] of Char; 
   PrnStatusHdw : Array[0..2] of Char; 
   ErrStatus : Array[0..2] of Char; 
   PaperStatus : Array[0..2] of Char; 
   SlipStatus : Array[0..2] of Char; 
   PrnID : Array[0..10] of Char;   
  TCounter : Array[0..6] of Char; 
   IvaA : Double;
   IvaB : Double;
   IvaC : Double;
   PrnStatusApp : Byte;
   LineCounter : Byte;
   AutStatus : Byte;
end;

Si los campos tipo byte se colocan delante de los tipo double, la función del Dll en Delphi no da ningún error, pero los valores double son devueltos en 0. Ademas de esto si se hace un Debug al Dll, el valor del IvaC que deberia venir en 0 (Todos los campos son inicializados antes de la llamada al Dll según su tipo) viene con un valor arbitrario expresado en notación científica.

Código Delphi [-]
 
TQueryPrnStatus = Record
   UltSecX : Array[0..2] of Char; 
   NTickets : Array[0..12] of Char; 
   PrnStatusHdw : Array[0..2] of Char; 
   ErrStatus : Array[0..2] of Char; 
   PaperStatus : Array[0..2] of Char; 
   SlipStatus : Array[0..2] of Char; 
   PrnID : Array[0..10] of Char;   
  TCounter : Array[0..6] of Char; 
   PrnStatusApp : Byte;
   LineCounter : Byte;
   AutStatus : Byte;
   IvaA : Double;
   IvaB : Double;
   IvaC : Double;
end;

¿Hay alguna razón teórica para este comportamiento?

No incluyo el programa dado que es muy extenso, la pregunta es solo a nivel teórico y repito: El programa con la primera estructura funciona sin errores y los datos ingresan al Dll con sus respectivos valores dados en la inicialización del programa hecho en VB6.

Gracias de antemano.
Responder Con Cita
  #2  
Antiguo 01-03-2007
jam jam is offline
Miembro
 
Registrado: may 2003
Posts: 74
Poder: 21
jam Va por buen camino
Prueba con TQueryPrnStatus = packed Record
__________________
-¿no es usted la hija de un famoso banquero?.
-pues no.
-Perdone, pero por un momento pensé que me había enamorado de usted.
Responder Con Cita
  #3  
Antiguo 02-03-2007
Avatar de nlsgarcia
[nlsgarcia] nlsgarcia is offline
Miembro Premium
 
Registrado: feb 2007
Ubicación: Caracas, Venezuela
Posts: 2.206
Poder: 21
nlsgarcia Tiene un aura espectacularnlsgarcia Tiene un aura espectacular
Respuesta a Jam:

Hola:

Gracias por tu comentario, voy a probar.
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Una Pregunta Teórica sobre Archivos UDT nlsgarcia Varios 10 25-02-2007 01:50:49
Una Pregunta sobre Librerias de Funciones Matemáticas y Estadísticas para Delphi nlsgarcia Varios 2 24-02-2007 14:17:14
Delphi + Dlls + VisualFox brandolin Varios 2 21-01-2006 01:50:40
pregunta sobre rave + delphi gustavoh Impresión 3 13-09-2005 02:33:44
Dlls en Delphi Khelma API de Windows 0 08-03-2005 15:52:08


La franja horaria es GMT +2. Ahora son las 17:05:14.


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
Copyright 1996-2007 Club Delphi