gpt4 book ai didi

string - 如何判断Delphi变体是否为空字符串?

转载 作者:行者123 更新时间:2023-12-03 14:46:19 25 4
gpt4 key购买 nike

变体总是很有趣,不是吗?

我正在开发一个遗留应用程序,最后一次将其迁移到 Delphi XE。

在此期间,变体发生了很大变化。

这行代码:

if (VarType(Value) = varString) and (Value = '') then 
Exit;

在 D2007 中返回 True 并退出,但在 Delphi XE 中则不然。

我已将其更改为:

if VarIsStr(Value) and (VarToStr(Value) = '') then
Exit;

我不相信这是“最好”的方法。变体单元没有具体的调用来执行此操作,我当然记得这对于过去的人们来说是一个问题。然而,搜索后发现没有库函数或任何其他可接受的方式。

有“正确”或更好的方法吗?

最佳答案

VarIsStr 是一种完全合理的方法。这是实现为:

function VarTypeIsStr(const AVarType: TVarType): Boolean;
begin
Result := (AVarType = varOleStr) or (AVarType = varString)
or (AVarType = varUString);
end;

function VarIsStr(const V: Variant): Boolean;
begin
Result := VarTypeIsStr(FindVarData(V)^.VType);
end;

当然,您看到的变化实际上是由于 D2009 中的 Unicode 变化而不是变体的变化。您的字符串将是 varUString,又名 UnicodeString。当然,VarIsStr 还会选择 AnsiString/varStringWideString/BSTR/varOleStr

如果您想要真正忠实地转换 Delphi 2007 代码,那么您可以编写:

if (VarType(Value) = varUString) and (Value = '') then 
Exit;

您到底需要做什么,只有您自己知道,但关键是您必须考虑到新到达的 varUString

关于string - 如何判断Delphi变体是否为空字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9673827/

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