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

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

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 23.08.2008, 00:53   #1
Roof
Форумчанин
 
Аватар для Roof
 
Регистрация: 01.02.2007
Сообщений: 785
По умолчанию взять переменную из dll

Как мне переменную, полученную в dll передать в основное приложение?
В данном случае мне нужно передать переменную a из dll. Исходник прилагается.
Mainn.dpr - проект основного приложения.
libr.dpr - проект библиотеки.
Unit1.pas - модуль с формой, которую загружаю в dll.
Изо всей благодати
В руках крепко сжатых
Я донесу только капли
Roof вне форума Ответить с цитированием
Старый 23.08.2008, 07:23   #2
BOBAH13
Android Developer
Старожил Подтвердите свой е-майл
 
Аватар для BOBAH13
 
Регистрация: 19.02.2007
Сообщений: 3,708
По умолчанию

Мда... а исходник то забыли Может:
Код:
procedure SendA: Pointer; stdcall; export;
begin
  Result := @a;
end;
BOBAH13 вне форума Ответить с цитированием
Старый 23.08.2008, 11:35   #3
Ulagay700
Пользователь
 
Регистрация: 07.11.2007
Сообщений: 91
По умолчанию

А в чем разница с передачей из обычной переменной?
Ulagay700 вне форума Ответить с цитированием
Старый 24.08.2008, 18:41   #4
Roof
Форумчанин
 
Аватар для Roof
 
Регистрация: 01.02.2007
Сообщений: 785
По умолчанию

dll parametrs.rar - это первоначальный исходник.
dll parametrs popitka.rar - это я пытался экспортировать функцию, содержащую переменную, но выходит, что она передается только со второго раза...
Вложения
Тип файла: rar dll parametrs.rar (11.6 Кб, 13 просмотров)
Тип файла: rar dll parametrs popitka.rar (12.0 Кб, 10 просмотров)
Изо всей благодати
В руках крепко сжатых
Я донесу только капли
Roof вне форума Ответить с цитированием
Старый 24.08.2008, 19:06   #5
alexBlack
Участник клуба
 
Регистрация: 12.10.2007
Сообщений: 1,204
По умолчанию

У Вас делается вызов:

ShowForm(Application.Handle, Self.Handle);
Label1.Caption:= ex_a; // ворзвращает a

и только потом на форме ButtonClick присваивает возвращаемой переменной значение. Поэтому со второго раза.

Непонятно, что Вы хотите добиться ?
Или делайте ShowModal или вызов функции ex_a в другом месте (после закрытия формы) или инициализацию переменной по-другому

// ShareMem must be the first unit in your library's USES clause AND your project's

Пример во вложении
Вложения
Тип файла: rar test.rar (4.7 Кб, 19 просмотров)

Последний раз редактировалось alexBlack; 24.08.2008 в 19:30.
alexBlack вне форума Ответить с цитированием
Старый 24.08.2008, 22:55   #6
Roof
Форумчанин
 
Аватар для Roof
 
Регистрация: 01.02.2007
Сообщений: 785
По умолчанию

Цитата:
Непонятно, что Вы хотите добиться ?
У меня на форме в dll идут расчеты. Результат мне нужно вывести на главную форму в мое приложение.
Цитата:
ли вызов функции ex_a в другом месте (после закрытия формы) или инициализацию переменной по-другому
- вот как это в моем примере сделть?
Изо всей благодати
В руках крепко сжатых
Я донесу только капли
Roof вне форума Ответить с цитированием
Старый 25.08.2008, 08:00   #7
alexBlack
Участник клуба
 
Регистрация: 12.10.2007
Сообщений: 1,204
По умолчанию

Цитата:
Сообщение от Roof Посмотреть сообщение
У меня на форме в dll идут расчеты. Результат мне нужно вывести на главную форму в мое приложение.
- вот как это в моем примере сделть?
Принцип тот-же, как показано в примере.
Данные для расчетов передаются при вызове функции dll. В dll - ShowModal и результаты записываются в структуру. Или без формы. Просто вызов функции, которая и будет делать все расчеты.
alexBlack вне форума Ответить с цитированием
Старый 25.08.2008, 14:01   #8
Roof
Форумчанин
 
Аватар для Roof
 
Регистрация: 01.02.2007
Сообщений: 785
По умолчанию

2 alexBlack - не ShowModal меня не устраивает так как необходимо свободное переключение между формами и без формы меня не устраивает. Сделал без ShowModal и с формой. Но по-другому.
Вопрос решен.
Вложения
Тип файла: rar dll_parametrs pop1.rar (10.3 Кб, 19 просмотров)
Изо всей благодати
В руках крепко сжатых
Я донесу только капли
Roof вне форума Ответить с цитированием
Старый 26.08.2008, 10:20   #9
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
Как мне переменную, полученную в dll передать в основное приложение?
Можно обьявить ее на экспорт и получать ее адрес через GetProcAddress
Или пусть какая нить функа возвращает ее значение
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 26.08.2008, 13:10   #10
Roof
Форумчанин
 
Аватар для Roof
 
Регистрация: 01.02.2007
Сообщений: 785
По умолчанию

2 Stilet а примерчик можно?
Изо всей благодати
В руках крепко сжатых
Я донесу только капли
Roof вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
где описать переменную Manitu Помощь студентам 2 14.05.2008 18:23
Добавить переменную в $_POST jziiiiiii PHP 4 23.02.2008 13:56
Занесение данных в переменную jora-objora Помощь студентам 2 05.01.2008 20:12
Как задать мнимую переменную AlexVI Общие вопросы Delphi 2 21.01.2007 03:00
передать переменную ar4i Общие вопросы Delphi 10 04.12.2006 14:30