Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Передача указателя формы в процедуру dll


paule ©   (2005-06-07 05:47:00) 

Решил все собственные процедуры перенести в dll. Проблема в том, что процедуры используют данные содержащиеся в  Edit-ах в основной форме.

Процедура из dll:
...
procedure BalanseEnergy(f:TForm); export;
begin
  ShowMessage((f.findComponent('E1_1') as TEdit).Text);
end;

exports
 BalanseEnergy name 'BalanseEnergy';
...

Вызываю процедуру так

....
implementation

procedure BalanseEnergy(f:TForm); external 'OSGMDLL' name 'BalanseEnergy';
...
...
BalanseEnergy(Form1);

Но работать такая конструкция не хочет...

Подскажите, как сделать?


novice_man   (2005-06-07 10:50:00) [1]

Поместите их в PChar с разделителями.


TUser   (2005-06-07 10:50:00) [2]

> у меня Edit-ов 28 штук, не очень удобно 28 параметров передавать :)

Скорее всего, разумно засунуть их значения в какую-нибудь структуру (record, array) и передавать уже ее.

PS. ShareMem не забудьте.


paule   (2005-06-07 10:44:00) [3]

у меня Edit-ов 28 штук, не очень удобно 28 параметров передавать :)


novice_man   (2005-06-07 09:48:00) [4]

paule   (07.06.05 8:51) [2]
А каким образом тогда можно получить значение Edit-а в процедуре dll?


Какое значение? Текст? Передайте его туда при вызове процедуры.


paule   (2005-06-07 08:51:00) [5]

А каким образом тогда можно получить значение Edit-а в процедуре dll?


Юрий Зотов   (2005-06-07 05:55:00) [6]

Exe и DLL компилируются раздельно, поэтому класс в Exe и тот же самый класс в DLL - это два разных класса. Значит, для переданной ссылки на объект оператор AS правильно не сработает.

Компилируйте Exe и DLL с run-time пакетами. Или вместо DLL используйте BPL. Или используйте COM-технологию. Или откажитесь от передачи ссылок на объекты.


Наверх

Титульная страница Поиск, карта сайта Написать письмо