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

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

Грамотная обработка ошибки [D6, Win2k]


Страницы:   1 2

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


Страницы:   1 2

Наверх

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