江湖告急: DLL调用,参数是byte数组,请问怎样写代码?(100分)

  • 主题发起人 主题发起人 liboy.com
  • 开始时间 开始时间
L

liboy.com

Unregistered / Unconfirmed
GUEST, unregistred user!

下面是声明DLL的VB代码
Public Declare Function Monitor_Position Lib "YG.dll" (ByRef v_byFrame As Byte, ByVal v_strdestmobile As String, ByVal v_strSourceMobile As String) As Long

调用该函数的VB代码
Dim a(1000) As Byte '定义byte数组
iL = Monitor_Position( a(0), "参数1", "参数2") '调用DLL函数
sStr$ = StrConv(a, vbUnicode) '将a数组转成字符串

请问怎样用 delphi 来实现上面的声明DLL,以及调用?
函数的参数是一个 byte 数组, 另外如何将 byte数组转成字符串?
 
http://www.delphibbs.com/delphibbs/dispq.asp?lid=2509663
 
请再说明一下, 怎样编写 delphi 代码调用这个DLL函数 ?

调用该函数的VB代码
Dim a(1000) As Byte '定义byte数组
iL = Monitor_Position( a(0), "参数1", "参数2") '调用DLL函数
sStr$ = StrConv(a, vbUnicode) '将a数组转成字符串

将上面的代码用 delphi 来写
 
function Monitor_Position(v_byFrame: pByte
v_strdestmobile:PChar
v_strSourceMobile: PChar): Integer;
 
可以了,呵呵

Function Monitor_Position ( v_byFrame: Pbyte
v_strdestmobile: pchar
v_strSourceMobile: Pchar): LongInt
stdcall
external 'Yaxon_Gps31.dll';


Function ByteToStr (NameArr :Array of byte):String

var I:Integer

S:String

Begin
Setlength(S,High(NameArr)+1)

For I:=Low(NameArr) to High(NameArr) do S[I+1]:=Char(NameArr)

Result :=Pchar(S)

End;


procedure TfrmMain.Button1Click(Sender: TObject);
var
re_len: LongInt;
sData: array[0..1000] of byte;
begin
re_len := Monitor_Position( @sData[0], pchar( edt_desc.Text ), pchar( edt_center.Text ) );
showMessage( ByteToStr( sData ) );
end;
 
多人接受答案了。
 
后退
顶部