1

我正在编译 MadRes,但错误是这样的:

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运行良好的程序,但问题是当我想从我的计算机编译时。

有人可以帮助我吗?

4

1 回答 1

2

您应该下载并安装当前版本的 madCollection: http ://madshi.net/

它早已更新为支持 unicode - 有问题的行现在看起来像这样:

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

Delphi 的默认字符串(PChar 等)在 D2009 中从 Ansi 更改为 2 字节 unicode;这引入了需要明确 Ansi 特定的实现(PAnsiChar、AnsiString)以实现兼容性。如果您有兴趣阅读更多内容,我认为 EDN 上的这篇文章可能是一个好的开始:

Unicode 世界中的 Delphi

于 2013-06-24T17:50:13.520 回答