我用的是lazarus 版本与最新版差不了太多。
lazarus是支持Delphi的。所以我只好来这里发帖询问。我的问题是。在调用标准dll的时候。传递参数时中文乱码。
虽然我可以 使用 UTF8ToCP936 来转换编码。这个方法确实解决了我的一个问题。在调用dll的时候,通常我们会用一个不指定默认数据类型的常量(const)来存放dll的名字,以方便查阅维护。
我现在的另外一个问题是,当我需要调用的dll文件名中有中文的时候(或者纯中文),就会提示文件不存在,而且提示框里的文件名是乱码,请问如何解决。

解决方案 »

  1.   

    Delphi使用中文名DLL没有任何问题,不需要特殊处理,lazarus有问题估计是它的源文件默认字符编码的原因,用UTF8或者UTF16编码保存源文件就好了
      

  2.   


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

  3.   


    文件编码utf-8。我用notepad++改成了ansi之后,lazarus又给改成了utf-8
      

  4.   


    能给个例子吗?比如:我原本的写法是
    SkinH_DLL = 'DBK64.dll';   
    function SkinH_Attach: Integer; stdcall; external SkinH_DLL; 
    我的文件名要换成 皮肤 两个字。该怎么弄?SkinH_DLL = '"皮肤.DLL"';
    ...
      

  5.   

    他说的就是这样SkinH_DLL = '"皮肤.DLL"';会出问题...
    可以:
    SkinH_DLL = UnicodeString("皮肤.DLL"');
      

  6.   


    谢谢了.文件编码utf-8。我用notepad++改成了ansi之后,lazarus又给改成了utf-8.之后就好了,那个pas文件是别人建立的,没想到会这样。