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

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

Проверить существование объекта.


~~~ ©   (2006-11-18 19:12:00) 

Как проверить существование например TStringList?
var
 List: TStringList;
begin
//  if not Assigned(List) thenЧто тут надо писать?
   List := TStringList.Create;
 List.Add('test');


RASkov   (2006-11-18 21:01:00) [1]

[8]:)
Блин, не обновил окно перед отправкой, ну да ладно...


RASkov   (2006-11-18 21:00:00) [2]

Ну ведь сам же вначале написал

procedure AddData(const Value: string);
begin
if Assigned(List) then List.Add(Value) else raise...
end;


Создавай так:
if not Assigned(List) then List := TStringList.Create;

Уничтожай так
FreeAndNil(List);


Alexander Panov   (2006-11-18 20:46:00) [3]


> ~~~   (18.11.06 19:12) 


Для этого тебе необходимо при уничтожении объекта обнулять ссылку на него:

List.Free;
List := nil;


либо

FreeAndNil(List);

При создании же проверять:

if not Assigned(List) then List := TStringList.Create;


MsGuns   (2006-11-18 19:41:00) [4]

>Ну ситуация приблизительно такая: есть глобальная переменная типа TStringList, которую я изначально не хочу инициализировать (создавать), а хочу это сделать потом, т.к. сначала не ясно буду ли я использовать или нет.

Типа "пить не буду, но рюмку поставьте" ?


Anatoly Podgoretsky   (2006-11-18 19:36:00) [5]

> ~~~  (18.11.2006 19:31:05)  [5]

Из справки

If you don't explicitly initialize a global variable, the compiler initializes it to 0.


~~~   (2006-11-18 19:31:00) [6]

Ну ситуация приблизительно такая: есть глобальная переменная типа TStringList, которую я изначально не хочу инициализировать (создавать), а хочу это сделать потом, т.к. сначала не ясно буду ли я использовать или нет.

У меня есть процедура которая добавляет данные в эту самую глобальную переменную.

procedure AddData(const Value: string);
begin
 тут я хочу проверить создан обект List. т.е. если в первый раз вызываем процедуру - создаем List, иначе - просто добавляем данные.
 List.Add(Value);
end;


Anatoly Podgoretsky   (2006-11-18 19:21:00) [7]

> ~~~  (18.11.2006 19:20:03)  [3]

Зачем этот огрызок текста, что у тебя выше?


~~~   (2006-11-18 19:20:00) [8]

Я хочу проверить создан ли этот объект или нет. Вот что я хочу. Я понимаю, что если ничего там не писать, то такой код будет исправно работать. Но это только пример, мне нужно проверить создан объект или нет.


Anatoly Podgoretsky   (2006-11-18 19:17:00) [9]

> ~~~  (18.11.2006 19:12:00)  [0]

Тут ничего писать не надо.


KilkennyCat   (2006-11-18 19:15:00) [10]

begin


Наверх

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