gpt4 book ai didi

Delphi 7 - 将监视添加到使用 'with' 命令引用的变量

转载 作者:行者123 更新时间:2023-12-03 18:16:20 26 4
gpt4 key购买 nike

我正在开发一个使用“with”命令的大型软件项目,但我在调试时遇到了困难。

以如下代码为例:

with record do
begin
record_property = 'some value';
end;

如果我正在调试此代码并且我想查看 record_property 的值,我必须在 record.record_property 上添加一个监视,即使我在“with” block 中暂停也是如此。是否有适用于 Delphi 7 的设置或附加组件允许将“with” block 创建的范围转移到监 window 口中?

这会让我的生活轻松很多,因为有很多嵌套“with” block 的情况,这让我很难弄清楚如何添加 watch 。

最佳答案

with语句中使用的记录指针(很可能)加载到eax寄存器中。

record_property = 'some value' 行处命中断点后,您可以通过以下方式获取记录实例

  • 打开程序集窗口(CtrlAltc)
  • 一步将指针加载到eax
  • 计算表达式 TMyRecordType(pointer(eax)^)

或少一步(根据屏幕截图)

  • 打开程序集窗口(CtrlAltc)
  • 计算表达式 TMyRecordType(pointer(integer(ebp)-4)^)

将 TMyRecordType 替换为您的记录的实际类型


以上是我第一次快速尝试获取您感兴趣的值。

如果这不起作用,除了打开 CPU 窗口并自行查找记录指针加载的寄存器外,我看不到任何其他选项。

enter image description here


编辑

要向您的记录变量添加监视,您不能依赖 volatile eax 寄存器。您必须获取 eax 的内容并在您的 watch 中使用它。

  • 在计算窗口中使用Pointer(eax)获取eax的内容
  • 在监视表达式中使用该地址:ex。 TMyRecordType(指针($4A3DB8)^)

关于Delphi 7 - 将监视添加到使用 'with' 命令引用的变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19378862/

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