Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2006.12.03;
Скачать: CL | DM;

Вниз

Проверить существование объекта.   Найти похожие ветки 

 
~~~   (2006-11-18 19:12) [0]

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


 
KilkennyCat ©   (2006-11-18 19:15) [1]

begin


 
Anatoly Podgoretsky ©   (2006-11-18 19:17) [2]

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

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


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

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


 
Anatoly Podgoretsky ©   (2006-11-18 19:21) [4]

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

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


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

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

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

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


 
Anatoly Podgoretsky ©   (2006-11-18 19:36) [6]

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

Из справки

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


 
MsGuns ©   (2006-11-18 19:41) [7]

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

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


 
Alexander Panov ©   (2006-11-18 20:46) [8]


> ~~~   (18.11.06 19:12) 


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

List.Free;
List := nil;


либо

FreeAndNil(List);

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

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


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

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

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);


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

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



Страницы: 1 вся ветка

Текущий архив: 2006.12.03;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.038 c
2-1163434889
Кевларвестов Семен
2006-11-13 19:21
2006.12.03
Ошибка при компиляции/билде из-за RegQueryValueEx


15-1163474121
Slider007
2006-11-14 06:15
2006.12.03
С днем рождения ! 14 ноября


1-1161172159
AlexEgorov
2006-10-18 15:49
2006.12.03
Почему в всех дельфи приложений не полное системное меню,


15-1163581041
ANB
2006-11-15 11:57
2006.12.03
Oracle vs Sybase


15-1163196754
PHPDeveloper
2006-11-11 01:12
2006.12.03
устройство на работу