![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Передача указателя формы в процедуру 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-технологию. Или откажитесь от передачи ссылок на объекты.