Форум: "KOL";
Текущий архив: 2004.08.29;
Скачать: [xml.tar.bz2];
ВнизКак в КОЛ определить существует ли экземпляр объекта? Найти похожие ветки
← →
nester © (2004-03-23 20:19) [0]Как в КОЛ определить существует ли экземпляр объекта? Т.е. Вызывал ли я функцию NewXXX.
Например:
procedure xxx;
var
params: PStrList
begin
Gogogo(params);
end;
procedure Gogogo(var fparams: PStrList);
begin
if fparams = nil then //но тут то оно и не срабатывает
params:= NewStrList;
...
end;
В этом участке кода в моменте коментария иф не срабатывает, несмотря на то, что я не создавал params. Указатель не равен nil у объявленой перененной, он указывает похоже на отфонарный участок памяти.
Как можно точно определить что до этого не создавал я param?
Только не надо советовать пожалуйста вставлять params:= nil; перед вызовом gogogo. это не решение.
← →
Владимир Кладов (2004-03-23 20:25) [1]Это не решение. Это обязанность программиста, который пишет на Паскале.
← →
nester © (2004-03-23 20:30) [2]:))) ну я это понимаю.
Я не против делать это когда я высвобождаю память
params.free;
params:= nil;
Но в описанном мною премере, я еще ничего не делал же с переменной, я только успел ее объявить. Но она свежеобъявленая почемуто не равна nil. Хотя по логике вещей должна быть равна nil.
Или я торможу? Собственно мне и нужно узнать, делалось ли чтонибудь до этого с переменной?
Неужели при инициализации каждой процедуры мне делать params:= nil ?
← →
Владимир Кладов (2004-03-23 20:34) [3]это логика C++. В Паскале логика другая.
← →
nester © (2004-03-23 22:22) [4]Т.е. мне в любом случае при инициализации придеться делать params:= nil?
И другого пути определить использовал ли я переменную или нет нету?
← →
Solik © (2004-03-25 07:42) [5]Если объявлять переменную глобольно можно попробовать написать так:
var
params: PStrList=nil;
← →
nester © (2004-03-25 10:35) [6]:))) переменная локальная
Страницы: 1 вся ветка
Форум: "KOL";
Текущий архив: 2004.08.29;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.037 c