C++ Builder
| Главная | Уроки | Статьи | FAQ | Форум | Downloads | Литература | Ссылки | RXLib | Диски |

 
Переменная, Общая переменная
Антон
  Отправлено: 28.12.2005, 18:58


Не зарегистрирован







Подскажите как сделать общую переменную для нескольких форм!
При нажатии кнопки числа из Edit'ов разных форм должны складываться в общее число и выводится. wink.gif
Aptem
Отправлено: 28.12.2005, 19:50


Мастер участка

Группа: Участник
Сообщений: 349



Есть много вариантов. Один из них, это обьявить переменную в одной из форм, и подключить заголовок этой формы в других формах.
Георгий
Отправлено: 28.12.2005, 22:08


Почетный железнодорожник

Группа: Модератор
Сообщений: 874



а ещё один вариант — использовать поиск
kea
Отправлено: 30.12.2005, 15:40


Станционный диспетчер

Группа: Участник
Сообщений: 80



Здравствуйте! Помогите пожалуйста разобраться с простым вопросом.

В одном юните (подключается к другим юнитам) глобально объявлена строка AnsiString содержащая общее сообщение. Выдается Linker Warning, что эта переменная объявлена в обоих модулях. Как этого избежать?
gvg
Отправлено: 30.12.2005, 16:07


Машинист паровоза

Группа: Участник
Сообщений: 222



Не обьявлять в обеих модулях.
1. Надо определиться, где ее объявить.
2. Объявить где решили.
Например, если в Form1, тогда в соответствующем тот_самый.h описать ее как
extern ТИП_ПЕРЕМЕННОЙ ИМЯ_ПЕРЕМЕННОЙ
В том_самом.cpp должна быть строка
ТИП_ПЕРЕМЕННОЙ ИМЯ_ПЕРЕМЕННОЙ;

3. В тех модулях (*.cpp), где она используется, должна присутствовать строка
#include "тот_самый.h"

А, вообще, вопрос на уровне детсада...
kea
Отправлено: 31.12.2005, 00:20


Станционный диспетчер

Группа: Участник
Сообщений: 80



QUOTE (gvg @ 30/12/2005, 16:07)
А, вообще, вопрос на уровне детсада...

Спасибо за обстоятельный ответ.
kea
Отправлено: 04.01.2006, 19:45


Станционный диспетчер

Группа: Участник
Сообщений: 80



Здравствуйте! А если объявление следующего вида:
MyClass Msg("This is my class"); на глобальном уровне и хочу, чтобы он был доступен в других юнитах, то как быть?
gvg
Отправлено: 06.01.2006, 12:38


Машинист паровоза

Группа: Участник
Сообщений: 222



QUOTE (kea @ 04/01/2006, 19:45)
Здравствуйте! А если объявление следующего вида:
MyClass Msg("This is my class"); на глобальном уровне и хочу, чтобы он был доступен в других юнитах, то как быть?

Msg — это что, метод вашего класса MyClass? Или функция Msg, возвращающая класс MyClass? Само это объявление непонятно...
kea
Отправлено: 07.01.2006, 15:38


Станционный диспетчер

Группа: Участник
Сообщений: 80



QUOTE (gvg @ 06/01/2006, 12:38)
QUOTE (kea @ 04/01/2006, 19:45)
Здравствуйте! А если объявление следующего вида:
MyClass Msg("This is my class"); на глобальном уровне и хочу, чтобы он был доступен в других юнитах, то как быть?

Msg — это что, метод вашего класса MyClass? Или функция Msg, возвращающая класс MyClass? Само это объявление непонятно...

Здравствуйте! Msg это объект(экземпляр) класса MyClass.
gvg
Отправлено: 07.01.2006, 23:08


Машинист паровоза

Группа: Участник
Сообщений: 222



Ерунда какая... Зачем держать объект с каким-то "This is my class" постоянно? А может он не потребуется? Впрочем, как вам будет угодно. Вставьте строку
extern MyClass Msg;
в *.h соответствующего *.cpp, включенного в ваш проект. Затем
MyClass Msg("This is my class");
в этом *.cpp.

И вставьте
#include этот.h
в *.cpp, где он (Msg) будет использоваться.

Бог мой, что я советую... Все тот-же детский сад...
kea
Отправлено: 08.01.2006, 13:38


Станционный диспетчер

Группа: Участник
Сообщений: 80



Здравствуйте! И все же спасибо за совет. Бывает, тормозишься на мелочах, бывают праздники (вы же сами писали :-)) )

Вернуться в Вопросы программирования в C++Builder