有没有更简单的方法将Delphi 7转换为Delphi 2009? 或者有没有办法在Delphi 2009项目中使用Delphi 7单元?
我在Delphi 7中有一个单元,但当我尝试在我的Delphi 2009项目中使用它时,行为就搞砸了。
它有很多不同之处,如:
Hangul = 'ㄱㄲㄴㄷㄸㄹㅁㅂㅃㅅㅆㅇㅈㅉㅊㅋㅌㅍㅎ' +
'ㅏㅐㅑㅒㅓㅔㅕㅖㅗㅛㅜㅠㅡㅣ';
ShowMessage(Copy(Hangul, 1 + (I) * 2, 2));
在Delphi 7中一次显示一个字符,但在Delphi 2009中一次显示两个字符。 所以我需要将其更改为:
ShowMessage(Copy(Hangul, 1 + I, 1));
但这是最简单的,它会让人感到更加困惑......算法不是我的,所以我无法弄清楚整个程序。
任何帮助都将不胜感激。
编辑:
如果有人有兴趣看到这里的代码是LINK。这是unit HanInput;
部分。它翻译键(英文)并输出韩文字符。不,我不懂韩语。
答案 0 :(得分:5)
我看看你的.pas文件的编码。例如,您可以使用Notepad++执行此操作。如果它不是UTF-8,请使用notepad ++将其更改为UTF-8。这应该保留字符并使它们对D2009可读。哦,并确保包括UTF-8的BOM(字节顺序标记)。
不确定该文件是否仍可在D7中使用...(不知道何时向IDE添加了UTF-8支持)。
示例中的Hangul字符串和链接中的HanInput单元每个字符有两个字节。这告诉我他们打算用UTF-16编码。
这有点被MultiByteToWideChar调用所证实,即使它们用于参数而不是常量。如果你实际上将UTF-16编码到函数中,你可以摆脱那个调用,但你仍然需要找到一种方法来处理常量。
处理常量 - 我在HanInput单元中看不到太多 - 可能就像将字符串复制到新的Ansi编码的Notepad ++文件一样简单,将其编码更改为UTF-8然后将字符串复制回来到你的单位。您可能希望确保首先将所有字符串复制到新的记事本++文件,然后转换它们然后将它们复制回来,因为IDE编辑器可能会询问您是否要将单位格式更改为UTF-8并且可能会损坏常数。
答案 1 :(得分:4)
在D7中,Sizeof(Char)等于1,而在D2009中它是2.所以这应该对你有帮助:
ShowMessage(Copy(Hangul, 1 + (I) * Sizeof(Char), Sizeof(Char)));