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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Проблема с List index out of bounds 
:(
    Опции темы
harakiri
Дата 8.10.2011, 08:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 44
Регистрация: 17.1.2011

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



Код

    for I := 0 to MainForm.ComponentCount -1  do
       begin
         if MainForm.Components[i] is TAdvToolBarButton then
          ShowMessage(TAdvToolBarButton(Controls[i]).Caption);
       end;


выдает ошибку list index out of bounds(58). Подскажите, в  чем проблема?
PM MAIL   Вверх
Ne1tr1n0
Дата 8.10.2011, 09:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 120
Регистрация: 1.3.2009

Репутация: нет
Всего: 8



TAdvToolBarButton это что? Из TMS Components Pack?
Не нашёл у себя такого... TAdvToolButton есть, если он лежит на TAdvToolPanel, то ошибка повторяется. Я правильно смоделировал ситуацию?
В этом случае, наверное логичней будет, если уж перечисляем коллекцию Components, то и обращаться нужно к соответствующим элементам, то бишь
Код

ShowMessage(TAdvToolBarButton(Components[i]).Caption);
Так у меня работает. Походу если компонент лежит на TAdvToolPanel, то в коллекцию Form.Controls он уже не входит.
PM MAIL   Вверх
harakiri
Дата 8.10.2011, 09:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 44
Регистрация: 17.1.2011

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



Странно видел аналогичную ситуацию в другом приложении, там все работает без проблем.
PM MAIL   Вверх
bems
Дата 8.10.2011, 16:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

Репутация: 18
Всего: 88



почему Controls[i] если ComponentCount?



--------------------
Обижено школьников: 8
PM MAIL   Вверх
harakiri
Дата 8.10.2011, 19:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 44
Регистрация: 17.1.2011

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



bems, извини не понял. Можешь подробнее объяснить, пожалуйста.
PM MAIL   Вверх
bems
Дата 8.10.2011, 21:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

Репутация: 18
Всего: 88



ComponentCount это количество в массиве Components
ControlCount это количество в массиве Controls
Если i лежит между 0 и ComponentCount - 1 то ты не знаешь сущкствует ли Controls[i]



--------------------
Обижено школьников: 8
PM MAIL   Вверх
northener
Дата 8.10.2011, 23:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

Репутация: 12
Всего: 20



И даже больше. Контрол может вообще отсутствовать в массиве Controls другого контрола (в данном случае в массиве Controls формы), но присутствовать в его массиве Components. Обратное тоже верно. Контрол может присутствовать в массиве Components, но отсутствовать в массиве Controls.
А всё дело в том, что список Components ведет владелец(Owner) компонента, а список Controls ведет родитель(Parent) контрола.

DS.  Налицо отсутствие базовых знаний по Дельфи.
Рекомендовано: Купить и прочитать учебник.

smile


--------------------
Но только лошади летают вдохновенно.
Иначе лошади разбились бы мгновенно!
PM MAIL   Вверх
bems
Дата 8.10.2011, 23:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

Репутация: 18
Всего: 88



Цитата(northener @  8.10.2011,  23:03 Найти цитируемый пост)
Контрол может вообще отсутствовать в массиве Controls другого контрола (в данном случае в массиве Controls формы), но присутствовать в его массиве Components. Обратное тоже верно

помня это. попытайся ответить на вопрос почему
Цитата(harakiri @  8.10.2011,  09:36 Найти цитируемый пост)
видел аналогичную ситуацию в другом приложении, там все работает без проблем. 




--------------------
Обижено школьников: 8
PM MAIL   Вверх
northener
Дата 8.10.2011, 23:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

Репутация: 12
Всего: 20



Цитата(bems @  8.10.2011,  23:19 Найти цитируемый пост)
помня это. попытайся ответить на вопрос почему
Цитата(harakiri @  8.10.2011,  09:36 Найти цитируемый пост)
видел аналогичную ситуацию в другом приложении, там все работает без проблем. 


А чё тут пытаться? 
При создании контролов исключительно в рантайме и задании им владельцев явно никаких проблем.
Или при создании в дезайнтайме контролов, лежащих только на самой форме.
В обоих случаях контрол будет в обоих списках. Ну а для полной идентичности нужно ещё и отсутствие невизуальных компонент.

Это сообщение отредактировал(а) northener - 8.10.2011, 23:44


--------------------
Но только лошади летают вдохновенно.
Иначе лошади разбились бы мгновенно!
PM MAIL   Вверх
bems
Дата 9.10.2011, 01:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

Репутация: 18
Всего: 88



Цитата(northener @  8.10.2011,  23:44 Найти цитируемый пост)
А чё тут пытаться? 
это тебе "чё пытаться", а я обращался к топикстартеру. Ну и полная идентичность не нужна чтоб работало. По большому счету это рандом smile



--------------------
Обижено школьников: 8
PM MAIL   Вверх
northener
Дата 9.10.2011, 01:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

Репутация: 12
Всего: 20



Цитата(bems @  9.10.2011,  01:10 Найти цитируемый пост)
это тебе "чё пытаться", а я обращался к топикстартеру.

Извини, не понял, что не ко мне обращение.

Добавлено @ 01:23
Цитата(bems @  9.10.2011,  01:10 Найти цитируемый пост)
По большому счету это рандом

Это ну никак не рандом! Всё заранее просчитано и известно!
Имея на руках *.pas и *.dfm можно однозначно сказать кто кому владелец и кто кому родитель!

Это сообщение отредактировал(а) northener - 9.10.2011, 01:28


--------------------
Но только лошади летают вдохновенно.
Иначе лошади разбились бы мгновенно!
PM MAIL   Вверх
bems
Дата 9.10.2011, 04:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

Репутация: 18
Всего: 88



Цитата(northener @  9.10.2011,  01:17 Найти цитируемый пост)
Это ну никак не рандом! Всё заранее просчитано и известно!
код можно применять к разным формам. Там же выше речь и идет о случае где почему-то работало. Был другой RandSeed smile


--------------------
Обижено школьников: 8
PM MAIL   Вверх
harakiri
Дата 10.10.2011, 11:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 44
Регистрация: 17.1.2011

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



northener, Вы абсолютно правы, багаж знаний на самом деле очень мал. Книга тоже где-то была... Вся загвоздка в том, что просто паталогически не хватает времени на ее прочтение. Весь день  во власти работы, весь вечер во власти жены)) В ту единственную свободную минуту которая бывает крайне редко стараюсь на практике освоить программирование, т.к. мне намного быстрее доходит через практический опыт. По сему я стараюсь черпать знания на форумах, где опытные люди отвечают четко по вопросу без лишней "воды" которой так много в современных книгах по программированию. Тем не менее к Вашему совету обязательно прислушаюсь. Всем большое спасибо за помощь, особенно bems - четко и понятно объяснил. Сегодня вечером обязательно попробую.

Это сообщение отредактировал(а) harakiri - 10.10.2011, 11:50
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Для новичков"
SnowyMetalFan
bemsPoseidon
Rrader

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

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

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

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


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

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


 




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


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

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