procedure TfrmTEST.btnConfirmClick(Sender: TObject);
type
KCPDataProcPos = function(strIp: string; lPort:Longint; StrCard:string; strRet:PChar):boolean; stdcall;
var
i:integer;
s : string;
DataProcPos : KCPDataProcPos;
dll_hwd : THandle;
cData : array[0..1024] of char;
iRet : boolean;
strRet : PChar;
r : string;
ReturnCheck : boolean;
begin
s := '';
s := s + STX;
s := s + 'TEST'; //T18O 단말기 버전
s := s + FS;
s := s + '1100'; //1100 거래구분코드
s := s + FS;
s := s + '2000010166'; //단말기ID
s := s + FS;
s := s + '20'; //거래유형
s := s + FS;
s := s + edEncryptNum.Text; //카드번호(암호화)
s := s + FS;
s := s + ''; //비밀번호
s := s + FS;
s := s + '00'; //할부개월수
s := s + FS;
s := s + '00020000'; //거래금액
s := s + FS;
s := s + '00000000'; //봉사료
s := s + FS;
s := s + '00002000'; //세금
s := s + FS;
s := s + '120517'; //거래일자
s := s + FS;
s := s + 'N'; //망취소유무
s := s + ETX;
try
FillChar(cData, SizeOf(cData), #0);
dll_hwd := LoadLibrary('KCPDLL.dll');
@DataProcPos := GetProcAddress(dll_hwd, 'KCPDataProcPos');
iRet := DataProcPos('192.168.0.5', 29976, s, strRet);
edGetData.Text := strRet;
FreeLibrary(dll_hwd);
except
end;
end;
이렇게 DLL을 사용하도록 처리를 하였습니다. dll은 VB로 만들어져 있는 DLL 입니다.
그런데 strRet 값을 받기만 하면 access violation at address~~~~ 이런 오류가 나옵니다.
이럴땐 어떻게 하는건가요???
답변 좀 부탁드리겠습니다.
|