Pet*_*ner 5 delphi debugging delphi-7
我已经放弃了 Delphi 7 调试器,并且非常依赖于输出调试字符串。是否有一个标准函数可以调用以将对象的内容作为字符串获取,就像设置断点时调试器会执行的那样?
不完全是您想要的,但您可以使用 RTTI 来访问各种已发布属性的值。神奇的例程位于 TypInfo 单元中。您可能最感兴趣的是 GetPropList 它将返回对象属性的列表,以及 GetPropValue 它将允许您获取属性的值。
procedure TForm1.DumpObject( YourObjectInstance : tObject );
var
PropList: PPropList;
PropCnt: integer;
iX: integer;
vValue: Variant;
sValue: String;
begin
PropCnt := GetPropList(YourObjectInstance,PropList);
for iX := 0 to PropCnt-1 do
begin
vValue := GetPropValue(YourObjectInstance,PropList[ix].Name,True);
sValue := VarToStr( vValue );
Memo1.Lines.Add(PropList[ix].Name+' = '+sValue );
end;
end;
Run Code Online (Sandbox Code Playgroud)
例如,在主窗体的按钮单击上使用 DumpObject(Self) 运行此命令,它将把当前窗体的所有属性转储到备忘录中。这只是已发布的属性,并且要求主类要么从 TPersistent 派生,要么在对象之前打开 {$M+} 进行编译。
有传言称 Delphi 的未来版本(可能是 2010 年)将提供类似“反射器”的功能。
| 归档时间: |
|
| 查看次数: |
2335 次 |
| 最近记录: |