|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
12.01.2015, 00:01 | #1 |
Пользователь
Регистрация: 13.11.2014
Сообщений: 24
|
Загрузка функции из dll библиотеки
Программа для ввода пароля должна вывести в Label1 сообщение о корректности введенного пароля. Проверяю работу dll библиотеки. Оба файла проектов скомпилировались без проблем, а вот Label1.Caption не отображается(не изменяется)
Вот код первого проекта: Код:
Код:
После открытия .dll файла через WordPad(по глупости), не заметив галочки "использовать выбранную программу для всех файлов такого типа", все файлы этого типа по умолчанию стали открываться через WordPad. Можно ли вернуть "никакую" программу по умолчанию? И может ли это повлиять на работу программ, использующих эти библиотеки(Пока не обнаружил)? |
12.01.2015, 01:27 | #2 |
Форумчанин
Регистрация: 27.10.2014
Сообщений: 594
|
1. Строки:
Код:
Выделенное голубеньким обычно не указывается... 2. В редакторе реестра найдите (поиском) параметр .dll (слева), у которого среди значений (справа) будет WordPad и смело удалите такие значения (справа). Последний раз редактировалось kropotkina-alice; 12.01.2015 в 01:34. |
12.01.2015, 05:23 | #3 |
personality
Старожил
Регистрация: 28.04.2009
Сообщений: 2,882
|
Когда создавали проект длл, там был большой такой комментарий, его следует прочесть, понять и сделать рекомендованное.
Если же и тут сложности, то ключевое слово для гугления ShareMem |
12.01.2015, 21:46 | #4 |
Пользователь
Регистрация: 13.11.2014
Сообщений: 24
|
1)Все сделал как говорите - ничего не помогло(
ShareMem добавил в оба файла, использовал, даже ShortString -нифига. 2)Зашел в редактор реестра, но там программы не отображаются. Зашел "сопоставление типов файлов или протоколов конкретным программам", но там редактировать (удалить выбранную программу) нельзя, только заменить другой. |
13.01.2015, 00:11 | #5 |
Форумчанин
Регистрация: 27.10.2014
Сообщений: 594
|
Не поленилась - проверила. С моими поправками ваш код работает, но вылетает ошибка Invalid pointer operation.
Дело в том, что обмен строковыми переменными с DLL в дельфи реализован с ошибкой, поэтому нужно использовать не string, а PChar, тогда всё будет работать как нужно. Вот ваш изменённый код, проверенный - работает без ошибок... Код:
Последний раз редактировалось kropotkina-alice; 13.01.2015 в 00:14. |
13.01.2015, 02:06 | #6 | ||
ПШП
Участник клуба
Регистрация: 15.07.2013
Сообщений: 1,872
|
Цитата:
И кстати. Шаблон для DLL создаваемый Delphi при выборе New->DLL вы когда-нибудь видели? P.S. То что ТС утверждает что он якобы Цитата:
|
||
13.01.2015, 02:34 | #7 |
Форумчанин
Регистрация: 27.10.2014
Сообщений: 594
|
|
13.01.2015, 11:20 | #8 |
Пользователь
Регистрация: 13.11.2014
Сообщений: 24
|
Странно, но у меня та же ситуация как и прежде, плюс еще получаю предупреждение от компилятора: [Warning]Unit1.pas(25): Unsave tipe ‘Pchar’ и переодически ошибка с Invalid pointer operation дополняется ошибкой:Runtime error 217 at 00413E30
Код:
|
13.01.2015, 11:24 | #9 | |
Пользователь
Регистрация: 13.11.2014
Сообщений: 24
|
Цитата:
{ 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. } |
|
13.01.2015, 11:47 | #10 |
Старожил
Регистрация: 30.12.2009
Сообщений: 11,426
|
Для результата используйте Boolean, вместо string, используйте WideString.
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Загрузка функции из dll, как победить RunTime | Winexcel | Общие вопросы Delphi | 4 | 01.07.2014 13:40 |
Загрузка Библиотеки в exe и интервал на выполнение | Excellion | Общие вопросы Delphi | 2 | 20.01.2011 03:39 |
[DLL] Загрузка и выгрузка dll в/из чужого процесса | Человек_Борща | Win Api | 4 | 28.02.2010 17:47 |
загрузка библиотеки DLL | s2dentishe | Помощь студентам | 7 | 10.01.2010 17:48 |