我用delphi调用VC写的DLL,但是VC头文件的声明union不知道在delphi中如何声明,头文件如下:
struct recCConnect
{
int nSeqId; char sSrcAddr[ 6+1 ];
u_char usAuthSp[ 16 ];
u_char ucVersion;
int nTimeStamp;
};
typedef struct recCConnect RecCConnect;
typedef struct recCConnect RecCConnRqst;
struct recCConnectRep
{
int nSeqId; u_char ucStatus;
u_char usAuthIsmg[ 16 ];
u_char ucVersion;
};
typedef struct recCConnectRep RecCConnectRep;
typedef struct recCConnectRep RecCConnRep;
/* 2. Terminate */struct recCTerminate
{
int nSeqId;
};
typedef struct recCTerminate RecCTerminate;
typedef struct recCTerminate RecCTermRqst;struct recCTerminateRep
{
int nSeqId;
};
typedef struct recCTerminateRep RecCTerminateRep;
typedef struct recCTerminateRep RecCTermRep;typedef struct {
int nCmdId; // command id
union{
RecCConnect recConnect;
RecCConnectRep recConnectRep;
RecCTerminate recTerminate;
RecCTerminateRep recTerminateRep;
} pkg;
u_char ucaBuff[ MacMaxBufferLen ];
} RecCCMPPPacket;有请高手以教我,谢谢!
struct recCConnect
{
int nSeqId; char sSrcAddr[ 6+1 ];
u_char usAuthSp[ 16 ];
u_char ucVersion;
int nTimeStamp;
};
typedef struct recCConnect RecCConnect;
typedef struct recCConnect RecCConnRqst;
struct recCConnectRep
{
int nSeqId; u_char ucStatus;
u_char usAuthIsmg[ 16 ];
u_char ucVersion;
};
typedef struct recCConnectRep RecCConnectRep;
typedef struct recCConnectRep RecCConnRep;
/* 2. Terminate */struct recCTerminate
{
int nSeqId;
};
typedef struct recCTerminate RecCTerminate;
typedef struct recCTerminate RecCTermRqst;struct recCTerminateRep
{
int nSeqId;
};
typedef struct recCTerminateRep RecCTerminateRep;
typedef struct recCTerminateRep RecCTermRep;typedef struct {
int nCmdId; // command id
union{
RecCConnect recConnect;
RecCConnectRep recConnectRep;
RecCTerminate recTerminate;
RecCTerminateRep recTerminateRep;
} pkg;
u_char ucaBuff[ MacMaxBufferLen ];
} RecCCMPPPacket;有请高手以教我,谢谢!
解决方案 »
- 软件保密性的问题。
- web Service,client连接server一直报错
- 可以在 Delphi 下用的.哪个skin 可以免费使用?可以商用.
- 初学者问题啊~!?·~救命啊~
- 保存为Excel文件的问题?
- Unsafe type 'PChar' ???
- 谁能改进这段代码的效率。
- 我想做一个编辑器,可以直接在Form上编辑文本。该怎么做?特别是文字选择时反白以及获得选择的文字。
- 接上个问题,怎样通过点击程序图标使已经在后台运行的程序的又出现了?上个问题在....
- 为什么我的程序在2000下跑着跑着就自动退出了?
- 文件版本信息中“中文”的代码页Lang_CodePage_String是多少?我知道“英文(美国)”的Lang_CodePage_String为040904E4,但想知道中文的。
- 大家帮忙看看为什么错,要怎么去写?(简单问题!)
_LARGE_INTEGER = record
case Integer of
0: (
LowPart: DWORD;
HighPart: Longint);
1: (
QuadPart: LONGLONG);
end;你的代码翻译之后:
type
recCConnect=packed record
nSeqId:integer;
sSrcAddr:array[0..6] of char;
usAuthSp[0..15]:of char;
ucVersion:char;
nTimeStamp:integer;
end; RecCConnRqst=recCConnect ;
recCConnectRep=packed record
nSeqId:integer;
ucStatus:char;
usAuthIsmg:array[0..15] of char;
ucVersion:byte;
end;
RecCConnRep=recCConnectRep ;
(* 2. Terminate *) recCTerminate=packed record
nSeqId:integer;
end;
RecCTermRqst=recCTerminate ; recCTerminateRep=packed record
nSeqId:integer;
end;
RecCTermRep=recCTerminateRep ;
RecCCMPPPacket=packed record{
nCmdId:integer; // command id
pkg:packed record
case integer of
0:
(
recConnect:RecCConnect;
);
1:
(
RecCConnectRep:recConnectRep;
);
2:
(
RecCTerminate:recTerminate;
);
3:
(
RecCTerminateRep:recTerminateRep;
);
end;
end;
ucaBuff:array[0..MacMaxBufferLen-1 ] of char;
end;