小弟想请教各位一个delphi调用DLL的问题,谢谢!
同为一个Singer.dll中的函数在PB中引用为:
function boolean getserialno(ref string serialno,long size) library "Signer.dll" alias for "GetSerialNo"
可以正常调用
而小弟在Delphi中引用为:
function getserialno( var serialno:string ; size:longint):boolean; stdcall; external 'Signer.dll' name 'GetSerialNo';
---------
然后调用函数:
procedure TForm1.getserialnobtnClick(Sender: TObject);
var sn:string;
begin
getserialno(sn,256);
end;
编译通过,但调用总是出错,难道问题在于delphi的sting类型和pb的 ref string 的不同?我也尝试使用过pchar、pansichar代替string,也是同样的问题。但小弟调用其它没有 ref string的函数都是没问题的,请问各位高人如何解决?
小弟是新手,请各位前辈不吝指点,小弟先谢谢了~
[解决办法]
function getserialno( var serialno:PAnsiChar; size:longint):boolean; stdcall; external 'Signer.dll' name 'GetSerialNo';function GetSN: string;var sn:array [0..256] of AnsiChar;begin ZeroMemory(@sn,SizeOf(sn)); getserialno(@sn,256); result :=sn;end;
[解决办法]
function getserialno( var serialno:string ; size:longint):boolean; stdcall; external 'Signer.dll' name 'GetSerialNo';
Delphi调用Dll基本都是PAnsiChar;生命时候就要生命成PAnsiChar;
[解决办法]