あまり。監視を設定するためにループする方法や、コードを設定せずに一度に複数のデータベース フィールドに監視を設定する方法はありません。
Delphi 2010 以降では、カスタム ビューを提供する独自のデバッガ ビジュアライザ( のセクションを参照External-Viewer Visualizers
)を作成できますが、これはかなり大規模な作業になります。(フォルダにサンプルが用意されてい$(BDS)\Source\Visualizers
ます。外部ビューアーはStringListViewer
です。)
永続フィールドを作成してウォッチ ウィンドウに簡単に追加できます (テーブル コンポーネントをダブルクリックして、Add Field...
またはを選択しますAdd All Fields
)。その後、それらを として参照できますdatamodule.tablefield.AsInteger
。
または、フィールドを個別のローカル変数に割り当てて、代わりにそれらを監視することもできます):
var
AField: TField;
AnotherField: TField;
begin
AField := dm.TableA.FieldByName('FieldA');
AnotherField := dm.TableA.FieldByName('FieldB');
...
end;
次に、AField.AsInteger
代わりに時計をオンにします。これにより、時計の設定が少し速くなります。
(デバッグ以外の目的で、ローカルTField
変数を宣言してループの前に設定すると、 を使用してフィールドの定数ルックアップを削除することで、コードをかなり高速化できますFieldByName
。)
もう 1 つの可能性は、ループで割り当てるローカル変数を宣言して使用することです。その後、そのローカル変数を監視できます。
var
FieldAValue: Integer;
FieldA: TField;
begin
FieldA := dm.TableA.FieldByName('FieldA');
while not dm.TableA.Eof do
begin
FieldAValue := FieldA.AsInteger;
// Use FieldAValue here instead of the Field.AsInteger, so the
// compiler doesn't eliminate it. You can add a watch by right-clicking
// FieldAValue and choosing Debug->Add watch at cursor or Ctrl+F5.
TableA.Next;
end;
end;