2013-06-24 112 views
1

我編譯MadRes,但錯誤是這樣的:爲什麼編譯器在編譯MadRes時抱怨Char和AnsiChar不兼容?

Checking project dependencies... 
Compiling Project1.dproj (Debug configuration) 
[DCC Warning] madRes.pas(351): W1057 Implicit string cast from 'AnsiString' to 'string' 
[DCC Warning] madRes.pas(351): W1057 Implicit string cast from 'AnsiString' to 'string' 
[DCC Error] madRes.pas(519): E2010 Incompatible types: 'Char' and 'AnsiChar' 
[DCC Fatal Error] Unit1.pas(7): F2063 Could not compile used unit 'madRes.pas' 
Failed 
Elapsed time: 00:00:00.6 

,然後顯示我的單位madRes的這一部分:

if GetVersion and $ 80000000 = 0 then 
     result: = CreateFileW (fileName, c1, c2, nil, c3, 0, 0) 
    else result: = CreateFileA (pchar (string (WideString (fileName))), c1, c2, nil, c3, 0, 0); 
end; 

的代碼是一個程序,我發現該exe順利但問題是當我想從我的電腦編譯時。

有人可以幫助我嗎?

回答

2

你應該下載並安裝madCollection的當前版本:http://madshi.net/

它長久以來被更新的Unicode支持 - 這行現在看起來是這樣的:

result := CreateFileA(PAnsiChar(AnsiString(UnicodeString(fileName))), 
                 c1, c2, nil, c3, 0, 0); 

德爾福的默認字符串( PChar等)在D2009中從Ansi更改爲2字節的unicode;這引入了一個需要明確的關於Ansi特定實現(PAnsiChar,AnsiString)的兼容性。如果您有興趣瞭解更多,我覺得這篇文章EDN可能是一個良好的開端:

Delphi in a Unicode World

+0

感謝您的幫助。 – 14K

相關問題