我想在Delphi 2010中调用DLL函数。此函数接受一个字符串并将其写入带有USB接口的打印机。我不知道DLL开发的是哪种语言。根据文档,该函数的语法是:发送Delphi字符串作为DLL的参数
int WriteUSB(PBYTE pBuffer, DWORD nNumberOfBytesToWrite);
如何在Delphi中声明和使用我的函数?
我宣布这样的功能:
var
function WriteUSB(myP:pByte;n:DWORD): integer ; external 'my.dll';
我应该使用stdcall
或cdecl
在声明?
我调用的DLL函数是这样的:
procedure myProc;
var
str : string:
begin
str := 'AAAAAAAAAAAAAAAAAAAAA';
WriteUSB(str,DWORD(length(tmp)));
end;
但这个代码给我例外,所有的时间。我知道问题是String
是Unicode,每个字符> 1个字节。我试图转换为不同的字符串类型(AnsiChar
和ShortString
),但我失败了。
这样做的正确方法是什么?
这是行不通的。 OP使用D2010,这意味着String和PChar是Unicode,每个字符可能超过1个字节。该DLL正在寻找一个指向BYTE的指针,并且没有迹象表明该DLL函数可以识别Unicode。 – 2010-07-23 16:03:22