Как определить точку останова при изменении значения поля объекта?
В качестве примера, учитывая приведенный ниже фрагмент кода, я хотел бы определить точку останова, которая срабатывает всякий раз, когда изменяется значение поля объекта() и, при необходимости, разбивается на условие (в этом случае 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;
Ответы
Ответ 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;