Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 17.04.2009, 12:12   #1
Creadth
 
Регистрация: 17.04.2009
Сообщений: 8
По умолчанию Указатели в DLL

Здравствуйте, вопрос такой. Передаю в DLL указатель на класс. При попытке вызвать в библиотеке через этот указатель одну из процедур класса, получаю ошибку Invalid Pointer Operation. Смотрел где вылетает - на строчке FreeMem. Класс писал не я, не могли бы подсказать, что делаю не так?
Creadth вне форума Ответить с цитированием
Старый 17.04.2009, 12:52   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Код в студию.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 17.04.2009, 14:13   #3
Creadth
 
Регистрация: 17.04.2009
Сообщений: 8
По умолчанию

Спасибо, я уже сам разобрался )) Проблема была в том, что в классе были переменные типа String, подключил ShareMem. Теперь другая проблема возникла, если при завершении приложения выскакивает аналогичная ошибка - это значит что я не освободил память?
Creadth вне форума Ответить с цитированием
Старый 17.04.2009, 14:25   #4
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Это может означать все что угодно.
Вообще такие штуки лучше делать в BPL-ках, ибо с ними Делфи работает гораздо корректнее (родные всетки)
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 17.04.2009, 14:31   #5
Creadth
 
Регистрация: 17.04.2009
Сообщений: 8
По умолчанию

Ясно.. А ShareMem может как - то влиять на ошибку? Просто сейчас все убрал из приложения, только голую форму оставил - лезет ошибка на завершении
Creadth вне форума Ответить с цитированием
Старый 17.04.2009, 14:59   #6
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
А ShareMem может как - то влиять на ошибку?
Не работал с ним. Я в ДЛЛ только Pchar рулил
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 17.04.2009, 15:48   #7
BOBAH13
Android Developer
Старожил Подтвердите свой е-майл
 
Аватар для BOBAH13
 
Регистрация: 19.02.2007
Сообщений: 3,708
По умолчанию

String нельзя использовать в DLL. Использовать только указатели PChar или PWChar. BPL - честно говоря это мне кажется вообще не вариант.
Перепишите все String только на PChar и PWChar проблемы все пропадут
BOBAH13 вне форума Ответить с цитированием
Старый 17.04.2009, 17:25   #8
Creadth
 
Регистрация: 17.04.2009
Сообщений: 8
По умолчанию

String можно использовать в DLL. Проблема связанная со строками в библиотеках существует только из - за менеджера памяти. Поэтому и есть такая штука как Sharemem.
Creadth вне форума Ответить с цитированием
Старый 17.04.2009, 19:07   #9
JTG
я получил эту роль
Старожил
 
Аватар для JTG
 
Регистрация: 25.05.2007
Сообщений: 3,694
По умолчанию

ShareMem должен быть и в проекте и в dll первым в списке модулей.
Т.е. не в Unit1.pas, а в Project1.dpr и Library1.dpr

Кстати чтоб не таскать с собой лишнюю дллку, есть неплохая альтернатива - FastShareMem
пыщь
JTG вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Указатели Mango Помощь студентам 2 09.12.2008 12:15
Указатели JOFRIF Общие вопросы C/C++ 2 31.08.2008 18:34
Указатели Принц Общие вопросы C/C++ 2 08.06.2008 16:15
Указатели в Си Иллидан Общие вопросы C/C++ 7 20.02.2008 11:14
Указатели Си JET_FLASH Общие вопросы C/C++ 2 31.01.2008 23:02