![]() |
|
Модераторы: Daevaorn |
![]()
|
|
| =Женек= |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 548 Регистрация: 20.2.2005 Репутация: нет Всего: 1 |
Бред получается. Как ни располагаю менюшки - всегда будет ошибка undefined symbol. Понятно что при указании идентификатора, он уже должен быть описан ранее. Как разорвать замкнутый круг? |
|||
|
||||
| MAKCim |
|
|||
![]() Воін дZэна ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5644 Регистрация: 10.12.2005 Где: Менск, РБ Репутация: 52 Всего: 207 |
-------------------- Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі © |
|||
|
||||
| =Женек= |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 548 Регистрация: 20.2.2005 Репутация: нет Всего: 1 |
ЧТо за вопросы? Или продери глаза или без намеков.
Хочу добавить - что пишу в AVR С (для микроконтроллеров). И когда небыло параметра parent, то все работало. А именно в MainMenu параметр Options указывал на TMenuItem Options |
|||
|
||||
| srd |
|
|||
![]() Нереварин ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 951 Регистрация: 30.8.2003 Где: Владивосток Репутация: 27 Всего: 49 |
-------------------- Не смей читать мою подпись!!! |
|||
|
||||
| =Женек= |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 548 Регистрация: 20.2.2005 Репутация: нет Всего: 1 |
Ух ты.. Только вот так:
Спасибо!! Вроде компилятор не ругается... Ща посмотрим в деле... |
|||
|
||||
| =Женек= |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 548 Регистрация: 20.2.2005 Репутация: нет Всего: 1 |
ТЕперь я что-то с указателями запутался...
Подозреваю что point_to_menu[i].title != NULL - лажа.. Как правильно. P.S. Функция вызвана так: EnterMenuItem(MainMenu); Описание MainMenu в этой теме выше. |
|||
|
||||
| MAKCim |
|
|||
![]() Воін дZэна ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5644 Регистрация: 10.12.2005 Где: Менск, РБ Репутация: 52 Всего: 207 |
насколько я понимаю title всегда не NULL контролируй сколько у тебя объектов TMenuItem (передавай size и делай проверку i<size) -------------------- Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі © |
|||
|
||||
| srd |
|
|||
![]() Нереварин ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 951 Регистрация: 30.8.2003 Где: Владивосток Репутация: 27 Всего: 49 |
Либо передавай в функцию количество элементов в массиве, как было предложено выше, либо добавь в конец массива элемент, служащий признаком конца:
-------------------- Не смей читать мою подпись!!! |
|||
|
||||
| =Женек= |
|
||||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 548 Регистрация: 20.2.2005 Репутация: нет Всего: 1 |
Я уже делал вот так:
Тогда менюшку приходится объявлять вот так:
Лажа получается - в MainMenu 3 раза встречается число его собственных элементов. По-моему избыточно. Если же параметр count назначать по отношению к подменю, то обратиться к нему еще сложнее. Поэтому я и хочу не считать число элементов, а просто выводить их пока очередной point_to_menu существует. Вот только пишу неграмотно. Подскажите, как. P.S. можно конечно передавать в функцию, но согласитесь это лишнее, если информация уже известна. Насчет признака конца я уже думал. Но какая разница, что ты прочтешь признак конца, что определишь что 4-й (в данном случае) элемент отсутствует. Вот я и хочу знать как это сделать.. ПОймте, я пишу под AVR - всего 8кб кода и 1 кб оперативной памяти. Вот и приходится делать вещи, на которые в обычном C я уже плюнул бы. Это сообщение отредактировал(а) =Женек= - 19.3.2006, 19:43 |
||||
|
|||||
| srd |
|
||||||||
![]() Нереварин ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 951 Регистрация: 30.8.2003 Где: Владивосток Репутация: 27 Всего: 49 |
Разница в том, что нулевой элемент в конце массива позволяет писать код в виде:
что вроде и требовалось. В любом случае, это гораздо лучше, чем заводить поле с количеством элементов в каждом элементе
Вот проблема как раз в том, что в функции ничего не известо про количество элементов. У неё на входе ничего нет кроме одного указателя З.Ы. Можно так:
И вызывать функцию так:
Макрос статической памяти не занимает. Это сообщение отредактировал(а) srd - 19.3.2006, 19:54 -------------------- Не смей читать мою подпись!!! |
||||||||
|
|||||||||
| =Женек= |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 548 Регистрация: 20.2.2005 Репутация: нет Всего: 1 |
Эх.... проскакивает она конец... Добавлено @ 20:23 Секунду... если я передаю в функцию указатель на MainMenu, то внутри функции количество элементов массива нельзя посчитать? |
|||
|
||||
| srd |
|
||||||
![]() Нереварин ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 951 Регистрация: 30.8.2003 Где: Владивосток Репутация: 27 Всего: 49 |
Сейчас посмотрел внимательно на определение структуры - у тебя оказывается title - не указатель на строку а массив символов. Тогда надо так:
Добавлено @ 20:29
Совершенно верно
-------------------- Не смей читать мою подпись!!! |
||||||
|
|||||||
| =Женек= |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 548 Регистрация: 20.2.2005 Репутация: нет Всего: 1 |
работает.
А в другом месте:
не работает. Пишет "can't subscript away" Добавлено @ 21:40 В начале еще было TMenuItem __flash *current_point; |
|||
|
||||
| =Женек= |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 548 Регистрация: 20.2.2005 Репутация: нет Всего: 1 |
Хм.. так ниче и не получилось..
|
|||
|
||||
| srd |
|
|||
![]() Нереварин ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 951 Регистрация: 30.8.2003 Где: Владивосток Репутация: 27 Всего: 49 |
Мало информации. По идее такой синтаксис совершенно законный. Попробуй создать короткий пример, воспроизводящий эту проблему на твоём компиляторе, и проверь его на какому-нибудь другом компиляторе. Я, например, не могу сооборазить, что означает сообщение "can't subscript away".
-------------------- Не смей читать мою подпись!!! |
|||
|
||||
![]()
|
| Правила форума "С++:Общие вопросы" | |
|
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
| 1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |