![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Освобождение ресурса в finally
Arinyshka © (2008-04-23 12:17:00)
Страницы: < 1 2 ... 16 17 18 19 20 21 22 ... 32 33 >
Не подскажете еще один момент:
Есть процедура, выглядит примерно так
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]С двух раз тебе тоже
> непонятно? Тогда ничем не могу помочь.
Оставайся уподобившимся некоторым товарищам в упоеньи собственной правотой.