Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

функция или процедура


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 (т.е. был функцией). Это бы позволило обрабатывать его результат снаружи, а не внутри самого метода.


Наверх

Титульная страница Поиск, карта сайта Написать письмо