![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Грамотная обработка ошибки [D6, Win2k]
Neo Trinitron © (2006-05-16 18:07:00)В конструкторе формы открываю набор данных. Как сделать так чтобы в случае ошибки набора данных выдалось сообщение об ошибке и форма не создалась?
Leonid Troyanovsky (2006-05-16 20:26:00) [21]
> Neo Trinitron © (16.05.06 19:44) [11]
> Извините меня неграмотного, но в конструктор это как?
RTFM: Delphi help. Overriding the constructor.
> Всегда думал что это метод OnCreate...
А это свойство, называемое событием.
--
Regards, LVT.
Neo Trinitron (2006-05-16 19:44:00) [22]Извините меня неграмотного, но в конструктор это как? Всегда думал что это метод OnCreate...
Algol (2006-05-16 19:28:00) [23]Если это не кретично, то лучше код перенести в конструктор, тогда проблем с эксепшенами не будет.
Neo Trinitron (2006-05-16 19:19:00) [24]в OnCreate
Algol (2006-05-16 19:18:00) [25]Сравните фразы
> Речь идёт о OnCreate...
и
> в конструкторе формы пишу
Определитесь наконец, где находится ваш код? В конструкторе или в OnCreate?
Neo Trinitron (2006-05-16 19:15:00) [26]Речь идёт о OnCreate...
Algol (2006-05-16 19:11:00) [27]
> не всегда. только если function TCustomForm.HandleCreateException:
> Boolean; dynamic; вернет False;
Речь идет о конструкторе а не о OnCreate
Neo Trinitron (2006-05-16 18:45:00) [28]в конструкторе формы пишу
try
Query1.Open;
except
Raise Exception.Create('Ошибка');
end;
создаю форму так:
try
Form1:=TForm1.Create(Self);
Form1.ShowModal;
finally
Form1.Free;
end;
Форма всё равно создаётся...
jack128 (2006-05-16 18:40:00) [29]Algol (16.05.06 18:31) [3]
Но если вызвать эксепшн, то автоматически вызовется деструктор, который уничтожит недосозданный объект.
не всегда. только если function TCustomForm.HandleCreateException: Boolean; dynamic; вернет False;
Algol (2006-05-16 18:31:00) [30]
> В конструкторе формы открываю набор данных. Как сделать
> так чтобы в случае ошибки набора данных выдалось сообщение
> об ошибке и форма не создалась?
Дак внутри конструктора форма уже создана. Сделать что бы она совсем не создалась - не получится. Но если вызвать эксепшн, то автоматически вызовется деструктор, который уничтожит недосозданный объект.
MetalFan (2006-05-16 18:26:00) [31]в OnCreate формы
raise Exeption.create('Failed!')
при создании формы
try
FForm1 := TForm1.create(nil);
try
....
finally
FForm1.free;
end;
except
on E: Exception ShowMessage(E.Message)
end
видимо както так
Алхимик (2006-05-16 18:14:00) [32]try
<Критичное деяние>
except
<Обработка критичного деяния>
end