![]() |
|
![]() ![]() ![]() |
|
HyugaNeji |
|
|||
Новичок Профиль Группа: Участник Сообщений: 34 Регистрация: 28.6.2008 Репутация: нет Всего: нет |
Привет.
Ситуация такая: Есть форма f1 и форма f2. Как получить доступ из f2 к переменной "а" формы f1 , объявляя при этом "а" в файле реализации ".cpp". Пробывал через экстэрн, и через стрелку - через стрелку он невидит, а через экстэрн почему то создаётся другая переменная ( Хэлп плиз. Добавлено через 7 минут и 37 секунд Cори люди. Я случайно создал 2 одинаковой темы из-за глюка в браузере ( А как удалить незнаю. Если кто может удалите одну плз. |
|||
|
||||
kefir01 |
|
||||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 213 Регистрация: 22.6.2007 Репутация: 1 Всего: 2 |
в одной, только не cpp а h
а в другой cpp
|
||||
|
|||||
mrbrooks |
|
||||||||
![]() трололомен ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 4259 Регистрация: 4.10.2006 Где: Дол Гулдур Репутация: 167 Всего: 306 |
Достаточно своеобразный метод. ![]() По теме: можно конечно через extern
но как известно глобальные переменные зло. поэтому рекомендую в твоем случае имхо описать переменную в классе формы 1 в разделе public. из второго модуля ты сможешь ее вызвать уже как формы 1->переменная. разумеется надо подключить юниты друг к другу ![]() |
||||||||
|
|||||||||
Jorjio |
|
||||||
![]() Новичок Профиль Группа: Участник Сообщений: 45 Регистрация: 20.5.2008 Где: г. Москва Репутация: нет Всего: нет |
|
||||||
|
|||||||
HyugaNeji |
|
|||
Новичок Профиль Группа: Участник Сообщений: 34 Регистрация: 28.6.2008 Репутация: нет Всего: нет |
Спасибо зао ответы. Но мне нужно их объявить вообще без участия ".h".
Дело в том что я пытаюсь объявить указатель на форму. Если я обхявляю её в ".h" то программа пытается вызвать указатель на форму которую ещё не подгрузил через инклуд. Поэтому я хочу обхявлять её в ".cpp". Просто я объявляю в других формах инклудом первую форму, а в ".h" первой формы создаются указатели на другие формы. Вот так получается что загружается первая форма, подгружает вторую форму, вторая пытается подгрузить первую, в уже идёт объявление на указатель третьей формы, а её ещё не загружали. Надеюсь понятно написал. Вобщем ".h" вообще не должно учавствовать. |
|||
|
||||
mrbrooks |
|
|||
![]() трололомен ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 4259 Регистрация: 4.10.2006 Где: Дол Гулдур Репутация: 167 Всего: 306 |
тогда только extern либо синглетон, либо независымый класс со статическими переменными. но думаю первый вариант будет предпочтительней и легче для тебя имхо.
|
|||
|
||||
Jorjio |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 45 Регистрация: 20.5.2008 Где: г. Москва Репутация: нет Всего: нет |
Что-то я туплю, ничего не понимаю. Вопрос о динамически создаваемой форме? Зачем объявляешь её в .h. f1.cpp #define f1 #include f1.h #include f2.h .................................................... { TForm *Form2; Form2 = new TForm(this); Form2 -> Show(); } Что-то типа того что-ли? |
|||
|
||||
dasknix |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 16 Регистрация: 20.9.2009 Репутация: нет Всего: нет |
Вопрос о видимости в разных код-модулях (файлах .cpp), только
касается ф-ций-членов класса формы. Есть MainForm. В нём объявляется следующее:
Вопрос: как сделать определение (подчёркиваю - не объявление, а опр.) FormCreate(); в другом файле?.. Решил делать так: (UIAutomation - мой модуль кода) [UIAutomation.cpp] #include "UIAutomation.h" #include "MainForm.h" void __fastcall TfrmMain::FormCreate(Tobject *Sender) { // blah-blah-blah.. } Пилятар говорит что TfrmMain::FormCreate не есть член TfrmMain, интересно - почему, я уже пробовал переносить из __published в public (в объявлении класса формы), но это ничего не изменило, пробовал линковать кроссом .h (что по сути глупость, но мне нервы дороже -> чисто для патча совести сделал..) Где моя глупость и тренировать ли мышцы для общения с Embarcadero'вским суппортом? PS имхо нужно создать FAQ по С++ Builder, ибо (у меня, к примеру, при желании написать нормальный быстрый+полноценный win32-софт) возникает масса затруднений, которые не всегда можно преодалеть простым перечитыванием манов, затем форума, затем msdn, затем скрижали собственной кармы (e.g. "i'm L, isn't it?..") ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() Это сообщение отредактировал(а) dasknix - 13.11.2009, 04:44 |
|||
|
||||
![]() ![]() ![]() |
Правила форума "С++ Builder" | |
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Rrader. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | C++ Builder | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |