9

我想在调试应用程序时显示 TStringList 的全部内容。相反,我只是得到指针。Flist 仅显示地址。

4

5 回答 5

7

如果您使用的是 Delphi 2010 或更高版本,调试器允许使用调试可视化器进行此操作。

对于旧版本,您可以在 Watch 窗口中转储 Text 属性的内容或使用 OutputDebugString,但这很难阅读。您可以为列表的每个元素设置监视,但这仅适用于非常短的列表。

我可能会使用像CodeSiteSmartInspect这样的外部日志记录应用程序,它可以让您在一次调用中转储 TStringList 的内容。

于 2011-08-15T17:01:44.937 回答
5

检查文本属性。它是字符串列表的串联版本。

于 2011-08-15T17:02:56.703 回答
3

由于我正在使用 BDS MMVI,我正在使用“超聪明”的方法来解决这类问题,我将它用于大型 xml 文档。我启动上下文文件编辑器(顺便说一句,用delphi编写的非常强大的自由文本编辑器)。在调试器窗口上,只需执行 FList.SaveToFile('contents.txt'),因为上下文可以监视文件修改,我可以看到我的 xml 文件中发生的事情。

对不起“聪明”的笑话,但它确实对我有用。

和平

于 2011-08-16T11:38:46.777 回答
2

有了 D2010,我现在使用可视化工具。我曾经使用一个名为 CArray 的函数,它会返回一个字符串数组。如果我将 CArray(MyStringList) 添加到监视窗口,我将能够检查字符串列表的内容。我曾经受雇编写 VB6 代码,我有点喜欢将各种“C”函数转换为有用的类型。用于字符串列表的 CArray 和用于 ClientDataset 字段的 CArray 对调试非常有用。

  function  CArray(List: TStrings): TStrArray; Overload;
  var i,
      iCount: Integer;
  begin
    iCount := List.Count;
    SetLength(Result, iCount);
    for i := 0 to Pred(iCount) do Result[i] := List[i];
  end;
于 2011-08-15T20:48:40.617 回答
2

我的两分钱:

您可以评估表达式list_instance_variable.SaveToFile('temp_file_name.txt'),然后在任何编辑器中检查文件的内容。

为此,您必须在代码中的任何位置使用此函数并关闭优化(至少在 Delphi 7 中),否则SaveToFile链接器将删除目标代码。

于 2011-08-16T13:03:03.877 回答