Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > Технологии
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 12.10.2010, 18:24
Аватар для Fantomas_RUS
Fantomas_RUS Fantomas_RUS вне форума
Прохожий
 
Регистрация: 12.10.2010
Сообщения: 47
Репутация: 11
Вопрос Dll важный вопрос

Очень важно узнать как при помешении в dll формы и при выведении её в основной программе в режиме ShowModal, считать данные введённые пользователем в Edit и сохранить эти данные в переменной, которая в основной программе. Уже 2 дня мучаюсь по всякому, ни как не получаеться. Даже технологию не знаю. Учусь постепенно сам. Добрые люди, помогите....
Ответить с цитированием
  #2  
Старый 12.10.2010, 18:42
Аватар для v1s2222
v1s2222 v1s2222 вне форума
Продвинутый
 
Регистрация: 07.09.2010
Сообщения: 726
Репутация: 26711
По умолчанию

Ну я думаю это делается так:
создаете функцию в библиотеке, которая будет возвращать string, и экспортируете ее (exports), а в результат самой функции как раз и вставляете то, что ввел человек в едит. В главной программе вызываете функцию из длл и результат этой функции записываете в нужную вам переменную... Надеюсь поняли что я имею ввиду.
__________________
Помогаю за Спасибо
Ответить с цитированием
  #3  
Старый 12.10.2010, 21:56
Аватар для Fantomas_RUS
Fantomas_RUS Fantomas_RUS вне форума
Прохожий
 
Регистрация: 12.10.2010
Сообщения: 47
Репутация: 11
По умолчанию

Цитата:
Сообщение от v1s2222
Ну я думаю это делается так:
создаете функцию в библиотеке, которая будет возвращать string, и экспортируете ее (exports), а в результат самой функции как раз и вставляете то, что ввел человек в едит. В главной программе вызываете функцию из длл и результат этой функции записываете в нужную вам переменную... Надеюсь поняли что я имею ввиду.

Да понял. Но вот факт. При создании в dll формы, к ней присоединяеться её pas. Открываю в главной форме функцию dll, в которой прописаны такие строчки
Код:
var FormE: TForm1;
begin
FormE:=Tform2.Create(AOwner);
FormE.ShowModal;
.
.
.

При запуске открываеться окно в котором есть Edit. Так вот после ввода и нажатии кнопки ОК как передать данные введённые в Edit в главную или хотя бы чтоб Dll это увидел их. А так Dll не видит глобальную переменную которая описана в форме FormE. А при обращении из FormE к переменным которые прописаны в dll в моей функции компилятор выдаёт ошибку. Даже не знаю что делать...

Последний раз редактировалось Fantomas_RUS, 12.10.2010 в 22:00.
Ответить с цитированием
  #4  
Старый 12.10.2010, 22:05
Аватар для v1s2222
v1s2222 v1s2222 вне форума
Продвинутый
 
Регистрация: 07.09.2010
Сообщения: 726
Репутация: 26711
По умолчанию

Глобальную переменную вставь в саму длл, а при изменение едита, дописывай / изменяй.
__________________
Помогаю за Спасибо
Ответить с цитированием
  #5  
Старый 12.10.2010, 22:21
Аватар для Fantomas_RUS
Fantomas_RUS Fantomas_RUS вне форума
Прохожий
 
Регистрация: 12.10.2010
Сообщения: 47
Репутация: 11
По умолчанию

Цитата:
Сообщение от v1s2222
Глобальную переменную вставь в саму длл, а при изменение едита, дописывай / изменяй.


Если можно приведите код. Так как я пытался глобальную переменную вставлять и в Dll но форма её не видит которая с editom.
Ответить с цитированием
  #6  
Старый 12.10.2010, 22:43
Аватар для v1s2222
v1s2222 v1s2222 вне форума
Продвинутый
 
Регистрация: 07.09.2010
Сообщения: 726
Репутация: 26711
По умолчанию

Извеняюсь, в самой длл писать не надо (надо или создать модуль новый), или писать в самой форме.
Объявить переменную, после var Form1: TForm1; S: String;
А потом к ней обращаться...
__________________
Помогаю за Спасибо
Ответить с цитированием
  #7  
Старый 12.10.2010, 22:51
lmikle lmikle вне форума
Модератор
 
Регистрация: 17.04.2008
Сообщения: 8,015
Версия Delphi: 7, XE3, 10.2
Репутация: 49089
По умолчанию

Код длл:
Код:
function ShowMyDLLForm(var OutParam1 : Integer; var OutParam2 : String) : Boolean;
begin
  With TForm1.Create(Nil) Do
     Begin
       Edit1.Text  := IntToStr(outParam1);
       Edit2.Text := OutParam2;

       Result  := ShowModal = mrOK;

       OutParam1 := StrToint(Edit1.Text);
       OutParam2 := Edit2.Text;

       Free;
     End;
end;

код вызова (импорт пропущен):
Код:
var
  I : Integer;
  S : String;
begin
   I := 5;
   S := 'call from main';

   if ShowMyDLLForm(I,S) 
     Then ShowMessage(Format('OK. New values is ''%d'' and ''%s''.',[I,S]))
      Else ShowMessage('Cancel');
end;
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра
Комбинированный вид Комбинированный вид

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 15:37.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter