![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
DLL & Packages [D7, WinXP]
LinaIns © (2005-02-12 07:21:00)В программе нужно использовать плагины, которые постоянно обмениваются с основной программой динамическими массивами. Реализовала на DLL'ках, но некоторые юзеры ругаются, что иногда программа выдает ошибку (хотя свои функции выполняет).
Предлагали сделать все на Packages, которые при выполнении находятся с программой в одной области памяти и поэтому не требуют геммороя с разделением.
Насколько их использование увеличивает размер конечной программы и объем оперативной памяти, которую она занимает?
Eraser (2005-02-13 16:25:00) [1]olookin ©
А массивы чисел тоже через PChar?
Лично я в фукнцию бибилиотеки передаю указатель на массив, а не сам массив.
PChar это и есть указатель на массив байт.
Не обязательно использовать именно PChar.
MBo (2005-02-13 15:43:00) [2]>которые при выполнении находятся с программой в одной области памяти
Проблема не в этом. DLL тоже работает, если можно так сказать, в адресном пространстве процесса, который ее использует.
Дело в том, что при работе с динамическими массивами и длинными строками должен быть общий менеджер памяти - для этого используется ShareMem (о чем написано в комментарии при создании новой DLL), либо пакеты.
olookin (2005-02-13 15:33:00) [3][1] Eraser © (12.02.05 11:42)
>>Передавай параметры, не в динамических масивах, а через PCHAR.
А массивы чисел тоже через PChar?
LinaIns (12.02.05 07:21)
Лично я в фукнцию бибилиотеки передаю указатель на массив, а не сам массив. Что несколько усложняет код в программе-вызывальщице, но зато работает без ошибок.
Eraser (2005-02-12 11:42:00) [4]Зачем изобретать велосипед, если он уже изобретён?
Передавай параметры, не в динамических масивах, а через PCHAR.
Или в крайнем случае используй модуль ShareMem.