2016-03-28 21 views
0

Delphi IDEを使用してブレークポイントを保存するにはどうすればよいですか?私は.dskファイルに設定を保存する方法しか知りません。私は、Delphi 2007Delphi IDEを使用してブレークポイントを保存するには?

+1

IDEの設定は、.DSKファイルに保存されます。私は*ツール - >オプション - >環境オプション - >自動保存オプション - >プロジェクトデスクトップ*をオンにして永久ブックマーク(プロジェクトの保存時に設定されたブックマークは、プロジェクトが再オープンされたときにそこに保存されます) –

答えて

2

私はあなたがブレークポイントがそこに格納されていることを認識しているが、いくつかの理由のためにそれらを自分で保存したい.DSKファイルのあなたの言及からと仮定していますを使用しています

。もちろん、保存されたブレークポイントのリストを取得する最も簡単な方法は、.Dskファイルから読み込むだけですが、ディスクに保存されていることが前提です。通常、プロジェクトファイルを閉じるときに が発生します。

独自のIDEプラグインを作成して、現在設定されているブレークポイント のリストを取得し、任意の方法で保存することができます。下のミニマリストの例は、これを行う方法を示しています - 詳細はGetBreakpointsメソッドを参照してください。これをIDEで使用するには、 DesignIde.Dcpが必要な新しいパッケージを作成します。 .Bplファイルの出力ディレクトリが、 サードパーティの.Bplが保存されているか、パス上にあるかどうかを確認してください。 IDEのメニューからInstall packagesのIDEパッケージに パッケージをインストールすることができます。

あなたが見ることができるように、それはIOTADebuggerServicesインターフェイスを取得するためにToolsAPI単位でBorlandIDEServicesインターフェイスを使用して動作し、そのSourceBkptsリストを反復することを使用し、そのリスト内の各IOTASourceBreakpointのプロパティの数を節約できます。あなたはまた、address breakpointsのリストを取得し、同様の方法でそれらを保存することができます

  • こと

    は注意してください。

  • ToolsAPIのブレークポイントインターフェイスには、プロパティセッターとゲッターがあります。したがって、既存のブレークポイントをコード内で変更したり、新しいブレークポイントを作成したりすることができます。それはあなたが* IDE経由*それらを格納する方法であるので

コード

uses 
    Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, 
    StdCtrls, ToolsApi; 

type 
    TBreakpointSaveForm = class(TForm) 
    Memo1: TMemo; 
    btnGetBreakpoints: TButton; 
    procedure btnGetBreakpointsClick(Sender: TObject); 
    procedure FormCreate(Sender: TObject); 
    private 
    protected 
    public 
    procedure GetBreakpoints; 
    end; 

var 
    BreakpointSaveForm: TBreakpointSaveForm; 

procedure Register; 

implementation 

{$R *.DFM} 

procedure TBreakpointSaveForm.GetBreakpoints; 
var 
    DebugSvcs: IOTADebuggerServices; 

    procedure SaveBreakpoint(BreakPoint : IOTASourceBreakpoint); 
    begin 
    Memo1.Lines.Add('File:  ' + Breakpoint.FileName); 
    Memo1.Lines.Add('LineNo: ' + IntToStr(Breakpoint.LineNumber)); 
    Memo1.Lines.Add('Passcount: ' + IntToStr(Breakpoint.Passcount)); 
    Memo1.Lines.Add(''); 
    end; 

    procedure SaveBreakpoints; 
    var 
    i : Integer; 
    BreakPoint : IOTASourceBreakpoint; 
    begin 
    Memo1.Lines.Add('Source breakpoint count : '+ IntToStr(DebugSvcs.GetSourceBkptCount)); 
    for i := 0 to DebugSvcs.GetSourceBkptCount - 1 do begin 
     Breakpoint := DebugSvcs.SourceBkpts[i]; 
     SaveBreakpoint(Breakpoint); 
    end; 
    end; 

begin 
    if not Supports(BorlandIDEServices, IOTADebuggerServices, DebugSvcs) then begin 
    ShowMessage('Failed to get IOTADebuggerServices interface'); 
    exit; 
    end; 
    Memo1.Lines.Clear; 
    SaveBreakpoints; 
end; 

procedure Register; 
begin 
end; 

initialization 
    BreakpointSaveForm := TBreakpointSaveForm.Create(Application); 
    BreakpointSaveForm.Show; 

finalization 

    if Assigned(BreakpointSaveForm) then 
    BreakpointSaveForm.Free; 
end. 

procedure TBreakpointSaveForm.btnGetBreakpointsClick(Sender: TObject); 
begin 
    GetBreakpoints; 
end; 
+0

ありがとうございました –

関連する問題