Как передавать данные между модулями?

Ответить

Код подтверждения
Введите код в точности так, как вы его видите. Регистр символов не имеет значения.

BBCode ВКЛЮЧЁН
[img] ВКЛЮЧЁН
[url] ВКЛЮЧЁН
Смайлики ОТКЛЮЧЕНЫ

Обзор темы
   

Развернуть Обзор темы: Как передавать данные между модулями?

Re: Как передавать данные между модулями?

Гость » 29 фев 2020, 20:24

Umnik1 писал(а): 20 дек 2008, 16:35 Как передавать данные между модулями? Допустим, у меня один *.cpp модуль связан с формой, а другой, в котором выполняются какие-нибудь расчеты - не связан. Как передать, например, какую-то переменную из одного модуля в другой?

Re: Как передавать данные между модулями?

Umnik1 » 08 фев 2009, 21:46

спасибо, не знал про такое)

Re: Как передавать данные между модулями?

WinMain » 03 фев 2009, 21:20

Использование глобальных переменных и спецификатора extern - это классический вариант, но далеко не всегда самый лучший. Вообще злоупотребление глобальными переменными является признаком плохого стиля в программировании.
В связи с этим Windows позволяет обмениваться строками через системные переменные среды окружения. Это функции GetEnvironmentVariable(), SetEnvironmentVariable().
Это своего рода ассоциативный контейнер, предоставляемый системными функциями. Но что мешает использовать стандартные ассоциативные контейнеры С++ для обмена данными между программными модулями? Это несколько замедлит обращение к переменным из-за необходимости её поиска в контейнере, но зато не придётся создавать кучу глобальных переменных.
Можно даже обычный последовательный массив использовать, а константы индексов описать в перечислении (enum {...}).

Re: Как передавать данные между модулями?

atavin-ta » 03 фев 2009, 13:49

Проще всё. Объяви в передающем модуле extern переменную с теми же типом и имненем, как и переменная, в которую передаёшь и никаких гвоздей. extern будет вторым объявлением той-же переменной, что позволит разделять данные. Причём, можно сдалать и наоборот - читать внешние данные в модуле, имеющем extern объявление. А то, что ты написал, называется: "как купив билет на самолёт дойти пешком до пункта назначения?"! То есть компилятор, поддерживающий более простой вариант текста, ты уже купил. Так зачем же мучиться с функцией?

Re: Как передавать данные между модулями?

Airhand » 21 дек 2008, 12:53

Я так понял программа на C++ Builder. Тогда не обязательно определять класс. Можно обьявить глобальную переменную, а в другом модуле сделать её extern.
Вообще, существует много способов передачи. Например, можно передать через память. Надо определиться как удобнее.

Re: Как передавать данные между модулями?

Albor » 20 дек 2008, 18:58

Если переменная объявлена как public, то можно и без функции, а если private, то без функции никак. В любом случае нужно иметь объект класса для доступа к его данным. То есть, если какой либо модуль получает данные из формы, то в этом модуле должен быть объявлен объект типа "форма".

Re: Как передавать данные между модулями?

Umnik1 » 20 дек 2008, 18:33

Спасибо,
А как в общем случае данные передавать? не через функцию, а если мне просто надо передать из одного модуля в другой? описать класс и использовать переменную-член класса? или я чето не понимаю?

Re: Как передавать данные между модулями?

Albor » 20 дек 2008, 17:18

В классе, связанном с формой, определи функцию, возвращающую значение нужной переменной. Вызвав функцию, получишь нужное значение.

Как передавать данные между модулями?

Umnik1 » 20 дек 2008, 16:35

Как передавать данные между модулями? Допустим, у меня один *.cpp модуль связан с формой, а другой, в котором выполняются какие-нибудь расчеты - не связан. Как передать, например, какую-то переменную из одного модуля в другой?

Вернуться к началу