![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
использование Assert
LDV © (2013-01-10 17:26:00)есть класс:
TControlGroup = class
private
Fcb_SortBy: TComboBox;
Frb_Asc: TRadioButton;
Frb_Desc: TRadioButton;
public
constructor Create(const cb_SortBy: TComboBox; const rb_Asc,
rb_Desc: TRadioButton);
property cb_SortBy: TComboBox read Fcb_SortBy;
property cb_Asc: TRadioButton read Frb_Asc;
property cb_Desc: TRadioButton read Frb_Desc;
end;
в программе создается несколько объектов этого класа и кладутся в ObjectList. Есть такой код:
var
ControlGroup: TControlGroup;
begin
for I := 0 to ControlGroups.Count - 1 do
begin
ControlGroup := TControlGroup(FControlGroups[I]); // FControlGroups типа TObjectList
Assert(ControlGroup <> nil);
Assert(ControlGroup.cb_SortBy <> nil);
Assert(ControlGroup.rb_Asc <> nil);
Assert(ControlGroup.rbDesc <> nil);
// ...
end;
end;
Нужны ли здесь Assert'ы
O'ShinW (2013-01-10 17:42:00) [1]оно и не проконтролируется
TCL = class
private
B: TButton;
public
constructor Create(AB: TButton);
property cb: TButton read B;
end;
TForm1 = class(TForm)
Button1: TButton;
procedure Button1Click(Sender: TObject);
private { Private declarations }
public { Public declarations }
CL: TCL;
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
begin
CL := TCL.Create(Button1);
FreeAndNil(Button1);
if CL.cb = nil then
ShowMessage('Не выскочит')
end;
constructor TCL.Create(AB: TButton);
begin
B := AB;
end;
MBo (2013-01-10 17:34:00) [2]Assert'ы нужны программисту при отладке.
В данном месте кода их польза сомнительна, т.к. наличие контролов нужно контролировать при создании объекта группы, а объекта группы - при добавлении в список
Ega23 (2013-01-10 17:31:00) [3]
> Нужны ли здесь Assert'ы
Assert-ы нужны для debug-версии, для release - Assertions Off