求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// L鋘ge 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;// Bausteinl鋘ge
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;// Bausteinl鋘ge
unsigned long Length[3];// Datenl鋘ge
unsigned short DynLen;// L鋘ge 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;// F黮lbyte
unsigned short chckSum;// Checksumme
unsigned long CPUType;// CPU-Typ
unsigned short signature;// signature
unsigned short res2;// F黮lbytes
} 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++ 头文件 没有办法
硬头皮来吧
[解决办法]
{$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; // L鋘ge 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; // Bausteinl鋘ge 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; // Bausteinl鋘ge Length : array[0..2] of ULONG; // Datenl鋘ge DynLen : WORD; // L鋘ge 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; // F黮lbyte chckSum : WORD; // Checksumme CPUType : ULONG; // CPU-Typ signature : WORD; // signature res2 : WORD; // F黮lbytes 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