VB로 개발된 DLL이 있어서 안에 있는 function을 콜해야하는데.. 타입에 문제가 있어서
문의합니다.
VB function입니다.
function CheckPCSCTerminal Lib "SmartCard.DLL" (ByVal hwnd As Long,
ByVal ByPCSC As String) As Long;
ByVal hwnd As Long 는 델파이에서 LongInt 인거 같고, (근데 Handle이라고하는데...맞는건지...ㅡㅡ;)
ByVal ByPCSC As String는 -> ByPCSC String인거 같구여!
------------------------
function CardPowerOn Lib "SmartCard.DLL" (ByVal hwnd As Long, -> Hwnd: THandel;
ByVal ByTerminalName As String, -> ByTerminalName: String;
ByVal ProtocalType As String, -> ProtocolType: String;
ByAtr As Any) As Long; -> ByAtr: Array of String;
근데 ByVal 이 녀석이 뭔지 모르겠어여! C++에서는 포인터라고 하는데... 델파이에서는 어케 선언하는지....ㅡㅡ;
------------------------
델파이 소스(function)입니다.
function CardPowerOn(hwnd : THandle;
ByTerminalName : string;
ProtocalType : string;
ByAtr : array of String): LongInt; StdCall; external 'SmartCard.dll';
위에 기재했듯이 타입이 맞는것인지 모르겠어여! 막상 실행하면 오류가 납니다. 리절트는 LongInt로 선언했구여!
String변수 대신 PAnsiChar을 하면 오류는 나지 않지만 정상 결과값이 없습니다.
좋은 정보 공유 부탁드립니다. 즐건 하루 보네세요!
ByVal이 함수에 매개변수를 전달할 때 값에 의해 전달을 나타내는 것 같습니다. ByRef가 값에 의한 전달 이면...
델파이는 기본적으로 값 매개변수가 기본이네요~~.
ByVal을 따로 대체 해 주지 않아도 되지 않나요?
델파이에서 참조에 의한 매개변수 전달은 var 지시어를 사용하네요~
도움이 될까 해서 적어 봅니다.