Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/mercurial/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Delphi 如何在调试器中显示TStringList的内容?_Delphi_Debugging_Tstringlist - Fatal编程技术网

Delphi 如何在调试器中显示TStringList的内容?

Delphi 如何在调试器中显示TStringList的内容?,delphi,debugging,tstringlist,Delphi,Debugging,Tstringlist,我想在调试应用程序时显示TStringList的全部内容。 相反,我只是得到了指针。Flist仅显示地址。如果您使用的是Delphi 2010或更高版本,调试器允许使用此选项 对于旧版本,可以在监视窗口或使用OutputDebugString转储Text属性的内容,但这很难读取。您可以为列表中的每个元素设置手表,但这仅适用于非常短的列表 我可能会使用像或这样的外部日志应用程序,让您在一次调用中转储TStringList的内容。检查文本属性。这是stringlist的串联版本。我现在使用可视化工具

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

如果您使用的是Delphi 2010或更高版本,调试器允许使用此选项

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


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

检查文本属性。这是stringlist的串联版本。

我现在使用可视化工具,因为我有D2010。我曾经使用一个名为CArray的函数,该函数将返回一个字符串数组。如果我将CArray(MyStringList)添加到watch窗口,我将能够检查字符串列表的内容。我曾经被雇来写VB6代码,我有点喜欢各种“C”函数来转换成有用的类型。用于StringList的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;

由于我使用的是BDS MMVI,所以我对这类问题使用了一种“超智能”方法,我将其用于大型xml文档。我启动了上下文文件编辑器(顺便说一下,它是用delphi编写的非常有能力的自由文本编辑器)。在调试器窗口上,只需执行FList.SaveToFile('contents.txt'),因为上下文可以监视文件修改,所以我可以看到xml文件中发生了什么

很抱歉这个“聪明”的笑话,但它确实对我有用

和平

我的两分钱:

您可以计算表达式
list\u instance\u variable.SaveToFile('temp\u file\u name.txt')
,然后在任何编辑器中检查文件的内容


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

在调试模式下,可以计算表达式(FList.Text)以查看整个内容。但是IIRC(现在无法检查)仅当您在调试期间为类型启用函数调用时。@Rudy:这仅适用于手表。在“评估和修改”窗口中,函数(和过程,例如setter)调用总是可能的。我通常有很多手表,很少使用“评估和修改”对话框。我喜欢我的值始终可见。+1您首先回答:)我也使用它,因为它免费且友好,但文件甚至可以在Delphi IDE中打开。新的可视化工具功能很好(更棒的是,您可以编写自己的自定义可视化工具!)。不过,IDE附带的默认
TStrings
可视化工具对TStrings内容有一些大小限制。