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

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

Вопрос про try [D7]


sancho2 ©   (2008-03-03 11:03:00) 

 Mem1 := TMemoryStream.Create;
 try
   Mem1...
   Mem2 := TMemoryStream.Create;
   try
     SomeProc(Mem1, Mem2); // после этого Mem1 - больше мне не нужен
   finally
     Mem1.Free;
   end;
   Mem2...
 finally
   Mem2.Free;
 end;


Как в таком случае делать try и finally: я хочу сразу после SomeProc освободить Mem1.

?


Anatoly Podgoretsky   (2008-03-03 19:00:00) [1]

> sancho2  (03.03.2008 11:08:03)  [3]

Да вполне нормально, типичный дурдом.


Palladin   (2008-03-03 12:07:00) [2]


> sancho2   (03.03.08 11:08) [3]

с чего это вдруг нормально то, у тебя все кривося накося? утечка памяти имеет место быть при возникновении исключения между первым и вторым try


Kolan   (2008-03-03 11:10:00) [3]

> А такое, как у меня, — это нормально?

Работать будет, но, имхо, это ненормально…


sancho2   (2008-03-03 11:08:00) [4]

А такое, как у меня, - это нормально?


Kolan   (2008-03-03 11:07:00) [5]

> Как в таком случае делать try и finally: я хочу сразу после
> SomeProc освободить Mem1.

Как-то это мозг разрушает. Обычно:

Создал «А»
try
finally
 Удалил «А»
end;


А у тя каша.

Mem2 := TMemoryStream.Create;
try
 Mem1 := TMemoryStream.Create;
 try
   Mem1…
   SomeProc(Mem1, Mem2); // после этого Mem1 — больше мне не нужен
 finally
   Mem1.Free;
 end;
 Mem2…
finally
 Mem2.Free;
end;


Сергей М.   (2008-03-03 11:05:00) [6]


> я хочу сразу после SomeProc освободить Mem1


Ну так ты именно это и делаешь...


Наверх

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