读书人

求delphi高手把这个c++的*h文件转成de

发布时间: 2012-03-31 13:13:26 作者: rapoo

求delphi高手把这个c++的*.h文件转成delphi用的unit文件
#ifndef _PRODAVE6_H_
#define _PRODAVE6_H_

#pragma pack(8) // set packing for Prodave6.DLL


// ---------------------------------------
// Includes
// ---------------------------------------
#include <time.h>


// ---------------------------------------
// Base defines
// ---------------------------------------
#ifndef TRUE
#define TRUE 1
#endif
#ifndef FALSE
#define FALSE 0
#endif

// ---------------------------------------
// PRODAVE6 defines
// ---------------------------------------
#define MAX_CONNECTION64// Maximale Anzahl Verbindungen 64
#define ERROR_MSG_LEN256// Lge f ErrorMassages 256
#define MAX_ERROR_ENTRIES512// Maximale Anzahl ErrorMassages 256
#define MAX_DEVNAME_LEN128// AccessPoint z.B.: "S7ONLINE"
#define MAX_BUFFER65536// Maximale Puffergr鲞e
#define LITTLE_BUFFER256// Normale Puffergr鲞e f kleinere Zugriffe
#define MAX_BLK1024// Maximale Anzahl Bausteine
#define SIZE_BOOL_BYTE8// 8 Byte f Array in bool_2_byte...
#define MUTEX_TIMEOUTINFINITE// Wait max. for 5 sec.
#define WTS_USERID_LEN15// Stringlaenge der von der AS gesendeten UserID (ohne \0 !)

// ---------------------------------------
// Base data types
// ---------------------------------------
// BASETYPES is defined in <windows.h> or <windef.h> and can be redefined
// in Prodave6.h
#ifndef BASETYPES
#define BASETYPES
typedef unsigned longULONG;// unsigned 32 Bit value
typedef ULONG *PULONG;
typedef unsigned shortUSHORT;// unsigned 16 Bit value
typedef USHORT *PUSHORT;
typedef unsigned charUCHAR;// unsigned 8 Bit value
typedef UCHAR *PUCHAR;
typedef char *PSZ;
typedef intBOOL;
#endif


// ---------------------------------------
// PRODAVE6 structure types
// ---------------------------------------
#pragma pack(push, 1) // push, set strikt packing

typedef unsigned char TTIMESTAMP[6];//Zeitstempel

#ifndef TS_USERID
typedef struct {// Spezifikation der UserID
UCHAR Data[WTS_USERID_LEN+1];
} TS_USERID;
#endif

typedef union {
unsigned char Mpi;// MPI Stationsadresse(2)
unsigned char Ip[4];// IP Adresse(192.168.0.1)
unsigned char Mac[6];// MAC Adresse(08-00-06-01-AA-BB)
} CON_ADR_TYPE;

typedef struct {
CON_ADR_TYPE Adr;// Verbindungsadresse
unsigned char AdrType;// Typ der Adresse MPI(1) IP(2) MAC(3)
unsigned char SlotNr;// Slot-Nummer
unsigned char RackNr;// Rack-Nummer
} CON_TABLE_TYPE;

#pragma pack(pop) // pop, set packing for Prodave6.DLL

typedef struct {
unsigned char Plcas[4];// Ausgabestand PLC
unsigned char Pgas[2];// Ausgabestand PGAS
char Mlfb[20];// MLFB der angeschlossenen AS
} AS_INFO_TYPE;

typedef struct {
unsigned long Firmware[4];
unsigned long ASIC[4];
char Mlfb[16];// MLFB der angeschlossenen AS200
} AS200_INFO_TYPE;

typedef struct {
unsigned short BlkNr;// Bausteinnummer
struct tm TimeStamp;// Zeitstempel zu der Bausteinnummer
} BST_DIAG_TYPE;

typedef struct {
unsigned short EventID;// EreignisID
unsigned char EventInfo[10];// Info zum Ereignis
unsigned char Timestamp[8];// Zeitstempel des Ereignises
} DIAG_BUFFER_TYPE;

typedef struct {


unsigned short BlkType;// Bausteintyp
unsigned short BlkNumber;// Bausteinnummer
char BlkName[8];// Bausteinname
unsigned char BlkVersion;// Bausteinversion
unsigned long BlkLength;// Bausteinlge
struct tm BlkTimestamp1;// Zeitstempel zu der Bausteinnummer
struct tm BlkTimestamp2;// Zeitstempel zu der Bausteinnummer
unsigned char blkSecurity[4];// Baustein Schutzstufe
} BST_STAT_TYPE;

typedef struct {
unsigned short ProgLang;// Programiersprache
unsigned short BlkType;// Bausteintyp
unsigned short BlkNumber;// Bausteinnummer
unsigned char Attribute;// Attribute
unsigned char BlkVersion;// Bausteinversion
unsigned long BlkLength;// Bausteinlge
unsigned long Length[3];// Datenlge
unsigned short DynLen;// Lge der dyn. lokal Daten
struct tm BlkTimestamp1;// Zeitstempel zu der Bausteinnummer
struct tm BlkTimestamp2;// Zeitstempel zu der Bausteinnummer
unsigned char blkSecurity[4];// Baustein Schutzstufe
unsigned char ProducerName[8];// Producer Name
unsigned char BlkFamName[8];// Baustein Familien Name
unsigned char BlkName[8];// Bausteinname
unsigned char Version;// Dies ist eine Anwenderversion und hat nicht mit der Bausteinversion zu tun
unsigned char res1;// Flbyte
unsigned short chckSum;// Checksumme
unsigned long CPUType;// CPU-Typ
unsigned short signature;// signature
unsigned short res2;// Flbytes
} BST_HEADER_TYPE;

// ---------------------------------------

// ---------------------------------------
// PRODAVE6 functions
// ---------------------------------------
#define PRODAVEAPI WINAPI // use the Win32-API definition

#ifdef __cplusplus // used with C++
extern "C" {
#endif

int PRODAVEAPI LoadConnection_ex6 (unsigned short ConNr, char* pAccessPoint, unsigned short ConTableLen, CON_TABLE_TYPE * pConTable);
typedef int ( PRODAVEAPI *pfn_LoadConnection_ex6 ) (
unsigned short ConNr,
char* pAccessPoint,
unsigned short ConTableLen,
CON_TABLE_TYPE * pConTable
);

int PRODAVEAPI SetActiveConnection_ex6 (unsigned short ConNr);
typedef int ( PRODAVEAPI *pfn_SetActiveConnection_ex6 ) (
unsigned short ConNr
);

int PRODAVEAPI SetPassword_ex6 (unsigned short ConNr, unsigned char *Password);
typedef int ( PRODAVEAPI *pfn_SetPassword_ex6 ) (
unsigned short ConNr,
unsigned char *Password
);


int PRODAVEAPI as_info_ex6 (unsigned long BufLen, AS_INFO_TYPE * pInfoBuffer, unsigned long * pDatLen);
typedef int ( PRODAVEAPI *pfn_as_info_ex6 ) (
unsigned long BufLen,
AS_INFO_TYPE * pInfoBuffer,
unsigned long * pDatLen
);




[解决办法]
对于package

当初我做驱动时 也是翻译的 c++ 头文件 没有办法

硬头皮来吧
[解决办法]

Delphi(Pascal) code
{$X+}{$Z2}{$A8}interfaceuses Windows;{$IFNDEF _PRODAVE6_H_}{$DEFINE _PRODAVE6_H_}//  #pragma pack ( 8 ) // set packing for Prodave6.DLL// ---------------------------------------// Includes// ---------------------------------------// Error :  #include < time.h >// ---------------------------------------// Base defines// ---------------------------------------{$IFNDEF TRUE}const  TRUE    = 1;{$ENDIF}{$IFNDEF FALSE}  FALSE    = 0;{$ENDIF}// ---------------------------------------// PRODAVE6 defines// ---------------------------------------  MAX_CONNECTION    = 64;    // Maximale Anzahl Verbindungen 64  ERROR_MSG_LEN    = 256;    // Lge f ErrorMassages 256  MAX_ERROR_ENTRIES    = 512;    // Maximale Anzahl ErrorMassages 256  MAX_DEVNAME_LEN    = 128;    // AccessPoint z.B.: "S7ONLINE"  MAX_BUFFER    = 65536;    // Maximale Puffergr鲞e  LITTLE_BUFFER    = 256;    // Normale Puffergr鲞e f kleinere Zugriffe  MAX_BLK    = 1024;    // Maximale Anzahl Bausteine  SIZE_BOOL_BYTE    = 8;    // 8 Byte f Array in bool_2_byte...  MUTEX_TIMEOUT    = INFINITE;    // Wait max. for 5 sec.  WTS_USERID_LEN    = 15;    // Stringlaenge der von der AS gesendeten UserID (ohne \0 !)// ---------------------------------------// Base data types// ---------------------------------------// BASETYPES is defined in <windows.h> or <windef.h> and can be redefined// in Prodave6.h{$IFNDEF BASETYPES}{$DEFINE BASETYPES}type  ULONG    = ULONG;    // unsigned 32 Bit value  PULONG    = ^ULONG;  USHORT    = WORD;    // unsigned 16 Bit value  PUSHORT    = ^USHORT;  UCHAR    = UCHAR;    // unsigned 8 Bit value  PUCHAR    = ^UCHAR;  PSZ    = ^char;  BOOL    = Integer;{$ENDIF}// ---------------------------------------// PRODAVE6 structure types// ---------------------------------------//  #pragma pack ( push , 1 ) // push, set strikt packing  TTIMESTAMP    = array[0..5] of UCHAR;    //Zeitstempel{$IFNDEF TS_USERID}  p_TS_USERID = ^TS_USERID;  TS_USERID = record    // Spezifikation der UserIDvar    Data    : array[0..WTS_USERID_LEN] of UCHAR;  end;{$ENDIF}type  CON_ADR_TYPE = record    case Integer of    0: (Mpi    : UCHAR);    // MPI Stationsadresse (2)    1: (Ip    : array[0..3] of UCHAR);    // IP Adresse (192.168.0.1)    2: (Mac    : array[0..5] of UCHAR);    // MAC Adresse (08-00-06-01-AA-BB)  end;  p_CON_TABLE_TYPE = ^CON_TABLE_TYPE;  CON_TABLE_TYPE = record    Adr    : CON_ADR_TYPE;    // Verbindungsadresse    AdrType    : UCHAR;    // Typ der Adresse MPI(1) IP(2) MAC(3)    SlotNr    : UCHAR;    // Slot-Nummer    RackNr    : UCHAR;    // Rack-Nummer  end;//  #pragma pack ( pop ) // pop, set packing for Prodave6.DLL     p_AS_INFO_TYPE = ^AS_INFO_TYPE;  AS_INFO_TYPE = record    Plcas    : array[0..3] of UCHAR;    // Ausgabestand PLC    Pgas    : array[0..1] of UCHAR;    // Ausgabestand PGAS    Mlfb    : array[0..19] of char;    // MLFB der angeschlossenen AS  end;  p_AS200_INFO_TYPE = ^AS200_INFO_TYPE;  AS200_INFO_TYPE = record    Firmware    : array[0..3] of ULONG;    ASIC    : array[0..3] of ULONG;    Mlfb    : array[0..15] of char;    // MLFB der angeschlossenen AS200  end;  p_BST_DIAG_TYPE = ^BST_DIAG_TYPE;  BST_DIAG_TYPE = record    BlkNr    : WORD;    // Bausteinnummer    TimeStamp    : tm;    // Zeitstempel zu der Bausteinnummer  end;  p_DIAG_BUFFER_TYPE = ^DIAG_BUFFER_TYPE;  DIAG_BUFFER_TYPE = record    EventID    : WORD;    // EreignisID    EventInfo    : array[0..9] of UCHAR;    // Info zum Ereignis    Timestamp    : array[0..7] of UCHAR;    // Zeitstempel des Ereignises  end;  p_BST_STAT_TYPE = ^BST_STAT_TYPE;  BST_STAT_TYPE = record    BlkType    : WORD;    // Bausteintyp    BlkNumber    : WORD;    // Bausteinnummer    BlkName    : array[0..7] of char;    // Bausteinname    BlkVersion    : UCHAR;    // Bausteinversion    BlkLength    : ULONG;    // Bausteinlge    BlkTimestamp1    : tm;    // Zeitstempel zu der Bausteinnummer    BlkTimestamp2    : tm;    // Zeitstempel zu der Bausteinnummer    blkSecurity    : array[0..3] of UCHAR;    // Baustein Schutzstufe  end;  p_BST_HEADER_TYPE = ^BST_HEADER_TYPE;  BST_HEADER_TYPE = record    ProgLang    : WORD;    // Programiersprache    BlkType    : WORD;    // Bausteintyp    BlkNumber    : WORD;    // Bausteinnummer    Attribute    : UCHAR;    // Attribute    BlkVersion    : UCHAR;    // Bausteinversion    BlkLength    : ULONG;    // Bausteinlge    Length    : array[0..2] of ULONG;    // Datenlge    DynLen    : WORD;    // Lge der dyn. lokal Daten    BlkTimestamp1    : tm;    // Zeitstempel zu der Bausteinnummer    BlkTimestamp2    : tm;    // Zeitstempel zu der Bausteinnummer    blkSecurity    : array[0..3] of UCHAR;    // Baustein Schutzstufe    ProducerName    : array[0..7] of UCHAR;    // Producer Name    BlkFamName    : array[0..7] of UCHAR;    // Baustein Familien Name    BlkName    : array[0..7] of UCHAR;    // Bausteinname    Version    : UCHAR;    // Dies ist eine Anwenderversion und hat nicht mit der Bausteinversion zu tun    res1    : UCHAR;    // Flbyte    chckSum    : WORD;    // Checksumme    CPUType    : ULONG;    // CPU-Typ    signature    : WORD;    // signature    res2    : WORD;    // Flbytes  end;// ---------------------------------------// ---------------------------------------// PRODAVE6 functions// ---------------------------------------// #define PRODAVEAPI WINAPI// Error : extern "C" {  function LoadConnection_ex6(ConNr: WORD; pAccessPoint: PChar; ConTableLen: WORD;      var pConTable: CON_TABLE_TYPE): Integer; stdcall;type  pfn_LoadConnection_ex6 =  function (ConNr: WORD; pAccessPoint: PChar; ConTableLen: WORD;      var pConTable: CON_TABLE_TYPE): Integer; stdcall;  function SetActiveConnection_ex6(ConNr: WORD): Integer; stdcall;type  pfn_SetActiveConnection_ex6 =  function (ConNr: WORD): Integer; stdcall;  function SetPassword_ex6(ConNr: WORD; var Password: UCHAR): Integer; stdcall;type  pfn_SetPassword_ex6 =  function (ConNr: WORD; var Password: UCHAR): Integer; stdcall;  function as_info_ex6(BufLen: ULONG; var pInfoBuffer: AS_INFO_TYPE; var pDatLen: ULONG): Integer; stdcall;type  pfn_as_info_ex6 =  function (BufLen: ULONG; var pInfoBuffer: AS_INFO_TYPE; var pDatLen: ULONG): Integer; stdcall;implementationend. 


[解决办法]
o, god

读书人网 >.NET

热点推荐