gpt4 book ai didi

delphi - 如何在 Delphi 调试期间查看通用 tList

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

我使用 Delphi 10.3.1 COMMUNITY 版本,在调试项目时无法查看通用 tList。

我知道最新版本的 Delphi 不支持允许查看通用 tList 的旧类型调试功能。所以我在下面的代码中使用了tList.List来评估tList。

tList<tRecord>.List我可以查看它,但不能在 tList<Integer>.List 中执行此操作.

enter image description here

type
tRecord = record
Field: Integer;
end;

procedure TForm1.FormCreate(Sender: TObject);
var
_Record: tRecord;
_List1: TList<tRecord>;
_List2: TList<Integer>;
i: Integer;
begin
_List1 := TList<tRecord>.Create;
_List2 := TList<Integer>.Create;

for i := 0 to 4 do
begin
_Record.Field := i;

_List1.Add(_Record);
_List2.Add(i);
end;

Caption := IntToStr(_List1.List[0].Field) + IntToStr(_List2.List[0]);

_List1.Free;
_List2.Free;
end;

我如何查看tList<Integer>调试过程中?

最佳答案

通常应该可以在List上看到包含数组的列表。属性(property)。内部只有一个 Pointer 类型的字段与之前的 10.3 不同,它的类型是 TArray<T> .

这是我在分配给 Caption 的行中放置断点时看到的结果并将这两个条目放入我的 watch 中:

enter image description here

更新:看起来链接器是造成您在这里遇到的问题的原因。当您在 watch 中取消选中“允许副作用和函数调用”选项时

enter image description here

监 window 口将显示以下内容:

enter image description here

我之前在使用仅在单元的实现部分中指定的泛型时见过这种行为(FWIW,当我第一次尝试重现此行为时,我没有将您发布的代码放入 VCL 项目中,而是放入控制台中dpr 并且那个没有实现部分,所以我没有看到这种行为)。

要强制链接器不删除符号或调试器实际看到它(因为即使我禁用内联以强制 GetList 方法保留监 window 口也会告诉我它已被删除),您可以简单地放置一些虚拟类型输入 interface该单元或任何其他单元的一部分。

type TDummy = TList<Integer>;

这将使调试器看到符号并看到监 window 口中的值。

关于delphi - 如何在 Delphi 调试期间查看通用 tList,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56560857/

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