Модераторы: Poseidon, Snowy, bems, MetalFan

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Как узнать, что Stringlist был создан 
V
    Опции темы
MadCoder
Дата 10.5.2008, 22:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 478
Регистрация: 24.8.2007
Где: Москва

Репутация: 1
Всего: 2



Здравствуйте!

Всем известно, что перед работой со StringList'ом его необходимо создать (List:=TStringlist.Create). А как проверить, что Stringlist был создан и с ним можно работать? smile 
PM WWW ICQ   Вверх
THandle
Дата 10.5.2008, 23:02 (ссылка) |    (голосов:2) Загрузка ... Загрузка ... Быстрая цитата Цитата


Хранитель Клуба
Group Icon
Награды: 1



Профиль
Группа: Админ
Сообщений: 3639
Регистрация: 31.7.2007
Где: Moscow, Dubai

Репутация: 65
Всего: 372



Код

if Assigned(StringList) then


?

Добавлено @ 23:03
http://forum.vingrad.ru/forum/topic-209296...0%BC%D0%B0.html

Какая разница? Что форма, что StringList...

Это сообщение отредактировал(а) THandle - 10.5.2008, 23:05
PM   Вверх
Poseidon
Дата 10.5.2008, 23:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Delphi developer
****


Профиль
Группа: Комодератор
Сообщений: 5273
Регистрация: 4.2.2005
Где: Гомель, Беларусь

Репутация: 53
Всего: 133



Цитата(MadCoder @  10.5.2008,  22:59 Найти цитируемый пост)
А как проверить, что Stringlist был создан и с ним можно работать?
А как можно работать не создав? Я имею ввиду как можно писать в коде какую-то операцию со Stringlist, если не написал его создания?



--------------------
Если хочешь, что бы что-то работало - используй написанное, 
если хочешь что-то понять - пиши сам...
PM MAIL ICQ   Вверх
Albinos_x
Дата 10.5.2008, 23:36 (ссылка) |    (голосов:2) Загрузка ... Загрузка ... Быстрая цитата Цитата


Evil Skynet
****


Профиль
Группа: Комодератор
Сообщений: 3288
Регистрация: 28.5.2004
Где: X-6120400 Y-1 4624650

Репутация: 26
Всего: 108



Poseidon, 
хм... может у него глобальная переменная и работа с нескольких обработчиков, которые независимы друг от друга, поэтому и трубуется проверка...


--------------------
"Кто владеет информацией, тот владеет миром"    
Уинстон Черчилль
PM MAIL ICQ   Вверх
Poseidon
Дата 11.5.2008, 00:19 (ссылка)    | (голосов:2) Загрузка ... Загрузка ... Быстрая цитата Цитата


Delphi developer
****


Профиль
Группа: Комодератор
Сообщений: 5273
Регистрация: 4.2.2005
Где: Гомель, Беларусь

Репутация: 53
Всего: 133



Цитата(Albinos_x @  10.5.2008,  23:36 Найти цитируемый пост)
 может у него глобальная переменная и работа с нескольких обработчиков
Если StringList в глобальной переменной, то его нужно создавать в OnCreate!



--------------------
Если хочешь, что бы что-то работало - используй написанное, 
если хочешь что-то понять - пиши сам...
PM MAIL ICQ   Вверх
ama_kid
Дата 11.5.2008, 13:52 (ссылка)    | (голосов:2) Загрузка ... Загрузка ... Быстрая цитата Цитата


АСУТП-кодер
***


Профиль
Группа: Комодератор
Сообщений: 1460
Регистрация: 5.3.2007
Где: Москва

Репутация: 15
Всего: 95



Цитата(MadCoder @  10.5.2008,  22:59 Найти цитируемый пост)
как проверить, что Stringlist был создан и с ним можно работать?
мой любимый метод, гы   smile 
Код
try
 List.Add('123');
except
 List:=TStringList.Create(nil);
 List.Add('123');
end;




--------------------
самурай без меча подобен самураю с мечом, но только без меча 
PM MAIL   Вверх
Poseidon
Дата 11.5.2008, 15:05 (ссылка) |    (голосов:2) Загрузка ... Загрузка ... Быстрая цитата Цитата


Delphi developer
****


Профиль
Группа: Комодератор
Сообщений: 5273
Регистрация: 4.2.2005
Где: Гомель, Беларусь

Репутация: 53
Всего: 133



Цитата(ama_kid @  11.5.2008,  13:52 Найти цитируемый пост)
мой любимый метод
Я конечно извеняюсь, но твой любимый метод - извращение. Создавать специально ошибку и потом ее отлавливать...  smile 



--------------------
Если хочешь, что бы что-то работало - используй написанное, 
если хочешь что-то понять - пиши сам...
PM MAIL ICQ   Вверх
ama_kid
Дата 11.5.2008, 15:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


АСУТП-кодер
***


Профиль
Группа: Комодератор
Сообщений: 1460
Регистрация: 5.3.2007
Где: Москва

Репутация: 15
Всего: 95



Цитата(Poseidon @  11.5.2008,  15:05 Найти цитируемый пост)
Я конечно извеняюсь, но твой любимый метод - извращение
совершенно верно, это мой любимый извращенный метод  smile 



--------------------
самурай без меча подобен самураю с мечом, но только без меча 
PM MAIL   Вверх
MetalFan
Дата 12.5.2008, 08:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Аццкий Сотона
****


Профиль
Группа: Комодератор
Сообщений: 3815
Регистрация: 2.10.2006
Где: Moscow

Репутация: 62
Всего: 128



Цитата(ama_kid @  11.5.2008,  15:21 Найти цитируемый пост)
это мой любимый извращенный метод

...который может привести к непредсказуемым последствиям.
проверка на assigned не всегда применим. это относится к локальным и неинициализироваемым глобальным переменным.
глобальные переменные - зло)


--------------------
There are always someone smarter than you...
PM MAIL   Вверх
Sanchezzz
  Дата 12.5.2008, 08:35 (ссылка)    | (голосов:2) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1670
Регистрация: 19.11.2006
Где: Voronezh

Репутация: 5
Всего: 60



Автору совет не используй все в глобальных пользуйся 
public или private
сделай функцию проверки создан ли Stringlist тем же самым assigned не знаю я не когда не проверяю создан ли Stringlist просто тупо использую ибо всегда создается а при необходимости уничтожаю.


--------------------
Понравился ответ "+" по репе, не забываем закрывать тему, заказы в LS.
PM MAIL Skype GTalk   Вверх
pseud
Дата 12.5.2008, 09:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Экспёрт Тыдыщ
***


Профиль
Группа: Завсегдатай
Сообщений: 1175
Регистрация: 18.5.2007
Где: Минск, Беларусь

Репутация: 10
Всего: 40



Цитата(Poseidon @  11.5.2008,  00:19 Найти цитируемый пост)
Если StringList в глобальной переменной, то его нужно создавать в OnCreate!


простите в OnCreate какого класса?

Добавлено через 5 минут и 32 секунды
Цитата(Sanchezzz @  12.5.2008,  08:35 Найти цитируемый пост)
я не когда не проверяю создан ли Stringlist просто тупо использую ибо всегда создается а при необходимости уничтожаю.


пример 

Код

try
  метод вызвавший Exception
  ...
  StringList1 := TStringList.Create;
except
  обработали Exception
end;
...
StringList1.Add('куку');


к сожалению StringList1 не создастся и StringList1.Add вызовет Exception

никто не знает в каком месте случится Исключительная ситуация.

Добавлено через 7 минут и 2 секунды
Цитата(Sanchezzz @  12.5.2008,  08:35 Найти цитируемый пост)
 а при необходимости уничтожаю.


надо уничтожать не при необходимости, а обязательно. и если это локальная переменная (свойство) то желательно в деструкторе класса (если нет другой необходимости)


--------------------
Испытание чужого терпения можно считать успешным, если оно лопнуло...
PM MAIL   Вверх
MadCoder
Дата 12.5.2008, 10:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 478
Регистрация: 24.8.2007
Где: Москва

Репутация: 1
Всего: 2



В зависимости от некоторых данных создается и загружается либо Форма 1, либо Форма 2. В форме 1 создается TStringlist, который заполняется данными. Форма 2 может создаваться как из формы 1, так и независимо (без создания Формы 1).

В зависимости от того, есть ли данные в StringList'е, форма 2 читает данные из него, либо выполняет другие действия.

Сейчас это реализовано с помощью try... except, что лично мне кажется пальцем, которым затыкают дырку, вместо того, чтобы залатать ее заплаткой.

Лучший вариант по моему скромному мнению Assigned, всем спасибо за помощь! smile 

Это сообщение отредактировал(а) MadCoder - 12.5.2008, 10:05
PM WWW ICQ   Вверх
Poseidon
Дата 12.5.2008, 10:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Delphi developer
****


Профиль
Группа: Комодератор
Сообщений: 5273
Регистрация: 4.2.2005
Где: Гомель, Беларусь

Репутация: 53
Всего: 133



Цитата(pseud @  12.5.2008,  09:47 Найти цитируемый пост)
простите в OnCreate какого класса?
TForm

Вообще, как уже было сказано, глобальные переменные - не хороший тон. Но если все же уже созданы, то создаем Stringlist в TForm.OnCreate, освобождаем в TForm.OnDestroy. Да, может получится так, что память будет занята бестолку. Но зато мы не получим ошибок. А вообще я не представляю себе ситуацию, в которой необходимо проверять создан-ли список или нет. 



--------------------
Если хочешь, что бы что-то работало - используй написанное, 
если хочешь что-то понять - пиши сам...
PM MAIL ICQ   Вверх
pseud
Дата 12.5.2008, 14:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Экспёрт Тыдыщ
***


Профиль
Группа: Завсегдатай
Сообщений: 1175
Регистрация: 18.5.2007
Где: Минск, Беларусь

Репутация: 10
Всего: 40



Цитата(Poseidon @  12.5.2008,  10:17 Найти цитируемый пост)
 то создаем Stringlist в TForm.OnCreate, освобождаем в TForm.OnDestroy


думаю правильнее будет сказать:
создаем в конструкторе, освобождаем в деструкторе
не всяк класс имеет OnCreate/OnDestroy


Цитата(Poseidon @  12.5.2008,  10:17 Найти цитируемый пост)
А вообще я не представляю себе ситуацию, в которой необходимо проверять создан-ли список или нет


я ее простовато но описал в предыдущем своем посте


--------------------
Испытание чужого терпения можно считать успешным, если оно лопнуло...
PM MAIL   Вверх
Poseidon
Дата 12.5.2008, 15:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Delphi developer
****


Профиль
Группа: Комодератор
Сообщений: 5273
Регистрация: 4.2.2005
Где: Гомель, Беларусь

Репутация: 53
Всего: 133



Цитата(pseud @  12.5.2008,  14:24 Найти цитируемый пост)
я ее простовато но описал в предыдущем своем посте
В предыдущем твоем посте ошибка в самом коде. Написал бы так:


Код

StringList1 := TStringList.Create;
try
  метод вызвавший Exception
  ...
except
  обработали Exception
end;
...
StringList1.Add('куку');

ничего бы не было.


--------------------
Если хочешь, что бы что-то работало - используй написанное, 
если хочешь что-то понять - пиши сам...
PM MAIL ICQ   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Общие вопросы"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0616 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.