Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2011.06.12;
Скачать: CL | DM;

Вниз

функция или процедура   Найти похожие ветки 

 
cross   (2011-03-02 12:05) [0]

в приложении создается несколько экземпляров-объекта 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;


 
И. Павел ©   (2011-03-02 12:10) [1]

has_required_attrs(AAttrs: TAttrs

Я бы сделал метод для TAttrs, проверяющий нужное свойство. Принимал бы он массив свойств, а возвращал - boolean (т.е. был функцией). Это бы позволило обрабатывать его результат снаружи, а не внутри самого метода.


 
Dennis I. Komarov ©   (2011-03-02 13:05) [2]

не нравятся мне стринги в записях...


 
clickmaker ©   (2011-03-02 13:12) [3]

а записи в стрингах? o)


 
Dennis I. Komarov ©   (2011-03-02 13:14) [4]

Смотря какие записи ;)


 
Anatoly Podgoretsky ©   (2011-03-02 13:21) [5]

> Dennis I. Komarov  (02.03.2011 13:14:04)  [4]

Смотря какие стринги.


 
Dennis I. Komarov ©   (2011-03-02 14:31) [6]


> Anatoly Podgoretsky ©   (02.03.11 13:21) [5]

Ну, это уже кому как...


 
_Юрий   (2011-03-02 19:06) [7]

Во первых, метод
Во вторых, ассерты могут быть отключены в финальной сборке (опциями компилера), и код с ассертами не сработает вообще.
Тут надо определиться - отрицательный результат - это штатная ситуация или исключительная.
Например, если проверка идет в цикле, и при ошибочном результате на итерации исключение ловится и цикл выполняется дальше, то исключения - плохой способ. Хотя бы с точки зрения производительности.
Если же все таки ситуация исключительная, то надо поднимать нормальное исключение, а не ассерт.


 
brother ©   (2011-03-03 11:52) [8]

> Смотря какие записи ;)

а что именно интересует?)



Страницы: 1 вся ветка

Текущий архив: 2011.06.12;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.009 c
15-1298382163
fs
2011-02-22 16:42
2011.06.12
восстановить данные удаленного раздела флешки


1-1256627612
Lionel
2009-10-27 10:13
2011.06.12
Вывод числа прописью в компонент Memo в FastReport


2-1299073367
pest
2011-03-02 16:42
2011.06.12
MySQL + Proxy + Delphi (работа с MySQL серевером через прокси)


2-1299245500
rodionov_uv
2011-03-04 16:31
2011.06.12
Имя активного окна


1-1256622814
Wadimka
2009-10-27 08:53
2011.06.12
Помогите реализовать алгоритм по поиску возможных значений