![]() |
|
Модераторы: Daevaorn |
![]()
|
|
| fara |
|
||||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 166 Регистрация: 15.3.2004 Где: С.-Петербург Репутация: нет Всего: 2 |
В форме Form2 задан массив int D[n] (в файле Unit2.h),
из формы Form13 пытаюсь получить доступ к массиву: Form2->D[0]; но в ответ _пустота_ делаю Label1->Caption = IntToStr(Form2->D[0]); на Label1 ничего не выводиться. Никаких ошибок не выдается. , хотя массив был до этого задан (числа там должны быть): в Unit2.cpp в ф-ии обработчике события нажатия на кнопку ОК
include "unit2.h" присутствует в unit13.cpp --------------------
Крыша хлопает в ладоши -Спасибо всем за план хороший! |
||||
|
|||||
| comcon1 |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 838 Регистрация: 11.6.2005 Где: Москва ДАС-МГУ Репутация: 12 Всего: 17 |
Что за "ничего не выводится"?? Какие-то числа там по-любому лежат - массив-то статический. Если бы твоя функция
Label1->Caption = IntToStr(D[0]); работала, она бы выводила хотя бы ноль. "Пустота" - не возваращается функцией IntToStr(D[0]). Так что для начала реши проблему с выводом на экран. Доступ к Форме2 - у тебя есть на нее указатель в модуле с другой формой?? Или ты в объект-инспекторе прописал: IntToStr(D[0]) и думаешь, что это будет реагировать на изменения переменных в Реал-Тайме?? Кое-какие переменные можно так, но не эту |
|||
|
||||
| fara |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 166 Регистрация: 15.3.2004 Где: С.-Петербург Репутация: нет Всего: 2 |
comcon1
действительно Label1->Caption = .. выводит ноль (хотя это не совпадает с тем что находиться в массиве). По поводу доступа к форме2: в модуле с др формой в файле unit13.cpp прописана строка #include "Unit2.h"
--------------------
Крыша хлопает в ладоши -Спасибо всем за план хороший! |
|||
|
||||
| comcon1 |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 838 Регистрация: 11.6.2005 Где: Москва ДАС-МГУ Репутация: 12 Всего: 17 |
таки-так. Посмотри в програме. КАКАЯ из этих форм креатится первой. По-видимому форма с массивом креатится второй и ФОРМКРЕАТЕ для нее запускается позже, чем ты присваиваешь.
Хм... Так если ты прописываешь в ФОРМКРЕАТЕ сообщение о выводе - это значит, что это сообщение выводится только один раз при запуске конструкторов этой формы. Или ты думаешь, что Label1->Caption=IntToStr(Form2->D[0]); устанавливает динамическую ссылку....???? нет уж батенька, сделай кнопочку, в обработчичке события пропиши вывод свой, и жми эту кнопочку. А там посмотрим, видится у тебя массив али нет ;) Ты вообще не забывай, что кроме Unit1 и Unit2 у тебя еще есть тело програмы ;) |
|||
|
||||
| fara |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 166 Регистрация: 15.3.2004 Где: С.-Петербург Репутация: нет Всего: 2 |
Та что Form2. comcon1 вы не могли поменьше умных оборотов,а то я мало что понимаю в том как все сидит в этом билдере и в самом C++ --------------------
Крыша хлопает в ладоши -Спасибо всем за план хороший! |
|||
|
||||
| comcon1 |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 838 Регистрация: 11.6.2005 Где: Москва ДАС-МГУ Репутация: 12 Всего: 17 |
Ну смотри: у тебя к телу програмы подключаются 2 файла-заголовка с твоими формами...
1. Открой главный файл и посмотри, как это сделано. > Там создается что-то вроде объекта Application и при помощи метода > Application->FormCreate() добавляются твои формы из модулей > Во время этого создания запускается кроме всего прочего и определенная тобою функция void __fastcall TForm13::FormCreate(TObject *Sender) 2. Если ты написал в этой функции о том, что Label1->Caption=IntToStr(Form2->D[0]); > Это означает, что ты в МОМЕНТ СОЗДАНИЯ формы вывел в заголовок содержимое массива D[0]. А он пока пустой. 3. Потом две формы создались и ты обрабатывая нажатие кнопки ОК изменяешь содержимое массива! > Конечно, но ведь Label1->Caption не будет изменяться вместе с массивом, поскольку функция IntToStr УЖЕ присвоила аттрибуту Caption константу! |
|||
|
||||
| fara |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 166 Регистрация: 15.3.2004 Где: С.-Петербург Репутация: нет Всего: 2 |
comcon1
дай я тебя пацелую!!! спасибо, хорошо объяснил!!! теперь понятно в чем загвоздка! к сожалению, репутации тебе добавить не могу (у меня меньше чем 100 сообщ). --------------------
Крыша хлопает в ладоши -Спасибо всем за план хороший! |
|||
|
||||
| comcon1 |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 838 Регистрация: 11.6.2005 Где: Москва ДАС-МГУ Репутация: 12 Всего: 17 |
Всегда пожалуйста. Тока тему зря так назвал.
Если бы проблема состояла в области видимости, то ругался бы компилятор, ну или Run-time были бы ошибки. Например, когда указываешь на один объект, а обращаешься как к другому и вызываешь несуществующий метод (если один объект - сынок другого) : комплиятор такие штуки увидеть, естественно не может. Происходит указывание в никуда и RUNTIME- ерроры. Ну удачи! |
|||
|
||||
![]()
|
| Правила форума "С++:Общие вопросы" | |
|
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |