我想在调试应用程序时显示TStringList的全部内容。 相反,我只是得到指针。 Flist仅显示地址。
答案 0 :(得分:7)
如果您使用的是Delphi 2010或更高版本,调试器可以使用debug visualizers进行此操作。
对于旧版本,您可以在Watch窗口中或使用OutputDebugString转储Text属性的内容,但这很难阅读。您可以为列表中的每个元素设置监视,但这仅适用于非常短的列表。
我可能会使用像CodeSite或SmartInspect之类的外部日志记录应用程序,它允许您在一次调用中转储TStringList的内容。
答案 1 :(得分:4)
检查Text属性。它是stringlist的连接版本。
答案 2 :(得分:3)
由于我正在使用BDS MMVI,我正在使用“超聪明的智能”方法来解决这类问题,我将它用于大型xml文档。我启动上下文文件编辑器(顺便说一下,在delphi中编写非常强大的自由文本编辑器)。在调试器窗口上,只需执行FList.SaveToFile('contents.txt'),因为上下文可以监视文件修改,我可以看到我的xml文件中发生了什么。
对于“聪明”的笑话感到抱歉,但这对我有用。
和平
答案 3 :(得分: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;
答案 4 :(得分:2)
我的两分钱:
您可以评估表达式list_instance_variable.SaveToFile('temp_file_name.txt')
,然后在任何编辑器中检查文件的内容。
为此,您必须在代码中的任何位置使用此函数并关闭优化(至少在Delphi 7中),否则链接器将删除SaveToFile
的目标代码。