![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Передать объект в DLL [D6, Win95/98]
b-Ars © (2003-02-06 12:28:00)Здравствуйте! Нужна компетентная информация. Как передавать в/из DLL не просто строки или числа, а объекты, например, если у меня есть в проге компонент TTable, и я им же хочу воспользоваться в библиотеке. Да, и про BORLNDMM.DLL можно поподробнее? Спасибо.
Palladin (2003-02-06 13:10:00) [21]какие еще утечки памяти, откуда они тут могут быть?
естественно память утечет :)) если ты TTable не освободишь.
Но ты должен определится где TTable у тебя будет создаватся и где освобождатся...
вообще говоря не вижу ничего в этом вопросе связанного с утечкой памяти...
b-Ars (2003-02-06 13:04:00) [22]>Palladin © (06.02.03 12:59)
Так, ок, а про утечки памяти в этом случае (как раз F1). Это вот не очень понятно.
b-Ars (2003-02-06 13:02:00) [23]>mrcat © (06.02.03 12:54)
Оч. остроумно... Английский язык я знаю. Думал, может кто опытом поделится, может там ещё какие тонкости как обычно. А за синк спасибо.
А ситуация такая: надо, чтобы процедуры из DLL умели пользоваться методами и свойствами того же TTable из главной программы.
Palladin (2003-02-06 12:59:00) [24]почему?
можно.
Само использование TTable уже предполагает что библиотека будет использоватся только прогой написаной на делфи...
так что можно смело писать и так.
mrcat (2003-02-06 12:54:00) [25]b-Ars © (06.02.03 12:28)
F1
On Windows, if a DLL exports routines that pass long strings or dynamic arrays as parameters or function results (whether directly or nested in records or objects), then the DLL and its client applications (or DLLs) must all use the ShareMem unit. The same is true if one application or DLL allocates memory with New or GetMem which is deallocated by a call to Dispose or FreeMem in another module. ShareMem should always be the first unit listed in any program or library uses clause where it occurs.
ShareMem is the interface unit for the BORLANDMM.DLL memory manager, which allows modules to share dynamically allocated memory. BORLANDMM.DLL must be deployed with applications and DLLs that use ShareMem. When an application or DLL uses ShareMem, its memory manager is replaced by the memory manager in BORLANDMM.DLL.
Linux uses glibc’s malloc to manage shared memory.
Как передавать в/из DLL не просто строки или числа, а
объекты
http://delphi.mastak.ru/articles/dll_use/index.html
b-Ars (2003-02-06 12:48:00) [26]>Palladin © (06.02.03 12:36)
Честное слово совпадение :)))
Т.е. просто сделать процедуру myProc(MyTable: TTable) в DLL нельзя?
AlexanderSK (2003-02-06 12:47:00) [27]Это совпадение! А подробней можно? А то видимо я что-то не так передаю (через указатели) не работает!
Palladin (2003-02-06 12:36:00) [28]либо у тебя два ника... либо это совпадение...
http://delphi.mastak.com/cgi-bin/forum.pl?look=1&id=1044523487&n=0
передавай их как pointer, или integer :)) и делай привидение типов в dll.
может получится :)