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
[13299] DLL 내 함수 호출시 Memory Access Violation 에러 T,T
김요석 [] 2847 읽음    2010-06-24 20:01
프로젝트에서 싸인패드 관련 업무를 진행하고 있습니다.

개발환경은 델파입니다.

첨부파일은 관련된 샘플소스입니다.

KFTCPOS.DLL 내의 KFTC_POS_TRAN 함수를 호출하는 문제인데,
하나의 실행파일에 두개의 화면이 있습니다.
하나는 일반 Form으로 작업을 했고, 나머지 하나는 BPL을 이용해서 작업을 했습니다.
싸인패드를 이용한 싸인요청을 하면 동일한 SignPadInit 함수를 호출하도록 되어 있습니다.

그런데 Form에서 호출할때는 정상적으로 수행이 되는데, BPL에서 호출할 때 SignPadInit 함수내
KFTC_POS_TRANS 에서 Memory Access Violation 오류가 발생합니다.

왜 그럴까요? 고수님들의 Help 요청합니다.

[선언부]
  //------- 사인패드 모듈---------------------------------
  Function KFTC_POS_TRANS( FC : Integer;
                           indata : TCharArray;
                           var outdata : TByteArray
                          ) : Integer; stdcall;external 'kftcpos.dll';

[호출되는 함수]
Function SignPadInit( ComPort : String ) : Boolean;
var
  ret : Integer;
  DisPlayMsg : String;
  SignDisPlayMsg : TCharArray;
  RtnSignData : TByteArray;
  SingPadTranSp, PaperYn, PaperTranSp : String;
begin
    Result := False;

    If ComPort = '' Then
    begin
        ComPort := '1';
    end;

    SingPadTranSp := '057600';
    PaperYn := '0';
    PaperTranSp := '000000';

    //Mode | 통신포트 | 통신설정 | Destinateion Address | Login ID | LogIn Password | 단말기 ID |
    //세금 설정 여부 | 봉사료 사용 여부 | 응답전문 대기시간 | ENQ 대기시간 | EOT 대기시간
    //부가장비 사용
    DisPlayMsg := '0' + COM_FS +
           '0' + COM_FS +
           '8002' + COM_FS +
           'www.kftcvan.or.kr' + COM_FS +
           'test01' + COM_FS +
           'test01' + COM_FS +
           TERMINAL_ID + COM_FS +
           '0000' + COM_FS +
           '0000' + COM_FS +
           '30' + COM_FS +
           '05' + COM_FS +
           '03' + COM_FS +
           ComPort + SingPadTranSp + PaperYn + PaperTranSp + COM_FF;

    ZeroMemory( @SignDisPlayMsg, sizeof( SignDisPlayMsg ) );
    StrPCopy( SignDisPlayMsg, DisPlayMsg );

    ret := KFTC_POS_TRANS( $F0, SignDisPlayMsg, RtnSignData );
    If ret < 0 Then
    begin
        ErrMsg('초기화 오류!!', ret);
        exit;
    end;

    Result := True;
end;

+ -

관련 글 리스트
13299 DLL 내 함수 호출시 Memory Access Violation 에러 T,T 김요석 2847 2010/06/24
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.