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 18-10-2019
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.044
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Puede ser por la longitud del tipo de dato, no recuerdo de memoria, pero puede que long (por ejemplo) sea distinto en delphi y c++, en uno 16 bits y en otro 32 bits. Es sólo un ejemplo, para que se entienda.
Responder Con Cita
  #2  
Antiguo 18-10-2019
Diego E. Diego E. is offline
Miembro
 
Registrado: mar 2018
Posts: 30
Poder: 0
Diego E. Va por buen camino
Cita:
Empezado por Casimiro Notevi Ver Mensaje
Puede ser por la longitud del tipo de dato, no recuerdo de memoria, pero puede que long (por ejemplo) sea distinto en delphi y c++, en uno 16 bits y en otro 32 bits. Es sólo un ejemplo, para que se entienda.
Antes de recurrir al Long usé Byte, que según Embarcadero es el equivalente en Delphi del Unsigned char de C++ y no funcionaba de esa manera, de la que tengo actualmente funciona el Open cuando intento acomodar los campos en un orden específico pero el Send no funciona para nada

http://docwiki.embarcadero.com/RADSt..._types_mapping
Responder Con Cita
  #3  
Antiguo 24-10-2019
Avatar de escafandra
[escafandra] escafandra is offline
Miembro Premium
 
Registrado: nov 2007
Posts: 2.197
Poder: 20
escafandra Tiene un aura espectacularescafandra Tiene un aura espectacular
Habría que ver exactamente como es el archivo cabecera en C para ver se aplican alineación al código. Otra forma de saberlo es conocer el tamaño de la estructura en C. Las estructuras pueden estar alineadas en memoria dando como resultado tamaños diferentes a los esperados. Al traducir a delphi estas cosas hay que conocerlas, como saber que para C char tiene siempre tamaño 1 y que es indiferente de BYTE. En delphi unicode CHAR tiene tamaño 2 por lo que la traducción debe ser a AnsiChar o a Byte, según el contexto.

Ya que no dispongo de la dll en cuestión no puedo hacer pruebas pero propongo probar con esta definición:
Código Delphi [-]
uses
  Windows.....

type
{$ALIGN 1}
TSSP_COMMAND = record
  Key: TSSP_FULL_KEY;
  BaudRate: ULONG;  //Cardinal
  Timeout: ULONG;
  PortNumber: BYTE; // AnsiChar
  SSPAddress: BYTE;
  RetryLevel: BYTE;
  EncryptionStatus: BYTE;
  CommandDataLength: BYTE;
  CommandData: Array[0..255-1] of BYTE;
  ResponseStatus: Byte;
  ResponseDataLength: Byte;
  ResponseData: Array[0..255-1] of BYTE;
  IgnoreError: BYTE;
end;
{$ALIGN OFF}

Se fuerza una alineación a 1 pero se puede forzar a también a 2, 4, 8 o 16. Para una alineación = 1 sizeof(TSSP_COMMAND) devolvería 542

Diego E. los copiladores no interpretan nada revuelto simplemente cometemos errores en el tamaño de los tipos o su alineación. Otra forma de equivocarse es en interpretar erróneamente los datos con sus punteros.


Saludos.
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
Llamar a funcion sin definir todos los parametros oscarac OOP 20 23-03-2011 23:10:54
Funcion de IAppServer con parametros out delphijm Providers 2 02-03-2011 13:21:59
funcion con parametros out comba Internet 2 20-10-2010 16:45:11
¿Una función en Delphi, puede devolver varios parámetros? socger Varios 6 27-02-2009 18:00:07
Que hace esta función en VB? mqm Varios 1 15-10-2007 20:30:15


La franja horaria es GMT +2. Ahora son las 21:45:44.


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