在Delphi XE4及更高版本中,我们可以编写如下内容:
function TestAnsiCompatible(const aStr: string): Boolean;
begin
end;
Run Code Online (Sandbox Code Playgroud)
string在Delphi XE4中声明为UnicodeString.它可能包含一个unicode字符串.
如果我们做一些类型转换:
function TestAnsiCompatible(const aStr: string): Boolean;
var a: AnsiString;
begin
a := aStr;
Result := a = aStr;
end;
Run Code Online (Sandbox Code Playgroud)
一些编译器警告应该提示:
[dcc32 Warning]: W1058 Implicit string cast with potential data loss from 'string' to 'AnsiString'
[dcc32 Warning]: W1057 Implicit string cast from 'AnsiString' to 'string'
Run Code Online (Sandbox Code Playgroud)
是否有一个简单而简洁的方法来测试是否aStr与AnsiString完全兼容?或者我们将按字符检查字符:
function TestAnsiCompatible(const aStr: string): Boolean;
var C: Char;
begin
Result := True;
for C in aStr do begin
if C > #127 then begin
Result := False;
Break;
end;
end;
end;
Run Code Online (Sandbox Code Playgroud)
你所要做的就是输掉警告:
function TestAnsiCompatible(const aStr: string): Boolean;
var
a: AnsiString;
begin
a := AnsiString(aStr);
Result := String(a) = aStr;
end;
Run Code Online (Sandbox Code Playgroud)
哪个可以简化为:
function TestAnsiCompatible(const aStr: string): Boolean;
begin
Result := String(AnsiString(aStr)) = aStr;
end;
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1538 次 |
| 最近记录: |