【发布时间】:2014-03-23 16:19:08
【问题描述】:
我尝试将一些代码从 D2007 转换为 XE5 并得到了
E2010 不兼容的类型:“AnsiChar”和“Char”
从此代码
TSetOfChar = Set of Char;
var
CharacterSet: TSetOfChar;
s: String;
for j := 1 to Length(s) do
begin
Include(CharacterSet, s[j]); // Error E2010
if not CaseSensitive then
begin
Include(CharacterSet, AnsiUpperCase(s[j])[1]); // Error E2010
Include(CharacterSet, AnsiLowerCase(s[j])[1]) // Error E2010
end
end;
对解决方案有什么建议吗?我认为处理 AnsiStrings 就足够了。
【问题讨论】:
-
类似的东西:在最近的 Delphi 版本中,我一直对
s[1] in ['A'..'Z','a'..'z','0'..'9']等所有内容发出警告。因为我不关心 Ansi 范围之外的任何事情,所以我会做AnsiChar(s[1]) in [etc。 -
或者使用
CharInSet(),就像编译器警告说的那样。 -
@Stijn 有测试字符属性的函数。无需回避国际文本。
-
sigh 如果你有兴趣,我已经在这里发泄过:plus.google.com/105759934778773466450/posts/LRqD794jd7q
标签: delphi delphi-xe5