Объясните плз, почему так глючит UseHiDll, проблема в нем или я что-то не так делаю??
Схема: code_36512.txt (4 компонента!)
Схема DLL: code_36513.txt (1 компонент)
Первый раз срабатывает, на второй Runtime Error
Этот топик читают: Гость
Ответов: 655
Рейтинг: 18
|
|||
карма: 0 |
| ||
файлы: 2 | code_36512.txt [399B] [328], code_36513.txt [308B] [355] |
Ответов: 8926
Рейтинг: 823
|
|||
Gunnman, если бы я использовал HiDll, то именовал точки входа/выхода смысловыми ИМЕНАМИ, например TextIn или OutText, но никогда не применил цифры в качестве имени
|
|||
карма: 19 |
|
Ответов: 655
Рейтинг: 18
|
|||
Леонид, я уже все перепробовал, глючит его как точки не называй...
|
|||
карма: 0 |
|
Ответов: 8926
Рейтинг: 823
|
|||
Леонид писал(а): ..если бы я использовал HiDll.. |
|||
карма: 19 |
|
Ответов: 4630
Рейтинг: 749
|
|||
Вообще-то, для возможности передачи строк между DLL и программой нужны дополнительные телодвижения в плане создания общего менеджера памяти. Это кто-то предусмотрел в hiDLL.pas и в make_dll?
|
|||
карма: 26 |
|
Ответов: 824
Рейтинг: 138
|
|||
карма: 1 |
| ||
файлы: 2 | code_36514.txt [589B] [257], code_36515.txt [437B] [227] | ||
Голосовали: | Tad, Gunnman, kaban4ik |
Ответов: 655
Рейтинг: 18
|
|||
А кто разработчик компонента? Может он доработает компонент?
Рано или поздно вопрос по работе с строками в DLL опять всплывет. Да и делать описание к компоненту "Только не работайте со строками" не логично ------------ Дoбавленo в 13.30: sashaoli, неее ну так не честно п.с. спасибо!! |
|||
карма: 0 |
|
Ответов: 4630
Рейтинг: 749
|
|||
Можно перед инициализацией DLL передавать в неё свой Memory Manager:
В THIUseHiDLL.SetName
В make_dll.dpr сформировать следующий код для сгенерированного проекта DLL:
Либо из exe-шника передать функцию, конструирующую копию строки. DLL будет вызывать эту функцию при выдаче строк "наружу". |
|||
карма: 26 |
|
Ответов: 16884
Рейтинг: 1239
|
|||
Мимо шёл...
Gunnman писал(а): спасибо!! |
|||
карма: 25 |
|
Ответов: 655
Рейтинг: 18
|
|||
Так я вроде плюсовал О_о, не засчиталось! Сейчас плюсанул, засчиталось..
------------ Дoбавленo в 15.12: Netspirit писал(а): Можно перед инициализацией DLL передавать в неё свой Memory Manager:В THIUseHiDLL.SetName |
|||
карма: 0 |
|
Ответов: 8926
Рейтинг: 823
|
|||
Tad писал(а): ..Твоё "спасибо" в карман.. |
|||
карма: 19 |
|
Ответов: 1841
Рейтинг: 369
|
|||
[offtop]
Ох, помню разбирал этот элемент буквально по каждой букве, когда подключал пакет к плюсам... Запутанный он, жуть просто. Так и не смог перевести его в полной мере на плюсы, слишком много Delphi магии тут присутствует Ещё и разные колбеки на публичные методы вложенного класса, которые вызываются для взаимодействия с приватными методами этого же вложенного класса... [/offtop] |
|||
карма: 1 |
|
Ответов: 655
Рейтинг: 18
|
|||
Netspirit, подскажите пожалуйста куда поместить указанный вами код в make_dll.dpr ? С THIUseHiDLL.SetName вроде разобрался.
|
|||
карма: 0 |
|
Ответов: 4630
Рейтинг: 749
|
|||
ElementsDelphimake. Потом выполнить make.bat там же. Я не ручаюсь за работоспособность приведенного мной кода. Я высказал только суть решения. Применяй это только если ты достаточно знаешь Delphi и понимаешь принцип предложенного решения, чтобы реализовать его самостоятельно.
|
|||
карма: 26 |
|
14