아래와 같은 비주얼베이직에서 사용중인 DLL을 델파이로 사용할려고 합니다.
이지가지 많은 참고 자료를 찾아봐도 적용하기에 어렵네요.
아래의 소스는 비베의 DLL 선언과 사용입니다.
특히, ByRef handle As Long 이 부분은 델파이에서 어떻게 선언을 하고 사용을 해야 되는지가 가장 궁금하네요. handle 값을 가져오는 부분이 되야 그 다음과정도 진행이 될것같은데요.
제가 작성한 코딩은
Function BS_OpenSocket( biostationAddr : String; port : LongInt;var handle : LongInt):LongInt; cdecl; external 'BS_SDK.dll';
procedure TForm2.Button3Click(Sender: TObject);
var r :Int64;
handle,
biostationID : LongInt;
port : Integer;
tmp: String;
begin
handle := 0;
biostationID := 0;
port := StrToInt(txtPort.Text) ;
tmp := txtIPAddress.Text;
BS_InitSDK();
BS_OpenSocket(tmp, port, Handle);
BS_GetBiostationID(handle, biostationID);
BS_CloseSocket(handle);
end;
지금까지 땀흘려 해본게 이런식으로 코딩을 해 봤지만, ... 답이 없네요.
아랫부분은 비베에 들어있는 소스입니다.
참고하셔서 좋은 답변 부탁드립니다.
//DLL 선언
Public Declare Function BS_InitSDK Lib "BS_SDK" () As Long
Public Declare Function BS_OpenSocket Lib "BS_SDK" (ByVal biostationAddr As String, ByVal port As Long, ByRef handle As Long) As Long
Public Declare Function BS_CloseSocket Lib "BS_SDK" (ByVal handle As Long) As Long
Public Declare Function BS_GetBiostationID Lib "BS_SDK" (ByVal handle As Long, ByRef biostationID As Long) As Long
//DLL 사용
Private Sub Command1_Click()
Dim logRecord() As BSLogRecord
result = BS_OpenSocket(txtIPAddress.Text, Int(txtPort.Text), handle)
If result <> 0 Then
Text1.SelText = "Cannot open the communication channel : " & result & vbCrLf
Exit Sub
End If
result = BS_GetBiostationID(handle, biostationID)
If result <> 0 Then
Text1.SelText = "Cannot get the ID : " & result & vbCrLf
If chkUSB.Value = 0 Then
BS_CloseSocket (handle)
Else
BS_CloseUSBMemory (handle)
End If
Exit Sub
End If