Delphi 如何调用中文名的dll

bx897911494 2018-08-31 05:35:26
我用的是lazarus 版本与最新版差不了太多。
lazarus是支持Delphi的。所以我只好来这里发帖询问。

我的问题是。在调用标准dll的时候。传递参数时中文乱码。
虽然我可以 使用 UTF8ToCP936 来转换编码。这个方法确实解决了我的一个问题。

在调用dll的时候,通常我们会用一个不指定默认数据类型的常量(const)来存放dll的名字,以方便查阅维护。
我现在的另外一个问题是,当我需要调用的dll文件名中有中文的时候(或者纯中文),就会提示文件不存在,而且提示框里的文件名是乱码,请问如何解决。
...全文
547 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
bx897911494 2018-09-06
  • 打赏
  • 举报
回复
引用 4 楼 DelphiGuy 的回复:
Delphi使用中文名DLL没有任何问题,不需要特殊处理,lazarus有问题估计是它的源文件默认字符编码的原因,用UTF8或者UTF16编码保存源文件就好了


谢谢了.文件编码utf-8。我用notepad++改成了ansi之后,lazarus又给改成了utf-8.之后就好了,那个pas文件是别人建立的,没想到会这样。
  • 打赏
  • 举报
回复
他说的就是这样SkinH_DLL = '"皮肤.DLL"';会出问题...
可以:
SkinH_DLL = UnicodeString("皮肤.DLL"');
SupermanTm 2018-09-05
  • 打赏
  • 举报
回复
引用 6 楼 bx897911494 的回复:
引用 2 楼 lyhoo163 的回复:
[quote=引用 1 楼 SupermanTm 的回复:]
文件名加双引号
支持


能给个例子吗?

比如:我原本的写法是
SkinH_DLL = 'DBK64.dll';
function SkinH_Attach: Integer; stdcall; external SkinH_DLL;
我的文件名要换成 皮肤 两个字。该怎么弄?[/quote]

SkinH_DLL = '"皮肤.DLL"';
...
bx897911494 2018-09-05
  • 打赏
  • 举报
回复
引用 4 楼 DelphiGuy 的回复:
Delphi使用中文名DLL没有任何问题,不需要特殊处理,lazarus有问题估计是它的源文件默认字符编码的原因,用UTF8或者UTF16编码保存源文件就好了


文件编码utf-8。我用notepad++改成了ansi之后,lazarus又给改成了utf-8
bx897911494 2018-09-05
  • 打赏
  • 举报
回复
引用 2 楼 lyhoo163 的回复:
引用 1 楼 SupermanTm 的回复:
文件名加双引号
支持


能给个例子吗?

比如:我原本的写法是
SkinH_DLL = 'DBK64.dll';
function SkinH_Attach: Integer; stdcall; external SkinH_DLL;
我的文件名要换成 皮肤 两个字。该怎么弄?
bx897911494 2018-09-05
  • 打赏
  • 举报
回复
引用 3 楼 boylafong 的回复:
虽然上面伙伴们都说了,但我想说得是谁这么蛋疼改成个中文名来用?再说你改成英文不行吗?


特殊情况,特殊对待,我要做点特殊的处理,所以才这么弄。
lyhoo163 2018-09-03
  • 打赏
  • 举报
回复
引用 1 楼 SupermanTm 的回复:
文件名加双引号
支持
  • 打赏
  • 举报
回复
Delphi使用中文名DLL没有任何问题,不需要特殊处理,lazarus有问题估计是它的源文件默认字符编码的原因,用UTF8或者UTF16编码保存源文件就好了
SupermanTm 2018-09-03
  • 打赏
  • 举报
回复
文件名加双引号
boylafong 2018-09-03
  • 打赏
  • 举报
回复
虽然上面伙伴们都说了,但我想说得是谁这么蛋疼改成个中文名来用?再说你改成英文不行吗?

1,183

社区成员

发帖
与我相关
我的任务
社区描述
Delphi Windows SDK/API
社区管理员
  • Windows SDK/API社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧