Форум: "Начинающим";
Текущий архив: 2010.08.27;
Скачать: [xml.tar.bz2];
Вниз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;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.062 c