Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > C++ Builder
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 03.06.2015, 17:36   #1
EHOTproger
 
Аватар для EHOTproger
 
Регистрация: 03.06.2015
Сообщений: 3
Вопрос Передача переменных при вызове функции между модулями

Здравствуйте.
Переводится программа с VCL формой из Delphi в С++.
В главное модуле VCL форма, во втором модуле Unit без формы.
В главном модуле (pas) определяются переменные, объявленные во втором модуле, и вызывается функция из второго модуля без параметров, однако переменные всё же передаются.
Вызов функции происходит в процедуре AppIdle до определённого момента по условию (if параметр = true then Done = false).
В Delphi после вызова функции происходит выполнение функции во втором модуле, после завершения выполнения происходит возврат в процедуру AppIdle, однако переменные, изменённые во втором модуле, сохраняют свои значения.

При переводе в С++ в аналогичной функции AppIdle при вызове функции в главном модуле с VCL формой (cpp) без параметров переменные не передаются во второй модуль Unit (cpp) и при вызове функции никакие переменные не изменяются при присваивании.
Если указать в параметрах вызываемой функции переменные - они передаются в функцию и значения изменяются, однако при завершении выполнения вызываемой функции переменные не сохраняют свои изменённые значения.
После возврата в главный модуль и вызове повторно функции из второго модуля передаются стартовые значения, а не изменённые.

Объявление в главном модуле переменных extern не помогает (возможно неверно).
Каким образом в С++ организовать передачу параметров функции между модулями аналогично Delphi?

Если нужно будет предоставлю код и уточню детали.
Заранее спасибо.
EHOTproger вне форума Ответить с цитированием
Старый 03.06.2015, 19:37   #2
waleri
Старожил
 
Регистрация: 13.07.2012
Сообщений: 6,331
По умолчанию

Воспользуйтесь ссылками:
void function(int & arg)
{
arg = 123;
}
waleri вне форума Ответить с цитированием
Старый 03.06.2015, 19:42   #3
EHOTproger
 
Аватар для EHOTproger
 
Регистрация: 03.06.2015
Сообщений: 3
По умолчанию

Цитата:
Сообщение от waleri Посмотреть сообщение
Воспользуйтесь ссылками:
void function(int & arg)
{
arg = 123;
}
При объявлении функции и/или при вызове тоже?
EHOTproger вне форума Ответить с цитированием
Старый 03.06.2015, 19:45   #4
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
Если указать в параметрах вызываемой функции переменные - они передаются в функцию и значения изменяются, однако при завершении выполнения вызываемой функции переменные не сохраняют свои изменённые значения.
Т.е. ты хочешь сделать var-параметр? Передавай тогда указателем.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 04.06.2015, 03:09   #5
EHOTproger
 
Аватар для EHOTproger
 
Регистрация: 03.06.2015
Сообщений: 3
По умолчанию

Спасибо за ответы, но решение нашёл другое.
Ключевое это объявление переменных через extern в header файле (второго модуля) и дубль объявления переменных без extern в cpp файле (второго модуля).
Передавать переменные в функции при этом не требуется, вызов функции требуется оставить без параметров.
EHOTproger вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Ошибка при вызове функции Vilkas Помощь студентам 2 19.12.2014 06:18
Передача данных(переменных) между двумя пользователями. (AJAX?) Mr_freeman JavaScript, Ajax 7 08.03.2012 23:56
Передача данных между модулями. C++ paravoz1k Помощь студентам 3 13.12.2011 11:12
Передача переменных между процедурами Wi1D Помощь студентам 2 14.12.2008 23:55
передача переменных между страницами fufel JavaScript, Ajax 10 22.10.2007 17:04