Delphi Programming Forum
C++Builder  |  Delphi  |  FireMonkey  |  C/C++  |  Free Pascal  |  Firebird
볼랜드포럼 BorlandForum
 경고! 게시물 작성자의 사전 허락없는 메일주소 추출행위 절대 금지
델파이 포럼
Q & A
FAQ
팁&트릭
강좌/문서
자료실
컴포넌트/라이브러리
FreePascal/Lazarus
볼랜드포럼 홈
헤드라인 뉴스
IT 뉴스
공지사항
자유게시판
해피 브레이크
공동 프로젝트
구인/구직
회원 장터
건의사항
운영진 게시판
회원 메뉴
북마크
델마당
볼랜드포럼 광고 모집

델파이 Q&A
Delphi Programming Q&A
[11794] Re:[질문]C 고수님들 부탁 드립니다.
cc1232 [cc1232] 1619 읽음    2008-03-03 10:26
최병련 님이 쓰신 글 :
: C로 작성된 아래의 프로그램이 델파이로 변환 하고 있습니다.
:
: DLL Function을 부르는데 INVALID_PARAMETER 에러가 납니다.
:
: 어찌 해야 하는지요
:
: 제가 한부분은 아래에 있습니다.
:
: ==C==
: * hearder filk */
: #define MAX_HASH_LENGTH_OLD     40
: #define MAX_HASH_LENGTH_EX      128
: #define MAX_OIDSTR_LENGTH       128
: #define MAX_NAME_LENGTH         512
: #define MAX_TIME_LENGTH         32
: #define MAX_SIGNATURE_LENGTH    1024
: #define MAX_STATUS_LENGTH       80
: #define MAX_BIGNUMBER_LENGTH    40
: typedef enum
: {
:     TTI_RAW  = 0,
:     TTI_TCP  = 1,
:     TTI_HTTP = 2,
:     TTI_SMTP = 3
: } TTI_TransportFormat;
: typedef struct TTI_BigNumber
: {
:     byte      number[MAX_BIGNUMBER_LENGTH];
:     int       length;
: } TTI_BigNumber;
: typedef struct TTI_MessageImprintEx
: {
:     char      hashAlgorithmOid[MAX_OIDSTR_LENGTH];
:     byte      hashedMessage[MAX_HASH_LENGTH_EX];
:     int       hashedMessageLen;
: } TTI_MessageImprintEx;
: typedef struct TTI_TSQ_Ex
: {
:     size_t               size;
:     TTI_MessageImprintEx messageImprint;
:     char                 reqPolicyOid[MAX_OIDSTR_LENGTH];
:     TTI_BigNumber        nonce;
:     BOOL                 certReq;
: } TTI_TSQ_Ex;
:
: /* API Functions */
: int TTI_EncodeTSQ_Ex( const TTI_TSQ_Ex *  pTSQ_Ex,
:                       byte *              encodedReq,
:                       size_t *            encodedReqLen,
:                       TTI_TransportFormat transportFormat );
: /* test.c */
: {
:   TTI_TSQ_Ex tsq;
:   TTI_TransportFormat ttiTransport = TTI_TCP;
:   byte    encodedTSQ[1024];
:   size_t  encodedTSQLen = sizeof encodedTSQ;
:   int     iResult;
:   iResult  = TTI_EncodeTSQ_Ex( tsq, encodedTSQ, &encodedTSQLen, ttiTransport );
: }
:
: ==DELPHI==
: Const
:   MAX_HASH_LENGTH_OLD             =   40;
:   MAX_HASH_LENGTH_EX              =  128;
:   MAX_OIDSTR_LENGTH               =  128;
:   MAX_NAME_LENGTH                 =  512;
:   MAX_TIME_LENGTH                 =   32;
:   MAX_SIGNATURE_LENGTH            = 1024;
:   MAX_STATUS_LENGTH               =   80;
:   MAX_BIGNUMBER_LENGTH            =   40;
: type
:   TTI_TransportFormat = (TTI_RAW , TTI_TCP, TTI_HTTP, TTI_SMTP);
: type
:   TTI_BigNumber = Record
:     number : Array[1..MAX_BIGNUMBER_LENGTH] of Byte;
:     length : Integer;
:   end;
: type
:   PTTI_MessageImprintEx = ^TTI_MessageImprintEx;
:   TTI_MessageImprintEx = Record
:     hashAlgorithmOid : Array[1..MAX_OIDSTR_LENGTH] of Char;
:     hashedMessage    : Array[1..MAX_HASH_LENGTH_EX] of Byte;
:     hashedMessageLen : Integer;
:   end;
: type
:   PTTI_TSQ_Ex = ^TTI_TSQ_Ex;
:   TTI_TSQ_Ex = Record
:     size           : Integer;
:     messageImprint : TTI_MessageImprintEx;
:     reqPolicyOid   : Array[1..MAX_OIDSTR_LENGTH] of Char;
:     nonce          : TTI_BigNumber;
:     certReq        : Boolean;
:   end;
: //
: function TTI_EncodeTSQ_Ex(const pTSQ_Ex : PTTI_TSQ_Ex; encodedReq : Pbyte; encodedReqLen : PInteger; transportFormat : TTI_TransportFormat):Integer; stdcall; external 'TTI.DLL';
: //
: procedure TForm1.BitBtn1Click(Sender: TObject);
: var
:   tsq : TTI_TSQ_Ex;
:   ttiTransport : TTI_TransportFormat;
:   iResult : Boolean;
: begin
:   iResult := TTI_EncodeTSQ_Ex(@tsq, @encodedTSQ, @encodedTSQLen, ttiTransport);
:   =============================================================================
: 이부분입니다.
:
: 한수 부탁 드립니다.

tsq라는 인자는 포인터가 아니라 구조체가 그냥 들어가야 하는 것 같고,
encodedTSQ라는 배열은 아예 델파이쪽 소스에는 안 보이네요. 길이도 그렇고..
그 부분들을 처리해 주셔야 할 것 같습니다

+ -

관련 글 리스트
11793 [질문]C 고수님들 부탁 드립니다. 최병련 1543 2008/03/03
11794     Re:[질문]C 고수님들 부탁 드립니다. cc1232 1619 2008/03/03
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.