2011-08-15 20 views
6

アプリケーションのデバッグ中にTStringListの内容全体を表示したいとします。 代わりにポインタを取得するだけです。 Flistはアドレスだけを表示しています。TStringListの内容をデバッガに表示するにはどうすればよいですか?

+1

デバッグモードでは、式(FList.Text)を評価してコンテンツ全体を表示することができます。 – mjn

+0

しかし、IIRC(現時点ではチェックできません)は、デバッグ中にタイプの関数呼び出しを有効にした場合のみです。 –

+0

@Rudy:これは腕時計にのみ当てはまります。 「評価および変更」ウインドウ機能(およびセッターなどの手順)では、常に呼び出しが可能である。 – dummzeuch

答えて

2

私はD2010を持っているので、私はビジュアライザーを使用します。私は、文字列の配列を返すCArrayという関数を使用していました。ウォッチウィンドウにCArray(MyStringList)を追加すると、文字列リストの内容を調べることができます。私はVB6コードを書くのに慣れていましたが、役に立つタイプに変換するためのさまざまな 'C'関数が好きでした。文字列リストのCArrayとClientDataSetフィールドのCArrayは、ほとんどの場合デバッグに役立ちました。 BDS MMVIを使用して - 私以来

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; 
+0

新しいビジュアライザー機能は素晴らしいです(独自のカスタムビジュアライザーを書くことができます)。しかし、IDEに同梱されているデフォルトの 'TStrings'ビジュアライザーには、TStringsのコンテンツにいくつかのサイズ制限があります。 –

7

Delphi 2010以降を使用している場合、デバッガではdebug visualizersを使用してこれを実行できます。

古いバージョンの場合、[ウォッチ]ウィンドウまたは[OutputDebugString]を使用してTextプロパティの内容をダンプできますが、読みにくいです。リストの要素ごとに時計を設定することができますが、これは非常に短いリストの場合にのみ実用的です。

おそらく、CodeSiteまたはSmartInspectのような外部ロギングアプリケーションを使用して、TStringListの内容を1回の呼び出しでダンプできるようにします。

4

Textプロパティを検査します。これは、文字列リストの連結バージョンです。

3

、その種の問題のための「超賢いスマート」メソッドを使用して - 私は、私は大規模なXML文書のためにそれを使用。コンテキストファイルエディタを起動します(途中で自由にテキストエディタを書くことができます)。コンテキストはファイルの変更を監視でき、私のXMLファイルで何が起こっているのかを見ることができるので、デバッガウィンドウでは単にFList.SaveToFile( 'contents.txt')を実行します。

「巧妙な」冗談には申し訳ありませんが、それは私のために働きます。

平和

+0

+1あなたは最初に答える:)私は[ConTEXT](http://www.contexteditor.org/)を使いました。なぜなら、それは自由で友好的ですが、Delphi IDEでもファイルを開くことができるからです。 – ThinkJet

2

私の2セント:

あなたは表現list_instance_variable.SaveToFile('temp_file_name.txt')を評価し、任意のエディタでファイルの内容を調べることができます。

これを行うには、コード内の任意の場所でこの関数を使用し、最適化をオフにする必要があります。それ以外の場合、オブジェクトコードSaveToFileはリンカーによって削除されます。

関連する問題