gpt4 book ai didi

delphi - 检查字符串是否可以在 XE4 及更高版本中安全地转换为 AnsiString 的最简单方法是什么?

转载 作者:行者123 更新时间:2023-12-03 15:23:28 25 4
gpt4 key购买 nike

在Delphi XE4及以上版本中,我们可能会这样写:

function TestAnsiCompatible(const aStr: string): Boolean;
begin
end;
Delphi XE4 中的

string 被声明为 UnicodeString。它可能包含一个 unicode 字符串。

如果我们进行一些类型转换:

function TestAnsiCompatible(const aStr: string): Boolean;
var a: AnsiString;
begin
a := aStr;
Result := a = aStr;
end;

一些编译器警告应该提示:

[dcc32 Warning]: W1058 Implicit string cast with potential data loss from 'string' to 'AnsiString'
[dcc32 Warning]: W1057 Implicit string cast from 'AnsiString' to 'string'

有没有一种简单而简洁的方法来测试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;

最佳答案

您所要做的就是通过类型转换消除警告:

function TestAnsiCompatible(const aStr: string): Boolean;
var
a: AnsiString;
begin
a := AnsiString(aStr);
Result := String(a) = aStr;
end;

可以简化为:

function TestAnsiCompatible(const aStr: string): Boolean;
begin
Result := String(AnsiString(aStr)) = aStr;
end;

关于delphi - 检查字符串是否可以在 XE4 及更高版本中安全地转换为 AnsiString 的最简单方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24352092/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com