gpt4 book ai didi

delphi - 调试包含字符串的 TValue

转载 作者:行者123 更新时间:2023-12-02 05:00:05 25 4
gpt4 key购买 nike

我在调试时无法检查 TValue 变量的字符串值。悬停菜单不显示字符串值,甚至将其添加到监视列表似乎也很棘手。

给定一个非常基本的示例控制台应用程序,例如

program Project1;

uses
System.SysUtils, System.Rtti;

var
Value: TValue;
begin
Value := 'Hello';
WriteLn(Value.AsType<string>);
ReadLn;
end.

WriteLn 添加断点行,我可以将鼠标悬停在 Value 上变量并查看值类型,但实际上没有任何有关字符串值的信息,请参阅

Variable in Debugger

我尝试的下一步是将其添加到监视列表中,使用 .AsType<string> - 但是监视列表错误 - 示例应用程序中的内部错误,我的实际应用程序中的 E2531(方法需要显式类型参数)。选中/取消选中允许副作用和功能的选项没有区别。 Watch list error

最终起作用的是创建一个转换函数,例如

function ValueToString(const Value: TValue): string;
begin
Result := Value.AsType<string>;
end;

并在监视列表中使用它。不过,我必须在应用程序代码中使用此函数(例如在示例中的 WriteLn 调用中)以避免它被链接器删除。这也意味着我必须将此函数或包含此函数的单元添加到我想要调试的每个单元中。

有更好的解决方案吗?

最佳答案

使用TValue的内置Value.ToString可以在 watch 中使用。 Value.AsString 也会计算。

关于delphi - 调试包含字符串的 TValue,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45454979/

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