我用的是lazarus 版本与最新版差不了太多。
lazarus是支持Delphi的。所以我只好来这里发帖询问。我的问题是。在调用标准dll的时候。传递参数时中文乱码。
虽然我可以 使用 UTF8ToCP936 来转换编码。这个方法确实解决了我的一个问题。在调用dll的时候,通常我们会用一个不指定默认数据类型的常量(const)来存放dll的名字,以方便查阅维护。
我现在的另外一个问题是,当我需要调用的dll文件名中有中文的时候(或者纯中文),就会提示文件不存在,而且提示框里的文件名是乱码,请问如何解决。
lazarus是支持Delphi的。所以我只好来这里发帖询问。我的问题是。在调用标准dll的时候。传递参数时中文乱码。
虽然我可以 使用 UTF8ToCP936 来转换编码。这个方法确实解决了我的一个问题。在调用dll的时候,通常我们会用一个不指定默认数据类型的常量(const)来存放dll的名字,以方便查阅维护。
我现在的另外一个问题是,当我需要调用的dll文件名中有中文的时候(或者纯中文),就会提示文件不存在,而且提示框里的文件名是乱码,请问如何解决。
能给个例子吗?比如:我原本的写法是
SkinH_DLL = 'DBK64.dll';
function SkinH_Attach: Integer; stdcall; external SkinH_DLL;
我的文件名要换成 皮肤 两个字。该怎么弄?
文件编码utf-8。我用notepad++改成了ansi之后,lazarus又给改成了utf-8
能给个例子吗?比如:我原本的写法是
SkinH_DLL = 'DBK64.dll';
function SkinH_Attach: Integer; stdcall; external SkinH_DLL;
我的文件名要换成 皮肤 两个字。该怎么弄?SkinH_DLL = '"皮肤.DLL"';
...
可以:
SkinH_DLL = UnicodeString("皮肤.DLL"');
谢谢了.文件编码utf-8。我用notepad++改成了ansi之后,lazarus又给改成了utf-8.之后就好了,那个pas文件是别人建立的,没想到会这样。