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

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

Освобождение ресурса в finally


Страницы:   1 2 ... 16 17 18 19 20 21 22 ... 32 33

Arinyshka ©   (2008-04-23 12:17:00) 

Не подскажете еще один момент:
Есть процедура, выглядит примерно так

procedure TSetPayFrm.BtnAddImageClick(Sender: TObject);
var  TempBitmap:TBitmap;
begin
if not(opendialog1.Execute) then  exit;
try
 TempBitmap  := TBitmap.Create;
 TempBitmap.LoadFromFile(OpenDialog1.FileName);
finally
TempBitmap.Free;
end;
end;

На освобождение  TempBitmap.Free; выдает варнинг
[Warning] uSetPaymentMain.pas(313): Variable 'TempBitmap' might not have been initialized
Не смертельно, но непонятно... почему варнинг? При изменениии условия и включении всей конструкции в один блок begin..end ситуация не менялась.


Loginov Dmitry   (2008-04-27 11:04:00) [361]

> за такое, пожизненный эцих с гвоздями.


а гвозди-то за что? За TQuery? ;)


Palladin   (2008-04-27 10:57:00) [362]

за такое, пожизненный эцих с гвоздями.


Palladin   (2008-04-27 10:56:00) [363]

да, причем очень сильно.


Loginov Dmitry   (2008-04-27 10:48:00) [364]

А интересно, следующий код тоже дилетанский?


ADataBase := TDataBase.Create(nil);
AQuery1 := TQuery.Create(ADataBase);
AQuery2 := TQuery.Create(ADataBase);
AQuery3 := TQuery.Create(ADataBase);
try
 ................................
finally
 ADataBase.Free;
end;


Leonid Troyanovsky   (2008-04-27 10:34:00) [365]


> Loginov Dmitry ©   (27.04.08 10:23) [285]

> Это не важно. Важно, что все-таки нашел

Мне когда-то даже хотелось создать зал борландовской славы,
но, к сожалению, руки не дошли. А так 4 - вполне достоен.

--
Regards, LVT.


{RASkov}   (2008-04-27 10:31:00) [366]

> [285] Loginov Dmitry ©   (27.04.08 10:23)
> А поэтому фраза "Ты врешь" тут совершенно не к месту.

Я думаю, что данная фраза была к твоему "сплошь и рядом"....


Leonid Troyanovsky   (2008-04-27 10:28:00) [367]


> {RASkov} ©   (27.04.08 10:14) [284]

> А не кажется ли, что нашел иголку? ;)

Даже меньше.
Из приведенных примеров лишь 4 бросает тень.
Но, как мы уже знаем, в борланд попадают и двоешники.
Что касается 5, то там надо было объявить структуру,
объединяющую все эти Mono-Color. Т.е., это на троечку.

--
Regards, LVT.


Loginov Dmitry   (2008-04-27 10:23:00) [368]

> А не кажется ли, что нашел иголку?


Это не важно. Важно, что все-таки нашел. А поэтому фраза "Ты врешь" тут совершенно не к месту.


{RASkov}   (2008-04-27 10:14:00) [369]

> [283] Loginov Dmitry ©   (27.04.08 10:03)

А не кажется ли, что нашел иголку? ;) Даже пробежавшись по указаннум модулям >90% схема с одним объектом/ресурсрм...


Loginov Dmitry   (2008-04-27 10:03:00) [370]

> тебе доказать свое утверждение очень просто. указать конкретный
> модуль и либо конкретный класс и метод, либо процедуру.


раз это нужно, то с радостью все укажу! (для Delphi7, как было сказано выше)

1) Forms: TCustomForm.Print

FormImage := GetFormImage; // Создание объекта
Canvas.Lock; // захват ресурса
try
  .........
finally
  Canvas.Unlock; // Освобождение ресурса
  FormImage.Free; // Уничтожение объекта
end;


2) Forms: TCustomForm.ShowModal

В одном finally выполняется множество действий

3) Forms: TApplication.MessageBox

Не знаю, как это следует расценивать...


 finally
   if MBMonitor <> AppMonitor then
     SetWindowPos(Handle, 0,
       Rect.Left + ((Rect.Right - Rect.Left) div 2),
       Rect.Top + ((Rect.Bottom - Rect.Top) div 2),
       0, 0, SWP_NOACTIVATE or SWP_NOREDRAW or SWP_NOSIZE or SWP_NOZORDER);
   EnableTaskWindows(WindowList);
   SetActiveWindow(ActiveWindow);
   RestoreFocusState(FocusState);
 end;


4) Classes: TReader.ReadVariant, TWriter.WriteVariant


InnerStream := nil;
OuterStream := TMemoryStream.Create;
try
 InnerStream := TMemoryStream.Create;
 ..................
finally
 InnerStream.Free;
 OuterStream.Free;
end;


5) Graphics: WriteIcon()


MonoInfo := nil;
MonoBits := nil;
ColorInfo := nil;
ColorBits := nil;
try
 MonoInfo := AllocMem(MonoInfoSize);
 MonoBits := AllocMem(MonoBitsSize);
 ColorInfo := AllocMem(ColorInfoSize);
 ColorBits := AllocMem(ColorBitsSize);
 ...........................
finally
 FreeMem(ColorInfo, ColorInfoSize);
 FreeMem(ColorBits, ColorBitsSize);
 FreeMem(MonoInfo, MonoInfoSize);
 FreeMem(MonoBits, MonoBitsSize);
end;


Кстати, в модуле Controls мне не удалось найти ничего подозрительного. Там для каждого ресурса - свой try..finally, видимо, чтобы подобных споров не было ;)

В других модулях не смотрел. Достаточно и того, что я привел.


{RASkov}   (2008-04-27 10:01:00) [371]

> [281] Palladin ©   (27.04.08 09:58)
> да я верю,

А это и не тебе было :) Сорри)


Palladin   (2008-04-27 09:58:00) [372]


>{RASkov} ©(27.04.08 09:50) [279]

да я верю, мне интересно посмотреть на такое как в Loginov Dmitry ©(27.04.08 00:42) [267]


{RASkov}   (2008-04-27 09:52:00) [373]

> и постоянно поподается [1] схема...

Ну т.е. в [1] не схема, а уже код.... хорошо, схему я в [265] "зарисовал"...


{RASkov}   (2008-04-27 09:50:00) [374]

> указать конкретный модуль и либо конкретный класс и метод, либо процедуру

Замечу только то, что в ответ на это не нужно ничего искать по исходникам VCL...
Открывай любой и Ctrl+F вводи finally + Enter и далее F3.... и постоянно поподается [1] схема...


{RASkov}   (2008-04-27 09:46:00) [375]

Удалено модератором
Примечание: Offtopic


Palladin   (2008-04-27 09:39:00) [376]

Удалено модератором
Примечание: Offtopic


Palladin   (2008-04-27 09:33:00) [377]


>Loginov Dmitry ©(27.04.08 09:15) [275]

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


Loginov Dmitry   (2008-04-27 09:15:00) [378]

> Снова врешь.


Ты можешь сам Delphi открыть? Я вот открыл и посмотрел.
А от тебя пока только одни бездоказательные высказывания.


Германн   (2008-04-27 01:29:00) [379]


> Игорь Шевченко ©   (27.04.08 00:28) [266]
>
> столько известных анонимов развелось - диву даться
>

Одного из них я уже идентифицировал. Только вот какого именно?
:)))


Экс-Оригинал   (2008-04-27 00:52:00) [380]


> Восхищенный   (27.04.08 00:47) [270]
> > Экс-Оригинал   (27.04.08 00:44) [268]С двух раз тебе тоже
> непонятно? Тогда ничем не могу помочь.


Оставайся уподобившимся некоторым товарищам в упоеньи собственной правотой.


Страницы:   1 2 ... 16 17 18 19 20 21 22 ... 32 33

Наверх

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