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

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

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

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 18.09.2009, 18:48   #1
Alex Cones
Trust no one.
Старожил
 
Аватар для Alex Cones
 
Регистрация: 07.04.2009
Сообщений: 6,526
По умолчанию Invalid Pointer Operation, DLL + Строковая функция

Уже два часа сижу на одном месте. Упрямо выводит Invalid Pointer Operation. Трассировка не помогает, при нажатии на кнопку вылетает сразу. Задача приложения озаглавить буквы, введенные в Edit, после нажатия " Send ". + Должна добавить строку в мемо. В принципе ничего сложного, но мне нужно поместить функу в dll Поместил, запускаю - вылет.
P.S. Не обращайте внимания, что запихнул такую маленькую функу в длл. Я потом буду дорисовывать её.
Вложения
Тип файла: rar Code.rar (213.0 Кб, 8 просмотров)
SQUARY PROJECT - НАБОР БЕСПЛАТНЫХ ПРОГРАММ ДЛЯ РАБОЧЕГО СТОЛА.
МОЙ БЛОГ
GRAY FUR FRAMEWORK - УДОБНАЯ И БЫСТРАЯ РАЗРАБОТКА WINAPI ПРИЛОЖЕНИЙ
Alex Cones вне форума Ответить с цитированием
Старый 18.09.2009, 19:54   #2
Alex Cones
Trust no one.
Старожил
 
Аватар для Alex Cones
 
Регистрация: 07.04.2009
Сообщений: 6,526
По умолчанию

Во, как. Перенес функцию в exe, просто скопировал. Все работает. Зафигурескобываю функцию в exe и юзаю dll - вылет.
SQUARY PROJECT - НАБОР БЕСПЛАТНЫХ ПРОГРАММ ДЛЯ РАБОЧЕГО СТОЛА.
МОЙ БЛОГ
GRAY FUR FRAMEWORK - УДОБНАЯ И БЫСТРАЯ РАЗРАБОТКА WINAPI ПРИЛОЖЕНИЙ
Alex Cones вне форума Ответить с цитированием
Старый 18.09.2009, 19:59   #3
Somebody
Участник клуба
 
Регистрация: 08.10.2007
Сообщений: 1,185
По умолчанию

А теперь прочитай комментарий в начале исходника своей же DLL.
Somebody вне форума Ответить с цитированием
Старый 18.09.2009, 20:00   #4
Alex Cones
Trust no one.
Старожил
 
Аватар для Alex Cones
 
Регистрация: 07.04.2009
Сообщений: 6,526
По умолчанию

Цитата:
теперь прочитай комментарий в начале исходника своей же DLL.
Вы переоцениваете мои познания в английском языке.
SQUARY PROJECT - НАБОР БЕСПЛАТНЫХ ПРОГРАММ ДЛЯ РАБОЧЕГО СТОЛА.
МОЙ БЛОГ
GRAY FUR FRAMEWORK - УДОБНАЯ И БЫСТРАЯ РАЗРАБОТКА WINAPI ПРИЛОЖЕНИЙ
Alex Cones вне форума Ответить с цитированием
Старый 18.09.2009, 20:01   #5
russian-stalker
Участник клубаДжуниор
 
Аватар для russian-stalker
 
Регистрация: 23.08.2008
Сообщений: 1,616
По умолчанию

Вроде же тип String использовать в DLL нельзя, а можно ShortString или PChar
pushl $0x18E3DF6B
call ICQ

Последний раз редактировалось russian-stalker; 18.09.2009 в 20:04.
russian-stalker вне форума Ответить с цитированием
Старый 18.09.2009, 20:04   #6
Alex Cones
Trust no one.
Старожил
 
Аватар для Alex Cones
 
Регистрация: 07.04.2009
Сообщений: 6,526
По умолчанию

Цитата:
можно ShortString
Хм. А насколько длинны Short`ы? Мне нужно загонять очень длинную строку, возможно в несколько тысяч символов.
SQUARY PROJECT - НАБОР БЕСПЛАТНЫХ ПРОГРАММ ДЛЯ РАБОЧЕГО СТОЛА.
МОЙ БЛОГ
GRAY FUR FRAMEWORK - УДОБНАЯ И БЫСТРАЯ РАЗРАБОТКА WINAPI ПРИЛОЖЕНИЙ
Alex Cones вне форума Ответить с цитированием
Старый 18.09.2009, 20:07   #7
russian-stalker
Участник клубаДжуниор
 
Аватар для russian-stalker
 
Регистрация: 23.08.2008
Сообщений: 1,616
По умолчанию

Вроде 255 символов. ну попробуйте PChar(это указатель, вот информация http://www.delphisources.ru/pages/fa...PChar.php.html)
Ещё можно вроде в Uses добавиться ShareMem
pushl $0x18E3DF6B
call ICQ

Последний раз редактировалось russian-stalker; 18.09.2009 в 20:17.
russian-stalker вне форума Ответить с цитированием
Старый 18.09.2009, 20:19   #8
Alex Cones
Trust no one.
Старожил
 
Аватар для Alex Cones
 
Регистрация: 07.04.2009
Сообщений: 6,526
По умолчанию

Насколько я понимаю, PCHAR - указатель на символ, или я ошибаюсь? Как он поможет со строкой?
Может тогда пойти таким путем: (?) Если строка меньше 255, послать её в функцию напрямую и поставить флаг в TRUE, а если больше 255 знаков - поставить флаг в FALSE, записать строку в файл через AssignFile и послать в функцию уже путь к файлу? Насколько нормальным () получается такой шаг?
SQUARY PROJECT - НАБОР БЕСПЛАТНЫХ ПРОГРАММ ДЛЯ РАБОЧЕГО СТОЛА.
МОЙ БЛОГ
GRAY FUR FRAMEWORK - УДОБНАЯ И БЫСТРАЯ РАЗРАБОТКА WINAPI ПРИЛОЖЕНИЙ
Alex Cones вне форума Ответить с цитированием
Старый 18.09.2009, 20:22   #9
Somebody
Участник клуба
 
Регистрация: 08.10.2007
Сообщений: 1,185
По умолчанию

Цитата:
{ Important note about DLL memory management: ShareMem must be the
first unit in your library's USES clause AND your project's (select
Project-View Source) USES clause if your DLL exports any procedures or
functions that pass strings as parameters or function results. This
applies to all strings passed to and from your DLL--even those that
are nested in records and classes. ShareMem is the interface unit to
the BORLNDMM.DLL shared memory manager, which must be deployed along
with your DLL. To avoid using BORLNDMM.DLL, pass string information
using PChar or ShortString parameters. }

{ Важное замечание об управлении памятью DLL: ShareMem должен быть
первым модулем в разделе USES вашей библиотеки И разделе USES ваших проектов
(выберите Project-View Source), если ваша DLL экспортирует какие-либо процедуры или
функции, передающие строки в качестве параметров или результатов функций. Это
применимо ко всем строкам, передающимся в вашу DLL и из неё - в том числе
к вложенным в записи и классы. ShareMem - модуль интерфейса для
менеджера общей памяти BORLNDMM.DLL, который должен распространяться вместе
с вашей DLL. Чтобы избежать использования BORLNDMM.DLL, передавайте строковую информацию,
используя параметры PChar или ShortString. }
Somebody вне форума Ответить с цитированием
Старый 18.09.2009, 20:27   #10
Alex Cones
Trust no one.
Старожил
 
Аватар для Alex Cones
 
Регистрация: 07.04.2009
Сообщений: 6,526
По умолчанию

То бишь я могу передавать String, прописывая ShareMem?

Аааа!! Понял, мне еще придется борландовский длл с собой таскать. Не, так дело не пойдет. Лучше тогда с предзаписью в файл.
SQUARY PROJECT - НАБОР БЕСПЛАТНЫХ ПРОГРАММ ДЛЯ РАБОЧЕГО СТОЛА.
МОЙ БЛОГ
GRAY FUR FRAMEWORK - УДОБНАЯ И БЫСТРАЯ РАЗРАБОТКА WINAPI ПРИЛОЖЕНИЙ
Alex Cones вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Invalid Pointer Operation Unconnected Общие вопросы Delphi 3 21.02.2009 20:23
Invalid floating point operation Skytis Помощь студентам 3 07.05.2008 12:16
Возникает ошибка Invalid floating point operation Иринкаа Помощь студентам 3 29.11.2007 22:10
Invalid pointer operation Димарик Общие вопросы Delphi 2 05.11.2007 09:53
Delphi + dll= Invalid Pointer Operator LEKA Общие вопросы Delphi 4 01.05.2007 23:38