#ifndef _ASPIRE_CMPP_API_H_
#define _ASPIRE_CMPP_API_H_
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;/* 3. Deliver */struct recCDeliver
{
int  nSeqId; u_char usMsgId[ 8 ];
char sDstAddr[ 21+1 ];
char sServiceId[ 10+1 ];
u_char ucTpPid;
u_char ucTpUdhi;
u_char ucMsgFmt;
char sSrcAddr[ 21+1 ];
u_char ucRegister;
u_char ucMsgLen;
u_char usMsgContent[ 256 ];
u_char usReserve[ 8 ];
};
typedef struct recCDeliver RecCDeliver;
typedef struct recCDeliver RecCDelvRqst;struct recCDeliverRcpt
{
int  nSeqId;
u_char usMsgId[ 8 ];
char sStat[ 7+1 ];
char sSubmitTime[ 10+1 ];
char sDoneTime[ 10+1 ];
char sDstAddr[  21+1 ];
int  nSmscSeqId;
};
typedef struct recCDeliverRcpt RecCDeliverRcpt;
typedef struct recCDeliverRcpt RecCDelvRcpt;struct recCDeliverRep
{
int  nSeqId;
u_char usMsgId[ 8 ];
u_char ucResult;
};
typedef struct recCDeliverRep RecCDeliverRep;
typedef struct recCDeliverRep RecCDelvRep;/* 4. Submit */struct recCSubmit
{
int  nSeqId; u_char usMsgId[ 8 ];
u_char ucPkTotal;
u_char ucPkNumber;
u_char ucRegister;
u_char ucMsgLevel;
char sServiceId[ 10+1 ];
u_char ucFeeUserType;
char sFeeTermId[ 21+1 ];
u_char ucTpPid;
u_char ucTpUdhi;
u_char ucMsgFmt;
char sMsgSrc[ 6+1 ];
char sFeeType[ 2+1 ];
char sFeeCode[ 6+1 ];
char sValidTime[ 17+1 ];
char sAtTime[ 17+1 ];
char sSrcTermId[ 21+1 ];
u_char ucDestUsrTl;
char sDstTermId[ 99*21+1 ];
u_char ucMsgLen;
u_char usMsgContent[ 160 ];
u_char usReserve[ 8 ];
};
typedef struct recCSubmit RecCSubmit;
typedef struct recCSubmit RecCSbmtRqst;struct recCSubmitRep
{
int  nSeqId; u_char usMsgId[ 8 ];
u_char ucResult;
};
typedef struct recCSubmitRep RecCSubmitRep;
typedef struct recCSubmitRep RecCSbmtRep;/* 5. Query */struct recCQuery
{
int  nSeqId; char sTime[ 8+1 ];
u_char ucQueryType;
char sQueryCode[ 10+1 ];
u_char usReserve[ 8 ];
};
typedef struct recCQuery RecCQuery;
typedef struct recCQuery RecCQuryRqst;struct recCQueryRep
{
int  nSeqId; char sTime[ 8+1 ];
u_char ucQueryType;
char sQueryCode[ 10+1 ]; int  nMtTlMsg;
int  nMtTlUsr;
int  nMtScs;
int  nMtWt;
int  nMtFl;
int  nMoScs;
int  nMoWt;
int  nMoFl;
};
typedef struct recCQueryRep RecCQueryRep;
typedef struct recCQueryRep RecCQuryRep;/* 6. Cancel */
struct recCCancel
{
int  nSeqId; u_char usMsgId[ 8 ];
};
typedef struct recCCancel RecCCancel;
typedef struct recCCancel RecCCancRqst;struct recCCancelRep
{
int  nSeqId; u_char ucSuccId;
};
typedef struct recCCancelRep RecCCancelRep;
typedef struct recCCancelRep RecCCancRep;/* 7. ActiveTest */
struct recCActiveTest
{
int  nSeqId;
};
typedef struct recCActiveTest RecCActiveTest;
typedef struct recCActiveTest RecCActvRqst;struct recCActiveTestRep
{
int  nSeqId; u_char ucSuccId;
};
typedef struct recCActiveTestRep RecCActiveTestRep;
typedef struct recCActiveTestRep RecCActvRep;
/* Macro of CMPP Command Id */
#define MacC_ConnectRqst 0x00000001
#define MacC_ConnectRep 0x80000001#define MacC_TerminateRqst 0x00000002
#define MacC_TerminateRep 0x80000002#define MacC_DeliverRqst 0x00000005
#define MacC_DeliverRep 0x80000005#define MacC_SubmitRqst 0x00000004
#define MacC_SubmitRep 0x80000004#define MacC_QueryRqst 0x00000006
#define MacC_QueryRep 0x80000006#define MacC_CancelRqst 0x00000007
#define MacC_CancelRep 0x80000007#define MacC_ActiveRqst 0x00000008
#define MacC_ActiveRep 0x80000008/* Extend Macro of CMPP Command Id */
#define MacC_ReceiptRqst 0x01000005
#define MacC_ErrCommand 0x01000009
typedef struct {
int     nCmdId;    // command id
union{
            RecCConnect      recConnect;
            RecCConnectRep  recConnectRep;
            RecCTerminate    recTerminate;
            RecCTerminateRep recTerminateRep;
            RecCDeliver       recDeliver;
RecCDeliverRcpt recReceipt;
            RecCDeliverRep   recDeliverRep;
            RecCSubmit        recSubmit;
            RecCSubmitRep    recSubmitRep;
            RecCQuery         recQuery;
            RecCQueryRep     recQueryRep;
            RecCCancel        recCancel;
            RecCCancelRep    recCancelRep;
            RecCActiveTest    recActiveTest;
            RecCActiveTestRep recActiveRep;
} pkg;
u_char ucaBuff[ MacMaxBufferLen ];
} RecCCMPPPacket;/*==========================================================*
 * Part_2: Export Functions.                               *
 *==========================================================*/#ifdef __cplusplus
extern "C" {
#endifint WINAPI nCMPP_Init( char * pcIniFile );
int WINAPI  nCMPP_Connect( void );
int WINAPI  nCMPP_Terminate( void );
int WINAPI nCMPP_ReplyTerminate( RecCTerminateRep * precPkg );
int WINAPI  nCMPP_PrepSubmit( RecCSubmit * precSubmit, 
            u_char * usMsgId, u_char ucPkTotal, u_char ucPkNumber,
            u_char ucRegisterDelivery, u_char ucMsgLevel,
            char * sServiceId,
u_char ucFeeUserType, char * sFeeTerminalId,
            u_char ucTpPid, u_char ucTpUdhi, u_char ucMsgFmt,
            char * sMsgSrc, char * sFeeType, char * sFeeCode,
            char * sAtTime,
            char * sSrcTerminalId,
            u_char * usReserve );
int WINAPI  nCMPP_SendSubmit( int *pnSequence,
            RecCSubmit * precSubmit,
            char * sValidTime, char * sDestTerminalId,
            int  nMsgLen, u_char * usMsgContent );
int WINAPI  nCMPP_SendPacket(RecCCMPPPacket *precPkg);
int WINAPI  nCMPP_RecvPacket(RecCCMPPPacket *precPkg);
int WINAPI  nCMPP_GetApiVersion( int * pnApiVersion,
char **psVerDesc);
int WINAPI  nCMPP_GetHostVersion( int * pnHostVersion );
int WINAPI  nCMPP_ParseDeliver( u_char *usPkgRecv, 
RecCDeliver * precDeliver, RecCDelvRcpt * precReceipt );#ifdef __cplusplus
}
#endif
#endif
翻译成适用于delphi的object pascal语言,先者得100分,谢谢各位大虾!

解决方案 »

  1.   

    type
     recCConnect=record nSeqId:integer; sSrcAddr:array[0..6] of char;
    usAuthSp:array[0..15] of char;
    ucVersion:char;
    nTimeStamp:integer;
    end;RecCConnRqst=recCConnect;
     recCConnectRep=record nSeqId:integer; ucStatus:char;
            usAuthIsmg:array[0..15] of char;
    ucVersion:char;
    end;
    RecCConnRep=recCConnectRep ;recCTerminate=record   nSeqId:integer;
    end;RecCTermRqst=recCTerminate ;recCTerminateRep=record nSeqId:integer;
    end;
    RecCTermRep=recCTerminateRep ; recCDeliver=record nSeqId :integer; usMsgId:array[0..7] of char;
    sDstAddr:array[ 0..21] of char;
    sServiceId:array[ 0..10] of char;
    ucTpPid:char;
    ucTpUdhi:char;
    ucMsgFmt:char;
    sSrcAddr:array[ 0..21] of char;
    ucRegister:char;
    ucMsgLen:char;
    usMsgContent:array[ 0..255] of char;
    usReserve:array[ 0..7] of char;
    end;
    RecCDelvRqst=recCDeliver ;
    //太长了自己对照一下
      

  2.   

    TO  zjqyb(风清扬*任它溺水三千,我只取一瓢饮*)
    typedef struct {
    int     nCmdId;    // command id
    union{
                RecCConnect      recConnect;
                RecCConnectRep  recConnectRep;
                RecCTerminate    recTerminate;
                RecCTerminateRep recTerminateRep;
                RecCDeliver       recDeliver;
    RecCDeliverRcpt recReceipt;
                RecCDeliverRep   recDeliverRep;
                RecCSubmit        recSubmit;
                RecCSubmitRep    recSubmitRep;
                RecCQuery         recQuery;
                RecCQueryRep     recQueryRep;
                RecCCancel        recCancel;
                RecCCancelRep    recCancelRep;
                RecCActiveTest    recActiveTest;
                RecCActiveTestRep recActiveRep;
    } pkg;
    u_char ucaBuff[ MacMaxBufferLen ];
    } RecCCMPPPacket;如何转换成delphi代码,谢谢!
      

  3.   

    type
     pkgtype=record
      case integer of
        0:recConnect:RecCConnect;
        1:recConnectRep:        RecCConnectRep ;
        2:recTerminate:         RecCTerminate  ;
        3:recTerminateRep:      RecCTerminateRep  ;
        4:recDeliver:           RecCDeliver   ;
        5:recReceipt:           RecCDeliverRcpt ;
        6:recDeliverRep:        RecCDeliverRep ;
        7:recSubmit:            RecCSubmit   ;
        8:recSubmitRep:         RecCSubmitRep  ;
        9:recQuery:             RecCQuery    ;
        10:recQueryRep:         RecCQueryRep ;
        11:recCancel:           RecCCancel  ;
        12:recCancelRep:        RecCCancelRep ;
        13:recActiveTest:       RecCActiveTest ;
        14:recActiveRep:        RecCActiveTestRep ;
      end;
    end;
    RecCCMPPPacket=record
    nCmdId:integer;    // command id
            pkg:pkgtype;
          ucaBuff:array[0..MacMaxBufferLen-1] of char;end ;