프로젝트에서 싸인패드 관련 업무를 진행하고 있습니다.
개발환경은 델파입니다.
첨부파일은 관련된 샘플소스입니다.
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;
|