Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2003.06.12;
Скачать: [xml.tar.bz2];

Вниз

Использование DLL созданной в D7 для D5   Найти похожие ветки 

 
АлексейК   (2003-06-02 08:28) [0]

DLL скомпилирована в D7 с использованием в параметре эспортируемой процедуры делфянского типа, например
procedure test(aEdit:TEdit; ....);
Если же я подключаю эту DLL в программе скомпилированной на D5 и передаю в процедуру Edit, то любое обращение к методам параметра, например
value:=aEdit.Text
Вызывает ошибку Access Violation. Использование этой DLL в D7 ошибок не вызывает. Ошибка, конечно, закономерна. Однако есть ли какой-нибудь выход из данной ситуации.


 
Rocker   (2003-06-02 08:38) [1]

Фирма Borland делает все для несовместимости версий Delphi/
Лучше не пудри себе мозги и пользуйся одинаковыми версиями Delphi - так намного проще, чем исправлять какие-то там ошибки.


 
АлексейК   (2003-06-02 08:43) [2]

А еще какие-нибудь рекомендации будут?


 
Dmitry W. Polschanov   (2003-06-02 09:29) [3]

То, что ваш код оказался несовместим с предъидущими реализациями - в этом Borland не виноват.
Никто никогда не рекомендовал передавать делфийские объекты через параметры процедур в DLL.
Если уж нужно передавать что-то сложное - следует оформлять
все через Record. Или, если уж сильно хочется занятся ООП, то interface.


 
ppcat   (2003-06-02 09:30) [4]

Можно попробовать передавать в DLL не указатель на TEdit, а aEdit.Handle. В DLL создавать свой TEdit и присваивать ему переданный Handle. С точки зрения Windows это корректно, но у Borland могут быть свои заморочки, так что за результат не ручаюсь.


 
Anatoly Podgoretsky   (2003-06-02 10:31) [5]

Ничего хорошего все равно не будет, в ДЛЛ свой менеджер памяти ддя классов и объектов. Надо или не использовать объекты или исаользовать BPL


 
АлексейК   (2003-06-02 12:17) [6]

А разве использование BPL не приведет к той же ошибки, что и в DLL?
В передаваемом объекте, мне нужны для использования лишь 5 методов. Обращаясь к методу
aEdit.Text,
я обращаюсь по адресу памяти, либо несуществующему, либо где этого метода нет. Однако если бы заранее выделить адреса памяти, по которому располагается метод, и обращатся к этому методу по ссылке на адресс. Но будет ли это работать?


 
Skier   (2003-06-02 12:29) [7]

>АлексейК (02.06.03 08:28)
Host-приложение и DLL имеют разную "таблицу классов", т.е.
указатели на VMT и таблицу RTTI для одних и тех же классов в Host-приложение и DLL будут разными.

Поэтому :
1) Перезавай не aEdit, а, скажем (судя по твоему коду), PChar(aEdit.Text)
2) Используй пакеты


 
Anatoly Podgoretsky   (2003-06-02 12:37) [8]

Приведет конечно, не стоит передавать объекты.


 
АлексейК   (2003-06-02 12:52) [9]

Ну хорошо, а если колличиство параметров величина переменная, то что посоветуете в данном случае. По сути в DLL необходимо создать точную копию объекта в приложении.


 
Anatoly Podgoretsky   (2003-06-02 12:54) [10]

И как тебе удалось создать в дельфи 7 функции с переменным количеством параметров?


 
АлексейК   (2003-06-02 13:00) [11]

>Anatoly Podgoretsky ©
В D7 я передавал ссылку на объект и ошибки не возникало. Ошибка стала возникать, при подлючении к приложению скомпилированном на D5.





Страницы: 1 вся ветка

Форум: "Основная";
Текущий архив: 2003.06.12;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.46 MB
Время: 0.007 c
9-34663
Ketmar
2002-12-28 21:05
2003.06.12
помогите, плиз. сильно надо...


14-35035
Vlad Oshin
2003-05-26 10:54
2003.06.12
Да что такое...когда надо что-то делать - хочется делать со-


3-34717
BBCHa
2003-05-23 13:54
2003.06.12
Тип uniqueidentifie в MSSQL 2000


3-34669
opteron
2003-05-22 02:08
2003.06.12
Есть полученная из Оракла таблица ....


14-35070
rosl
2003-05-28 09:20
2003.06.12
запустить на другом компе





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский