首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > .NET >

小弟想一个delphi调用DLL的有关问题,多谢

2012-05-09 
小弟想请教各位一个delphi调用DLL的问题,谢谢!同为一个Singer.dll中的函数在PB中引用为:function boolean

小弟想请教各位一个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的函数都是没问题的,请问各位高人如何解决? 
小弟是新手,请各位前辈不吝指点,小弟先谢谢了~

[解决办法]

Delphi(Pascal) code
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;
[解决办法]
探讨

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……

热点排行