我用的是lazarus 版本與最新版差不了太多。
lazarus是支持Delphi的。所以我只好來這里發帖詢問。
我的問題是。在呼叫標準dll的時候。傳遞引數時中文亂碼。
雖然我可以 使用 UTF8ToCP936 來轉換編碼。這個方法確實解決了我的一個問題。
在呼叫dll的時候,通常我們會用一個不指定默認資料型別的常量(const)來存放dll的名字,以方便查閱維護。
我現在的另外一個問題是,當我需要呼叫的dll檔案名中有中文的時候(或者純中文),就會提示檔案不存在,而且提示框里的檔案名是亂碼,請問如何解決。
uj5u.com熱心網友回復:
檔案名加雙引號uj5u.com熱心網友回復:
支持uj5u.com熱心網友回復:
雖然上面伙伴們都說了,但我想說得是誰這么蛋疼改成個中文名來用?再說你改成英文不行嗎?uj5u.com熱心網友回復:
Delphi使用中文名DLL沒有任何問題,不需要特殊處理,lazarus有問題估計是它的源檔案默認字符編碼的原因,用UTF8或者UTF16編碼保存源檔案就好了uj5u.com熱心網友回復:
特殊情況,特殊對待,我要做點特殊的處理,所以才這么弄。
uj5u.com熱心網友回復:
能給個例子嗎?
比如:我原本的寫法是
SkinH_DLL = 'DBK64.dll';
function SkinH_Attach: Integer; stdcall; external SkinH_DLL;
我的檔案名要換成 皮膚 兩個字。該怎么弄?
uj5u.com熱心網友回復:
Delphi使用中文名DLL沒有任何問題,不需要特殊處理,lazarus有問題估計是它的源檔案默認字符編碼的原因,用UTF8或者UTF16編碼保存源檔案就好了
檔案編碼utf-8。我用notepad++改成了ansi之后,lazarus又給改成了utf-8
uj5u.com熱心網友回復:
支持
檔案名加雙引號
能給個例子嗎?
比如:我原本的寫法是
SkinH_DLL = 'DBK64.dll';
function SkinH_Attach: Integer; stdcall; external SkinH_DLL;
我的檔案名要換成 皮膚 兩個字。該怎么弄?
SkinH_DLL = '"皮膚.DLL"';
...
uj5u.com熱心網友回復:
他說的就是這樣SkinH_DLL = '"皮膚.DLL"';會出問題...可以:
SkinH_DLL = UnicodeString("皮膚.DLL"');
uj5u.com熱心網友回復:
Delphi使用中文名DLL沒有任何問題,不需要特殊處理,lazarus有問題估計是它的源檔案默認字符編碼的原因,用UTF8或者UTF16編碼保存源檔案就好了
謝謝了.檔案編碼utf-8。我用notepad++改成了ansi之后,lazarus又給改成了utf-8.之后就好了,那個pas檔案是別人建立的,沒想到會這樣。
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/37843.html
