![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
функция или процедура
cross © (2011-03-02 12:05:00)в приложении создается несколько экземпляров-объекта TAttrs.
TAttr = record
Name: string;
Val: string;
end;
TAttrs = class(TList<TAttr>)
end;
Для каждого нужно проверять наличие определенных атрибутов. Правильнее будет сделать функцию или процедуру.
function has_required_attrs(AAttrs: TAttrs; ARequired: array of string): Boolean;
var
I: Integer;
begin
Result := False;
for I := Low(ARequired) to High(ARequired) do
if not AAttrs.Exists(ARequired[I]) then
Exit;
Result := True;
end;
procedure chk_required_attrs(AAttrs: TAttrs; ARequired: TArray<string>);
var
I: Integer;
begin
for I := Low(ARequired) to High(ARequired) do
Assert(AAttrs.Exists(ARequired[I]),
Format('Отсутствует обязательный атрибут "%s"', [ARequired[I]]));
end;
brother (2011-03-03 11:52:00) [1]> Смотря какие записи ;)
а что именно интересует?)
_Юрий (2011-03-02 19:06:00) [2]Во первых, метод
Во вторых, ассерты могут быть отключены в финальной сборке (опциями компилера), и код с ассертами не сработает вообще.
Тут надо определиться - отрицательный результат - это штатная ситуация или исключительная.
Например, если проверка идет в цикле, и при ошибочном результате на итерации исключение ловится и цикл выполняется дальше, то исключения - плохой способ. Хотя бы с точки зрения производительности.
Если же все таки ситуация исключительная, то надо поднимать нормальное исключение, а не ассерт.
Dennis I. Komarov (2011-03-02 14:31:00) [3]
> Anatoly Podgoretsky © (02.03.11 13:21) [5]
Ну, это уже кому как...
Anatoly Podgoretsky (2011-03-02 13:21:00) [4]> Dennis I. Komarov (02.03.2011 13:14:04) [4]
Смотря какие стринги.
Dennis I. Komarov (2011-03-02 13:14:00) [5]Смотря какие записи ;)
clickmaker (2011-03-02 13:12:00) [6]а записи в стрингах? o)
Dennis I. Komarov (2011-03-02 13:05:00) [7]не нравятся мне стринги в записях...
И. Павел (2011-03-02 12:10:00) [8]has_required_attrs( AAttrs: TAttrs
Я бы сделал метод для TAttrs, проверяющий нужное свойство. Принимал бы он массив свойств, а возвращал - boolean (т.е. был функцией). Это бы позволило обрабатывать его результат снаружи, а не внутри самого метода.