<?xml version="1.0"?>
<?xml-stylesheet type="text/css" href="https://gsbelarus.com:80/gs/wiki/skins/common/feed.css?303"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ru">
		<id>https://gsbelarus.com:80/gs/wiki/index.php?action=history&amp;feed=atom&amp;title=%D0%9F%D1%80%D0%B0%D0%B2%D0%B8%D0%BB%D0%B0_%D1%80%D0%B0%D0%B1%D0%BE%D1%82%D1%8B_%D1%81_%D1%80%D0%B5%D1%81%D1%83%D1%80%D1%81%D0%B0%D0%BC%D0%B8</id>
		<title>Правила работы с ресурсами - История изменений</title>
		<link rel="self" type="application/atom+xml" href="https://gsbelarus.com:80/gs/wiki/index.php?action=history&amp;feed=atom&amp;title=%D0%9F%D1%80%D0%B0%D0%B2%D0%B8%D0%BB%D0%B0_%D1%80%D0%B0%D0%B1%D0%BE%D1%82%D1%8B_%D1%81_%D1%80%D0%B5%D1%81%D1%83%D1%80%D1%81%D0%B0%D0%BC%D0%B8"/>
		<link rel="alternate" type="text/html" href="https://gsbelarus.com:80/gs/wiki/index.php?title=%D0%9F%D1%80%D0%B0%D0%B2%D0%B8%D0%BB%D0%B0_%D1%80%D0%B0%D0%B1%D0%BE%D1%82%D1%8B_%D1%81_%D1%80%D0%B5%D1%81%D1%83%D1%80%D1%81%D0%B0%D0%BC%D0%B8&amp;action=history"/>
		<updated>2026-07-16T23:56:02Z</updated>
		<subtitle>История изменений этой страницы в вики</subtitle>
		<generator>MediaWiki 1.19.16</generator>

	<entry>
		<id>https://gsbelarus.com:80/gs/wiki/index.php?title=%D0%9F%D1%80%D0%B0%D0%B2%D0%B8%D0%BB%D0%B0_%D1%80%D0%B0%D0%B1%D0%BE%D1%82%D1%8B_%D1%81_%D1%80%D0%B5%D1%81%D1%83%D1%80%D1%81%D0%B0%D0%BC%D0%B8&amp;diff=2102&amp;oldid=prev</id>
		<title>SYSDBA в 13:31, 7 сентября 2007</title>
		<link rel="alternate" type="text/html" href="https://gsbelarus.com:80/gs/wiki/index.php?title=%D0%9F%D1%80%D0%B0%D0%B2%D0%B8%D0%BB%D0%B0_%D1%80%D0%B0%D0%B1%D0%BE%D1%82%D1%8B_%D1%81_%D1%80%D0%B5%D1%81%D1%83%D1%80%D1%81%D0%B0%D0%BC%D0%B8&amp;diff=2102&amp;oldid=prev"/>
				<updated>2007-09-07T13:31:21Z</updated>
		
		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Новая страница&lt;/b&gt;&lt;/p&gt;&lt;div&gt;Блоки динамически выделяемой памяти, дескрипторы файлов, логические кисточки Windows и т.п. все это входит в понятие ресурсы. Экземпляры классов также являются ресурсами, так как, во-первых, создание экземпляра класса всегда сопряжено с выделением блока памяти и, во-вторых, класс сам может использовать (выделять в конструкторе) блоки памяти, файлы, таймеры и т.п. Приложение создает (выделяет) ресурсы по мере необходимости, использует их и затем освобождает. Правильная работа с ресурсами — ключ к построению надежно работающих оптимизированных программ. &lt;br /&gt;
&lt;br /&gt;
=== Использование конструкции try finally ===&lt;br /&gt;
&lt;br /&gt;
Если ресурс выделяется, используется и высвобождается в пределах одного блока, то обязательно использование следующей конструкции:&lt;br /&gt;
	&lt;br /&gt;
 { allocating resource }&lt;br /&gt;
 try&lt;br /&gt;
   { using resource }&lt;br /&gt;
 finally&lt;br /&gt;
   { free resource }&lt;br /&gt;
 end;&lt;br /&gt;
	&lt;br /&gt;
Это гарантирует, что ресурс будет освобожден даже если при его использовании возникла исключительная ситуация.&lt;br /&gt;
	&lt;br /&gt;
=== Удаление ресурсов в деструкторе класса ===&lt;br /&gt;
&lt;br /&gt;
Если ресурс создается в конструкторе класса, то он обязательно должен удаляться в деструкторе. Могут не удаляться непосредственно  ресурсы, высвобождение которых возлагается на объект владелец (пример: в библиотеке VCL при создании большинства объектов указывается объект владелец (owner), при удалении которого удаляются также и все связанные с ним ресурсы).&lt;br /&gt;
	&lt;br /&gt;
 constructor MyControl.Create(AnOwner: TComponent);&lt;br /&gt;
 begin&lt;br /&gt;
   inherited Create(AnOwner);&lt;br /&gt;
   Timer := TTimer.Create(Self);&lt;br /&gt;
   List := TList.Create;&lt;br /&gt;
 end;&lt;br /&gt;
 	&lt;br /&gt;
 destructor MyControl.Destroy;&lt;br /&gt;
 begin&lt;br /&gt;
   List.Free;&lt;br /&gt;
   inherited Destroy;&lt;br /&gt;
 end;&lt;br /&gt;
	&lt;br /&gt;
Если ресурс выделяется в одном из методов класса (например, в ответ на некоторое событие), используется и удаляется в других методах, то удаление ресурса обязательно должно дублироваться в деструкторе (с обязательной проверкой на действительность дескриптора ресурса).&lt;br /&gt;
	&lt;br /&gt;
 procedure WMLButtonDown;&lt;br /&gt;
 begin&lt;br /&gt;
   ...&lt;br /&gt;
   { alloc resource }&lt;br /&gt;
   ...&lt;br /&gt;
 end;&lt;br /&gt;
 &lt;br /&gt;
 procedure WMMouseMove;&lt;br /&gt;
 begin&lt;br /&gt;
   ...&lt;br /&gt;
   { use resource }&lt;br /&gt;
   ...&lt;br /&gt;
 end;&lt;br /&gt;
 &lt;br /&gt;
 procedure WMLButtonUp;&lt;br /&gt;
 begin&lt;br /&gt;
   ...&lt;br /&gt;
   { free resource }&lt;br /&gt;
   ...&lt;br /&gt;
 end;&lt;br /&gt;
 	&lt;br /&gt;
 destructor Destroy;&lt;br /&gt;
 begin&lt;br /&gt;
   ...&lt;br /&gt;
   if Assigned(Resource) then&lt;br /&gt;
     { free resource }&lt;br /&gt;
   ... &lt;br /&gt;
 end;&lt;br /&gt;
	&lt;br /&gt;
Ресурсы создаются только по необходимости и удаляются сразу же после окончания их использования. Отсюда следует, что в конструкторе класса создаются только те ресурсы, которые необходимы на протяжении всего времени жизни экземпляра данного класса. Допускается не удалять экземпляры классов, которые необходимы лишь часть времени жизни объекта-владельца и которые могут быть переведены в активное/неактивное состояние (enabled/disabled). Например, таймер можно использовать следующим образом:&lt;br /&gt;
	&lt;br /&gt;
 constructor MyControl.Create(AnOwner: Tcomponent);&lt;br /&gt;
 begin&lt;br /&gt;
   inherited Create(AnOwner);&lt;br /&gt;
   Timer := TTimer.Create;&lt;br /&gt;
   Timer.Enabled := False;&lt;br /&gt;
   ...&lt;br /&gt;
 end;&lt;br /&gt;
 &lt;br /&gt;
 destructor MyControl.Destroy;&lt;br /&gt;
 begin&lt;br /&gt;
   Timer.Free;&lt;br /&gt;
   ...&lt;br /&gt;
   inherited Destroy;&lt;br /&gt;
 end;&lt;br /&gt;
 	&lt;br /&gt;
 procedure MyControl.WMLButtonDown;&lt;br /&gt;
 begin&lt;br /&gt;
   Timer.Enabled := True;&lt;br /&gt;
   ...&lt;br /&gt;
 end;&lt;br /&gt;
 &lt;br /&gt;
 procedure MyControl.WMLButtonUp;&lt;br /&gt;
 begin&lt;br /&gt;
   Timer.Enabled := False;&lt;br /&gt;
   ...&lt;br /&gt;
 end;&lt;br /&gt;
	&lt;br /&gt;
Delphi по умолчанию создает все формы проекта при запуске приложения. Такой подход неприменим для крупных программ, время запуска которых становится слишком большим, а требования к ресурсам непомерными. Первоначально должна создаваться только одна, главная форма. Все остальные создаются и выводятся на экран по запросу пользователя и удаляются сразу же после окончания использования.&lt;/div&gt;</summary>
		<author><name>SYSDBA</name></author>	</entry>

	</feed>