9

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

4

5 に答える 5

7

Delphi 2010 以降を使用している場合、デバッガーはデバッグ ビジュアライザーを使用してこれを許可します。

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

おそらく、1 回の呼び出しで TStringList の内容をダンプできるCodeSiteSmartInspectなどの外部ログ アプリを使用するでしょう。

于 2011-08-15T17:01:44.937 に答える
5

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

于 2011-08-15T17:02:56.703 に答える
3

私はBDS MMVIを使用しているので、その種の問題には「超賢いスマート」メソッドを使用しています。これを大きなxmlドキュメントに使用しています。コンテキスト ファイル エディターを起動します (ちなみに Delphi で書かれた非常に有能なフリー テキスト エディター)。デバッガー ウィンドウで FList.SaveToFile('contents.txt') を実行するだけです。コンテキストはファイルの変更を監視できるため、xml ファイルで何が起こっているかを確認できます。

「賢い」冗談で申し訳ありませんが、私にはうまくいきます。

平和

于 2011-08-16T11:38:46.777 に答える
2

私の2セント:

式を評価list_instance_variable.SaveToFile('temp_file_name.txt')してから、任意のエディターでファイルの内容を調べることができます。

そのためには、コード内の任意の場所でこの関数を使用し、最適化をオフにする必要があります(少なくとも Delphi 7 では)。そうしないと、オブジェクト コードがSaveToFileリンカによって削除されます。

于 2011-08-16T13:03:03.877 に答える
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 に答える