How can I show the contents of a TStringList in th

2019-04-26 17:51发布

I want to display the entire content of a TStringList while debugging the application. Instead I just get pointers. The Flist is showing only the address.

5条回答
\"骚年 ilove
2楼-- · 2019-04-26 18:29

Inspect the Text property. It's the concatenated version of the stringlist.

查看更多
迷人小祖宗
3楼-- · 2019-04-26 18:32

My two cents:

You can evaluate expression list_instance_variable.SaveToFile('temp_file_name.txt') and then examine content of the file in any editor.

To do that you must use this function anywhere in code and turn off optimization (at least in Delphi 7), otherwise object code of SaveToFile would be removed by the linker.

查看更多
在下西门庆
4楼-- · 2019-04-26 18:41

I use the visualizers now that I have D2010. I used to use a function I called CArray that would return an array of strings. If I added CArray(MyStringList) to the watch window, I would be able to examine the contents of the string list. I used to be employed to write VB6 code and I sort of liked the various 'C' functions for converting to a useful type. CArray for stringlists and CArray for ClientDataset fields were mostly useful for debugging.

  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;
查看更多
男人必须洒脱
5楼-- · 2019-04-26 18:49

If you are using Delphi 2010 or later, the debugger allows for this using debug visualizers.

For older versions, you can dump the contents of the Text property in the Watch window or using OutputDebugString, but that's difficult to read. You could set up watches for each element of the list, but that's only practical for very short lists.

I would probably use an external logging app like CodeSite or SmartInspect that let you dump the contents of a TStringList in a single call.

查看更多
做个烂人
6楼-- · 2019-04-26 18:49

Since i´m using BDS MMVI, i´m using an "ultra clever smart" method for that kind issue, i use it for large xml documents. I start context file editor (very capable free text editor writen in delphi by the way). On the debugger window a just do a FList.SaveToFile('contents.txt'), since context can monitor file modifications i can see whats happening in my xml files.

Sorry for the "clever" joke but it does work for me.

Peace

查看更多
登录 后发表回答