![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Чтобы локальные переменные в функциях
Бездомный © (2011-10-06 13:35:00)обнулялись автоматически перед выполнением, есть такая директивка?
Если нет, можно ли как-нибудь написать такую процедурку LocalNullify:
function foo (param1, param2, ... paramN: AnyType1, ...): AnyType;
var
... тут неопределенное количество переменных, неопределенного размера ...
begin
LocalNullify;
//-- все локальные переменные обнулились, можно работать.
end;
Компилятор же некоторые типы (интерфейсы, динамические массивы) все-таки инициализирует.
P.S. Delphi 7, Delphi XE,XE2
RWolf (2011-10-24 11:30:00) [1]
> [56]
ссылку обнулили, объект освободили.
с точки зрения вызывающего — вполне себе NilAndFree.
Плохиш (2011-10-24 11:23:00) [2]
> RWolf © (24.10.11 11:06) [55]
> > Эм, у нас тут немного другое: NilAndFree
>
> в оригинальной FreeAndNil так и делается, не?
>
>
В каком месте он так делает? Может тебе поизучать скопированный тобой же код несколько раз до полного просветления.
RWolf (2011-10-24 11:06:00) [3]> Эм, у нас тут немного другое: NilAndFree
в оригинальной FreeAndNil так и делается, не?
procedure FreeAndNil(var Obj);
var
Temp: TObject;
begin
Temp := TObject(Obj);
Pointer(Obj) := nil;
Temp.Free;
end;
Yaro2000 (2011-10-24 05:20:00) [4]>> Dennis I. Komarov © (07.10.11 09:31) [44]
>> Вот не люблю и не использую FreeAndNil.
> Эм, у нас тут немного другое: NilAndFree
Пять баллов! :))))
Плохиш (2011-10-13 01:58:00) [5]
> Бездомный (06.10.11 13:45) [2]
>
> > Ega23 © (06.10.11 13:40) [1]
>
> Чтобы не писать:
Delphi вообще не правильная среда. Правильная среда должна иметь всего одну кнопку "Дай прогу".
PS. Прикольная такая ветка и до сих пор в основной.
Dennis I. Komarov (2011-10-12 19:11:00) [6]Так же довольно глупо пытаться уничтожить заведомо не существующий объект.
> var Object: TObject;
> begin
> Object := nil;
> Object.Free;
> end;
А по сему, если предположить что код выложен не полностью и объект все-таки где-то когда-то создан
var Object: TObject;
begin
...
Object := nil;
Object.Free;
end;
, то получаем утечку памяти, что уже страшно...
Dennis I. Komarov (2011-10-12 18:14:00) [7]
> А это по твоему для потакания глупости сделано было?
Глупо пытаться сперва "занилить" ссылку, а после по ней пытаться уничтожить объект.
Бездомный (2011-10-12 17:53:00) [8]
> Dennis I. Komarov © (07.10.11 10:24) [49]
А это по твоему для потакания глупости сделано было?
procedure TObject.Free;
begin
if Self <> nil then
Destroy;
end;
Dennis I. Komarov (2011-10-07 10:24:00) [9]тогда согласен, не страшно, тогда глупо...
Ega23 (2011-10-07 10:15:00) [10]
var
Object: TObject;
begin
Object := nil;
Object.Free;
end;
Dennis I. Komarov (2011-10-07 10:12:00) [11]
> Мы его и не создали, если чё.
Ну ты так больше не шути :)
Ega23 (2011-10-07 10:07:00) [12]
> Ссылку потеряли, объект не уничтожили.
Мы его и не создали, если чё.
Бездомный (2011-10-07 10:07:00) [13]
> Ссылку потеряли, объект не уничтожили. Чем не утечка?
var Object: TObject;
begin
Object := nil;
Object.Free;
end;
Нет же никакой ссылки.
Dennis I. Komarov (2011-10-07 09:31:00) [14]
> Вот не люблю и не использую FreeAndNil.
Эм, у нас тут немного другое: NilAndFree
Dennis I. Komarov (2011-10-07 09:05:00) [15]Ну и?
Ссылку потеряли, объект не уничтожили. Чем не утечка?
Германн (2011-10-07 01:08:00) [16]
> Dennis I. Komarov © (06.10.11 22:19) [40]
> Ega23 © (06.10.11 23:10) [41]
Вот не люблю и не использую FreeAndNil.
Так что на ваш диалог смотрю скептически. :(
Ega23 (2011-10-06 23:10:00) [17]
> А деструктор для кого тут вызван будет?
А он и не будет вызван. :)
procedure TObject.Free;
begin
if Self <> nil then
Destroy;
end;
> З.Ы. Или пива уже много? :)
Походу
Dennis I. Komarov (2011-10-06 22:19:00) [18]
> эээ... А где тут утечка????
> begin
> Object := nil;
> Object.Free;
> end;
А деструктор для кого тут вызван будет?
З.Ы. Или пива уже много? :)
Ega23 (2011-10-06 21:54:00) [19]
> Утечка не страшно?
эээ... А где тут утечка????
> It's for me?
Да не, это про смысл "заниливания".
Dennis I. Komarov (2011-10-06 21:46:00) [20]
> и если подумать, то ничего страшного не будет.
Утечка не страшно?
> Ega23 © (06.10.11 20:36) [35]
It's for me?