Подтвердить что ты не робот

Как определить точку останова при изменении значения поля объекта?

В качестве примера, учитывая приведенный ниже фрагмент кода, я хотел бы определить точку останова, которая срабатывает всякий раз, когда изменяется значение поля объекта() и, при необходимости, разбивается на условие (в этом случае False или True).

type
  TForm1 = class(TForm)
    EnableButton: TButton;
    DisableButton: TButton;
    procedure EnableButtonClick(Sender: TObject);
    procedure DisableButtonClick(Sender: TObject);
  private
    FValue: Boolean; // <== Would like to define a breakpoint here whenever FValue changes.
  public
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.DisableButtonClick(Sender: TObject);
begin
  FValue := False;
end;

procedure TForm1.EnableButtonClick(Sender: TObject);
begin
  FValue := True;
end;
4b9b3361

Ответ 1

Запустите приложение под отладчиком,

выберите "Выполнить" из меню IDE, затем выберите "Добавить точку останова" в самом низу, затем "Точка останова данных...".

введите "Form1.FValue" в качестве ввода в поле "Адрес:". Вы также можете установить свое условие в том же диалоговом окне.

Ответ 2

Дополнительная информация благодаря ответу Sertac и комментариям Дэвида.

Можно определить точку останова на основе изменений в элементе массива с условием.

В этом случае точка останова данных определяется следующим образом:

Form1.FBooleans[0] = True

Вывод кода:

type
  TBooleanArray = array of Boolean;

  TForm1 = class(TForm)
    EnableButton: TButton;
    DisableButton: TButton;
    procedure EnableButtonClick(Sender: TObject);
    procedure DisableButtonClick(Sender: TObject);
  private
    FBooleans: TBooleanArray; // Breakpoint defined here with the condition
  public
    constructor Create(AOwner: TComponent); override;
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

constructor TForm1.Create(AOwner: TComponent);
var
  AIndex: Integer;
begin
  inherited;
  SetLength(FBooleans, 3);
  for AIndex := 0 to Length(FBooleans) - 1 do
  begin
    FBooleans[AIndex] := (AIndex mod 2) = 1;
  end;
end;

procedure TForm1.DisableButtonClick(Sender: TObject);
begin
  FBooleans[0] := False;
end;

procedure TForm1.EnableButtonClick(Sender: TObject);
begin
  FBooleans[0] := True; // Beakpoint stops here on condition.
end;