加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

delphi – 检查字符串是否可以在XE4及更高版本中安全地转换为Ans

发布时间:2020-12-15 09:21:02 所属栏目:大数据 来源:网络整理
导读:在Delphi XE4及更高版本中,我们可以编写如下内容: function TestAnsiCompatible(const aStr: string): Boolean;beginend; Delphi XE4中的字符串声明为UnicodeString.它可能包含一个unicode字符串. 如果我们做一些类型转换: function TestAnsiCompatible(co
在Delphi XE4及更高版本中,我们可以编写如下内容:

function TestAnsiCompatible(const aStr: string): Boolean;
begin
end;

Delphi XE4中的字符串声明为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;

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读