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

Вниз

TStrings.Assign   Найти похожие ветки 

 
00110011   (2010-02-17 13:24) [0]

в конструктор класса в качестве параметра передается TStrings (может быть nil). Как правильно организовать проверку и присвоение параметра конструктора полю класса.

пока что сделал так:


constructor TESyntaxItem.Create(ATypeID: Integer; AName, AMsg: string;
 ADetailed: TStrings);
begin
 with FESyntaxInfo do
 begin
   TypeID := ATypeID;
   Name := AName;
   Msg := AMsg;
   Detailed := TStringList.Create;
   if ADetailed <> nil then
     Detailed.Assign(ADetailed);
 end;
end;


может сначала надо проверить не является ли параметр ADetailed - nil, а потом уже делать Create и Assign?


 
Юрий Зотов ©   (2010-02-17 13:42) [1]


> может сначала надо проверить


Естественно. Потому что после Create проверка уже не имеет никакого смысла - NIL уже ТОЧНО не будет.

Но надо подумать о логике. Если передача NIL по логике работы программы недопустима, то надо не создавать, а возбуждать ошибку.


 
Ega23 ©   (2010-02-17 14:06) [2]


> NIL уже ТОЧНО не будет.


С чего это????

constructor TESyntaxItem.Create(ATypeID: Integer; AName, AMsg: string;
ADetailed: TStrings);
begin
with FESyntaxInfo do
begin
  TypeID := ATypeID;
  Name := AName;
  Msg := AMsg;
  Detailed := TStringList.Create;
  if ADetailed <> nil then
    Detailed.Assign(ADetailed);
end;
end;

var
 List : TStringList;
begin
 List := nil;
 with TESyntaxItem.Create(0, "", List) do
   Free;
end;


 
Игорь Шевченко ©   (2010-02-17 14:29) [3]


> может сначала надо проверить не является ли параметр ADetailed
> - nil, а потом уже делать Create и Assign?


Не надо. Если параметр nil, то присваивать нечего, а создавать все равно надо, Detailed в созданном объекте будет пустой - ну и что ? Точнее, от задачи зависит, тут телепатор бессилен.



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

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

Наверх




Память: 0.47 MB
Время: 0.149 c
2-1269581230
Игорь Р.
2010-03-26 08:27
2010.08.27
Opera и Delphi


9-1184586954
Shurik_
2007-07-16 15:55
2010.08.27
Как повернуть текс в OenGL на любой угол


3-1235071724
DmitryG.
2009-02-19 22:28
2010.08.27
Пробемы с ADO


15-1275164983
Юрий
2010-05-30 00:29
2010.08.27
С днем рождения ! 30 мая 2010 воскресенье


4-1234764051
Андрей_1
2009-02-16 09:00
2010.08.27
Управление внешним устройством