Напишите приложение Delphi, которое не приводит к сбою при распределении ресурсов.
Ключевым моментом является обеспечение того, чтобы при выделении ресурсов в программе даже в случае сбоя программа
Программа также должна иметь возможность освобождать занятые ресурсы.
Файлы, память, ресурсы и объекты WINDOWS — вот некоторые из них, которые необходимо добавлять время от времени.
Позаботьтесь о том, чтобы ресурсы были освобождены. В следующем примере кода управления событиями
Сначала выделяется память, а затем возникает ошибка, из-за которой она больше не выполняется.
Код программы для освобождения памяти:
ПРОЦЕДУРАФорма1. ButtonlClick(Отправитель:Объект
);
Вар
Указатель1: Указатель;
Целое1,Числоноль:Целое;
начинать
Число ноль:К0;
GetMem(Pointer1, 1024); {Выделить 1 КБ ресурсов памяти}
Integer1: Κ5divNumzero {Это предложение порождает ошибку деления;
ошибка}
FreeMem (Pointer1, 1024 {Это предложение не будет выполнено здесь);
ОК} конец;
Хотя большинство ошибок не столь очевидны, приведенный выше пример содержит важные сведения.
Один момент: при возникновении ошибки выполнение программы выскакивает из модуля, и последующие ресурсы освобождаются.
Программный код больше не выполняется. Чтобы гарантировать, что FreeMem в приведенном выше примере может
Чтобы освободить ресурсы памяти, занимаемые GetMem, код необходимо поместить в ресурс
модуль защиты.
Вот формат кривого модуля защиты ресурсов:
{Распределение ресурсов}
пытаться
{Использование ресурсов}
окончательно
{Освобождение ресурсов}
конец;
Вышеописанная попытка. . . Модульfinally позволяет программе всегда выполнять fi.
??наконец любой программный код в разделе, даже если есть ошибка в защищаемом модуле
произведено в. Если фрагмент кода в разделе try вызывает ошибку при выполнении, выполните
Строка перейдет непосредственно к разделу Final, если во время выполнения не возникнет ошибок;
Программы выполняются в обычном порядке.
В следующем примере кода управления событиями сначала выделяется память, а затем
Произошла ошибка, но программный код, освободивший память, всё равно выполнился:
ПроцедураTForm1. Button1Click(Отправитель:Объект
);
Вар
Указатель1: Указатель;
Целое1,Числоноль:Целое;
начинать
Число ноль:К0;
GetMem(Pointer1, 1024); {Выделить 1 КБ ресурсов памяти}
пытаться
Integer1: Κ5divNumzero {Это предложение порождает ошибку деления;
ошибка}
окончательно
FreeMem(Pointer1,1024);{Здесь это предложение все равно будет выполнено
ХОРОШО}
конец;
конец;
Как гарантировать, что программа высвобождает используемые ресурсы, является важным вопросом в программировании.
Это очень важный вопрос, который необходимо практиковать и уделять ему внимание во время программирования.