Логин: Пароль:    Регистрация Всеми возможностями сайта можно пользоваться
только после авторизации.
   Забыли пароль?

Поиск
L



Статистика
u
Пользователи онлайн: нет
Гостей онлайн: 3
Всего онлайн: 3
Зарегистрировано юзеров: 7024
Комментариев на сайте: 656
Новый юзер: Alvinbag



Последние комментарии
c
Paulineodods прокомментировал "Урок 53 - Потоки в Delphi, (часть 1/3)":
Всем добрый день Заказывала вот такую модель смартфона на сайте https://sale-aliexpress.ru . Продавец проявил инициативу и сам отправил с помощью DHL потом еще у DHL какой то сбой прошел . так продавец еще интересовался отписывался получила я или нет. В придачу положил рыбку для наушников (чтобы провода не запутывались))) и стилус. Короче мне повезло с продавцом и покупкой. Очень [url=https://sale-aliexpress.ru] рекомендую данный сайт .
YuristFom прокомментировал "Урок 53 - Потоки в Delphi, (часть 1/3)":
[b]ЮристЪ онлайн.[/b] Наша юридическая компания [b]"ЮристЪ"[/b] профессионально занимается разрешением всех юридических вопросов на протяжении многих лет. Отличное знание российского законодательства и широкая юридическая практика позволяют нашим юристам и адвокатам добиться положительного разрешения дела даже в самых сложных случаях. Наш сайт: http://jurs.info/g/ Юридическая консультация 24 на 7 ежедневно. Телефон указан на сайте. [url=jurs.info/g]Получить юридическую консультацию прямо сейчас![/url]

Урок 52 - Исключительные ситуации

  Исключительные ситуации в Delphi встречаются постоянно. Исключительная ситуация это такая ситуация, в результате которой генерируется ошибка, и выполнение программы прерывается. Именно потому такая ситуация и называется исключительной. Например, деление на ноль - классический пример исключительной ситуации.

  Как в такой ситуации действует человек? Если он пытается что-то сделать, и это не получается - он идёт другим путём. Так же и компьютер, следующий программе, умеющей обрабатывать исключительные ситуации. Он не бросает выполнение программы, не виснет, а обходит исключительную ситуацию, выполняя альтернативный вариант фрагмента, в которой исключительная ситуация возникла.

  Возникает вопрос, почему бы не поставить проверку, например, на равенство нулю знаменателя при делении? Можно и поставить. Но во многих случаях источник исключительной ситуации далеко не так очевиден, а на все случаи жизни проверки не введёшь.

  Итак, для контроля исключительных ситуаций программист должен подготовить как основной вариант фрагмента, где возможна исключительная ситуация, так и его вариант, в котором она заведомо невозможна, или выводится информационное сообщение для пользователя.

  Вот как выглядит оператор контроля исключительных ситуаций:

	try
		//основные операторы фрагмента;
	except
		//альтернативный вариант фрагмента;
	end;
  Вначале производится попытка выполнить операторы секции try/except, содержащие основной вариант программы. При возникновении в каком-либо операторе этой секции исключительной ситуации остальные операторы секции пропускаются, и выполняется секция except/end. Если всё "проходит штатно", то секция except/end пропускается.

  Ещё один вариант оператора контроля исключительных ситуаций применяется, когда необходимо, чтобы определённый фрагмент кода выполнился в любом случае, возникла исключительная ситуация или нет:

	try
		//операторы;
	finally
		//заключительные действия;
	end;
  Основные операторы, находящиеся в секции try, могут пройти штатно, или вызвать исключительную ситуацию. Операторы заключительных действий, находящиеся в секции finally, будут выполнены в любом случае.

  Есть ещё один способ контроля исключительных ситуаций, касающийся ошибок операций ввода-вывода.
Перед участком программы, где возможны ошибки ввода-вывода (а это, по сути, все операторы ввода-вывода), ставится директива {$I-}, заставляющая компилятор не включать в код автоконтроль ошибок ввода-вывода. Таким образом, в случае ошибки ввода или вывода программа не прерывается. В конце участка с операторами ввода-вывода ставится директива, включающая автоконтроль: {$I+}. Затем анализируется результат вызова функции IOResult. Если функция IOResult (вызывается без параметров) возвращает 0, значит ошибок ввода-вывода на данном участке не было.

Вот какой пример использования директив {$I} и функции IOResult содержит справка системы Delphi:

var
	F: file of Byte;
begin
	if OpenDialog1.Execute then //Открываем диалог выбора файла
	begin
		AssignFile(F, OpenDialog1.FileName); // Открываем файл
		{$I-} //Выключаем контроль ошибок
		Reset(F);
		{$I+} //Включаем контроль ошибок
		if IOResult = 0 then //Если ошибок нет
		begin
			//Сообщение с количеством байтов
			MessageDlg(?File size in bytes: ? + IntToStr(FileSize(F)), mtInformation, [mbOk], 0);  
			CloseFile(F); // Закрываем файл
		end
			else //Иначе
				MessageDlg(?File access error?, mtWarning, [mbOk], 0); // Сообщение об ошибке
	end;
end;
Функция IOResult досталась Delphi в наследство от Turbo Pascal. Тот же самый фрагмент можно составить и с использованием оператора try. На мой взгляд, это удобнее и проще.

При работе программы под управлением Delphi, система будет сама реагировать на исключительные ситуации, мешая работе операторов обработки исключений. Чтобы проверить их действие, можно запускать программу непосредственно, сворачивая Delphi и пользуясь ярлыком, установленном на Рабочем столе. Или можно отключить реакцию системы на исключительные ситуации, тем самым давая возможность отработать специально для этого написанным фрагментам программы - нашим операторам try/except/end. Для этого откроем пункт системного меню Delphi Tools -> Debugger Options.... В появившемся окошке нужно снять галку в чекбоксе Stop on Delphi Exceptions, расположенном на вкладке Language Exceptions. Теперь система Delphi будет предоставлять вашей программе возможность самостоятельно обрабатывать исключительные ситуации, среди которых могут быть и ситуации, возникновение которых прописано специально как удобный инструмент достижения необходимых результатов.

Удачи!
Встретимся в следующем уроке!


Источник: www.thedelphi.ru
Автор: Савельев Александр
Опубликовано: 16 Июня 2013
Просмотров: 7397

Урок 51 - Динамическое создание компонентов, часть (2/2) Урок 53 - Потоки в Delphi, (часть 1/3)

Зарегистрируйтесь или авторизуйтесь, чтобы добавлять комментарии.



аватар Добавил(а): Joker1999obp [Новичок] Дата: 2013-10-23
спасибо за эту статью очень помогла в калькуляторе все ошибки убрал