Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   C++ Builder (https://www.clubdelphi.com/foros/forumdisplay.php?f=13)
-   -   Pasar estructura Type de delphi a Builder.. (https://www.clubdelphi.com/foros/showthread.php?t=83275)

Novatin 29-05-2013 17:15:50

Pasar estructura Type de delphi a Builder..
 
Saludos acá nos seguimos trasnochando con Builder... :cool:

Estuve intentado utilizar una componente de Delphi en Builder, y finalmente pude hacer que el compilador me reconozca el componente...

Pero ahora no puedo invocar a la funcion porque debo mandar parámetros que estan escritos en delphi:

La funcion es:
Código:

function DumpRomBios(out Dump: TRomBiosDump;
  Method: TRomDumpMethod = rdmAutomatic; Timeout: Longword = 5000): Boolean;

Los tipos son:

Código:

type
  PRomBiosDump = ^TRomBiosDump;
  TRomBiosDump = record
    ByteArray: array [0..RomBiosDumpSize - 1] of Byte;
  end;

type
  TRomDumpMethod = (
    rdmAutomatic,  // Autodetect OS type and use proper method
    rdmGeneric,    // Dump with external 16bit program (Win32)
    rdmMemory,    // Dump from process' address space (Win9x)
    rdmPhysical,  // Dump from physical memory object (WinNT)
    rdmDevMem      // Dump from memory device /dev/mem (Linux)
  );

Como debería declarar estos tipos en Builder C++?? para enviarlos luego a la funcion??

Espero puedan darme una mano con esto...

Un Saludo.

Pd: el archivo completo esta al final de este hilo (BiosHelp.Pas)
http://clubdelphi.com/foros/attachme...7&d=1369763039

ecfisa 30-05-2013 02:52:15

Cita:

Empezado por Novatin (Mensaje 461467)
...
Como debería declarar estos tipos en Builder C++?? para enviarlos luego a la funcion??
...

Hola Novatin.

Una aproximación podría ser:
Código:

struct TRomBiosDump {
  unsigned char ByteArray[RomBiosDumpSize];
} *PRomBiosDup;


typedef enum TRomDumpMethod {
  rdmAutomatic, // Autodetect OS type and use proper method
  rdmGeneric,  // Dump with external 16bit program (Win32)
  rdmMemory,    // Dump from process' address space (Win9x)
  rdmPhysical,  // Dump from physical memory object (WinNT)
  rdmDevMem    // Dump from memory device /dev/mem (Linux)
} RomDumpMethod;

Saludos. :)

Novatin 30-05-2013 07:05:36

Gracias eficsa, a ese paso y por toda la ayuda que me hiciste creo te estas convirtiendo en mi "cibermentor" de Builder++ :rolleyes:

Con esos ejemplos pude entender mejor los "type" de delphi...

y la llamada a la función en Builder me quedó asi:

Código:

  bool result;
  struct TRomBiosDump Dump;
  union TRomDumpMethod;
  TRomDumpMethod=rdmAutomatic;

  result=DumpRomBios(&Dump,TRomDumpMethod,5000);

y me generó un errorcillo - y a mi cuando no? :o -: "Cannot convert 'TRomBiosDump*' to 'TRomBiosDump'... Sé que indica que no puede convertir un "puntero a struct" en un "struc" y lo intente cambiando esto en la unión, pero creo que el detalle esta en la llamada de delphi:

Código:

function DumpRomBios(out Dump: TRomBiosDump;
  Method: TRomDumpMethod = rdmAutomatic; Timeout: Longword = 5000): Boolean;

Espero puedan ayudarme con esto... gracias de antemano.

Un saludo.

ecfisa 30-05-2013 09:23:34

Hola Novatin.

Fijate si te funciona de este modo:
Código:

...
struct TRomBiosDump {
  unsigned char ByteArray[RomBiosDumpSize];
} *PRomBiosDup;


typedef enum {
  rdmAutomatic,rdmGeneric,rdmMemory,rdmPhysical,rdmDevMem
} TRomDumpMethod;

...
{
  bool result;
  struct TRomBiosDump Dump;
  TRomDumpMethod RomDumpMethod = rdmAutomatic;

  result = DumpRomBios(Dump, RomDumpMethod, 5000);
  ...

Saludos. :)

Novatin 31-05-2013 19:00:35

Ahora si ya no salto error! :p

Con esto ya tengo para jugar con el componente de Delphi... lo que me dificulta es que el mismo no tenga una ayuda mínima... pero ya de a poco también aprendo un poco de Delphi, por lo pronto estoy haciendo "hello worlds" con FreePascal.. :D

Saludos y Gracias por todo ecfisa.


La franja horaria es GMT +2. Ahora son las 00:02:08.

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