|
47 / 47 / 15
Регистрация: 09.03.2011
Сообщений: 584
|
|||||||||||
Области видимости в Builder20.01.2013, 02:44. Показов 4241. Ответов 27
Метки нет (Все метки)
Совсем запутался с областью видимости
описываю класс-в том же модуле из обработчика событий кнопки его не видно создаю модуль-из него не видно форму которая используется в функциях класса(она находится в другом модуле) ткните пож. пальцем хоть что почитать (книга глава) Добавлено через 40 минут даже если я подключаю модуль с формой через include он мне пишет что компонент не является частью формы Добавлено через 1 час 7 минут cpp:
0
|
|||||||||||
| 20.01.2013, 02:44 | |
|
Ответы с готовыми решениями:
27
Области видимости в Builder part2
Области видимости функций |
|
435 / 402 / 57
Регистрация: 06.02.2012
Сообщений: 1,384
|
|
| 26.01.2013, 09:35 | |
|
0
|
|
|
47 / 47 / 15
Регистрация: 09.03.2011
Сообщений: 584
|
|
| 27.01.2013, 00:47 [ТС] | |
|
спасибо насчёт присваивания и сравнения в курсе в тексте программы везде присваивание вот проект
не плюйтесь пож. когда читать будете я вудь только учусь переменная meter меняется функцией impostfunc.Если вывод значения meter на label поместить в любом другом месте программы то без проблем на label отображается значения meter,а вот если в обработчик события то meter всегда равен значению при инициализации
0
|
|
|
47 / 47 / 15
Регистрация: 09.03.2011
Сообщений: 584
|
|
| 27.01.2013, 02:24 [ТС] | |
|
С проблемой я справился, вместо того чтоб писать функцию в обработчике события написал вне а из обработчика просто вызвал её но пугает непонимание происходящих процессов
0
|
|
|
435 / 402 / 57
Регистрация: 06.02.2012
Сообщений: 1,384
|
|
| 27.01.2013, 04:16 | |
|
Глобальные переменные надо определять в cpp файле (а вообще их быть не должно). Вместо класса active можно использовать стандартный класс TRect. Узнайте что такое инкремент и дикремент (++, --) и что такое +=, -=, *=, /= . Не плохо писать комментарии, что делает каждая ф-ция и метод, что это за класс, что за свойство. Называть Image как А плохо лучше Image1 или ImageMain или ImgMain, что то говорящее, иначе потом сами забудете что делает куча безликих переменных. И как ранее уже говорил неправильная идеология, классы определенные в Unit2 не должны знать что такое Form1, а если вы завтра захотите отрисовывать свои окна не на Form1->A->Canvas, а скажем еще и на Form2->Canvas, что вы будете делать со своим кодом? Т.е. в этих классах должна быть переменная TCanvas* в которую они и должны рисовать, а сама переменная должна задаваться из вне при создании класса или вызове его методов.
0
|
|
|
47 / 47 / 15
Регистрация: 09.03.2011
Сообщений: 584
|
|
| 27.01.2013, 10:41 [ТС] | |
|
спасибо это всё понятно но это мелкие ошибки с которыми программа всё таки будет работать хотя учиться лучше начинать конечно же исключая эти ошибки.
Что касается инкремента и дикремента так это дело привычки по чуть чуть буду привыкать суть то не менятся. В конце концов разобрался я в своих ошибках ключевое слово всех ошибок extern при включении модулей с помощью #include создаются копии переменных с теми же именами а не включаются в модуль оригиналы соответственно компилятор и не ругается дескать undefained simbol тут то я и застрял окончательно. послали бы меня на три WWW:http://selfteacherc-builder.ne... 20function Туда же предлагаю сходить и всем у кого возникли вопросы такого рода Добавлено через 2 часа 9 минут А запутался я ещё и потому что при включении другого модуля директивой #include у меня работало обращение к компонентам,но опять же одно дело копия переменной а совсем другое копия указателя.
0
|
|
|
47 / 47 / 15
Регистрация: 09.03.2011
Сообщений: 584
|
|
| 28.01.2013, 13:54 [ТС] | |
|
Копия указателя указывает на тот же адрес в памяти что и оригинал указателя,то есть при обращении к адресу памяти через указатель значение записанное по указанному адресу одинаковое и для оригинала и для копии указателя,если через копию указателя изменить значение "ячейки" в памяти,то обратившись к этой "ячейке" через оригинал указателя вы получите изменённое значение и наоборот.
С копией переменной ситуация немного другая.Оригинал (к примеру int var)в модуле Unit1 живёт независимой жизнью от копии которую создаёт компилятор при использовани директивы #inlude "Unit1.h" в модуле Unit2.То есть если в модуле Unit1 по ходу программы var меняет значение то оно будет отлично от значения var в модуле Unit2. Директива #include создаёт копии без использовании extern специально прочитал несколько статей на эту тему даже вот пример выкладываю
0
|
|
|
|
|
| 28.01.2013, 15:45 | |
|
Какая феноменальная чушь!
![]() Указатели не надо путать со ссылками - у них есть серьезное отличие. Указатели инициализированными не рождаются, а становятся. Соответственно, чтобы воссоздать описанный тобой расклад, придется одинаково и явно инициализировать все копии указателей. Еще раз повторю - автоматически созданные средой указатели на формы существуют в единственном экземпляре. Объявлены они в глобальной области видимости в соответствующем модуле .cpp и переобъявлены со спецификатором extern в соответствующем хедере.
0
|
|
| 28.01.2013, 15:45 | |
|
Изменение области видимости функции Инициализация вне области видимости Классы, наследование, области видимости
Какие есть области видимости в C++? Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Вступаем в новую фазу генерации favicons, векторную.
russiannick 02.11.2026
Теперь нет нужды скрывать что используется простой svg. Исходный код изображения помещаем в поле и жмем кнопку. Исходник преобразуется в вид корректный для помещения в favicon или в url(). Нажатие. . .
|
Генератор паролей (вариант №4)
Maks 01.11.2026
После публикации 3-го варианта генератора паролей, разослал его своим коллегам (с целью оценки), в итоге были получены следующие рекомендации:
1. Вернуть возможность использования знаков | 1 l I;. . .
|
Генератор паролей (вариант №3)
Maks 30.10.2026
Финальная версия генератора паролей 1С.
Доработка решения в этот раз коснулась только визуальной части, а именно, добавлен реквизит ДопПараметры (тип Булево), который скрывает/ отображает реквизиты:. . .
|
Магическое мышление и магия, современная наука не отличима от магии (говорит ИИ Джемени)
zorxor 30.10.2026
Джемени, расскажи, пожалуйста, что такое магическое мышление, что такое магия, почему современная наука чем-то напоминает магию?
Фраза «Любая достаточно развитая технология неотличима от магии». . .
|
|
За какое время ИИ может подобрать пароль по хешу (рассказывает Джемени ИИ)
zorxor 30.10.2026
Расскажи, Джемени, если известен хэш МД5, например, за сколько ИИ сможет подобрать соответствующий пароль?
Искусственный интеллект (ИИ) может подобрать простой или средний по сложности пароль по. . .
|
Кто убил Suno? Почему наше солнышко погасло? (диалог с ИИ Джемени)
zorxor 30.10.2026
Как убивали Suno. Хронология.
«Убийство» музыкальной нейросети Suno — это затяжной процесс, в котором технологический хайп стартапа разбился о жесткую реальность судебных исков от гигантов. . .
|
Генератор паролей (вариант №2)
Maks 30.10.2026
Обновленная версия ранее созданной обработки.
Добавлены следующие реквизиты типа Булево:
- Буквы;
- Цифры;
- Символы.
Изменена логика команды "Сгенерировать" и процедуры "ПриОткрытии":. . .
|
Генератор паролей (вариант №1)
Maks 29.10.2026
Реализация из решения ниже выполнена исключительно по моей инициативе, дабы облегчить себе работу в создании паролей для администрируемых мною сервисов и пользователей.
Самым главным критерием для. . .
|