|
47 / 47 / 15
Регистрация: 09.03.2011
Сообщений: 584
|
|||||||||||
Области видимости в Builder20.01.2013, 02:44. Показов 3987. Ответов 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 | |
|
Помогаю со студенческими работами здесь
28
Изменение области видимости функции Инициализация вне области видимости Классы, наследование, области видимости
Какие есть области видимости в C++? Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога
Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
|
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование
. \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json>
Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом.
# Check if. . .
|
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так:
https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347
Основана на STM32F303RBT6.
На борту пять. . .
|
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
|
|
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу,
и светлой Луне.
В мире
покоя нет
и люди
не могут жить в тишине.
А жить им немного лет.
|
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила»
«Время-Деньги»
«Деньги -Пуля»
|
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога
Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
|
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога
Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
|