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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 12.09.2009, 22:23   #1
Вадим Буренков
Участник клуба
 
Аватар для Вадим Буренков
 
Регистрация: 06.03.2009
Сообщений: 1,346
По умолчанию Вопрос про классы в DLL.

Вот начал пробовать создовать DLL. С процедурой все получилось, но моя цель запихнуть в DLL класс, а в программе использующей DLL использовать потомок этого класса . Это возможно? Если да то как это сделать? Если нет то как быть?
Вадим Буренков вне форума Ответить с цитированием
Старый 12.09.2009, 23:40   #2
russian-stalker
Участник клубаДжуниор
 
Аватар для russian-stalker
 
Регистрация: 23.08.2008
Сообщений: 1,616
По умолчанию

Можно.
Вот почитайте:
http://forum.codenet.ru/showthread.p...%F1+%E8%E7+DLL
pushl $0x18E3DF6B
call ICQ
russian-stalker вне форума Ответить с цитированием
Старый 13.09.2009, 13:09   #3
Вадим Буренков
Участник клуба
 
Аватар для Вадим Буренков
 
Регистрация: 06.03.2009
Сообщений: 1,346
По умолчанию

Допустим я занес тип в DLL, и как мне его теперь в программе использовать? Процедуры экспортируются, а с типом не знаю что делать. Создал в программе аналогичнй тип, но проблема с переменными этого типа: они не изменяются процедурами DLL. И вообще посоветуйте литературу про DLL или уроки, сам не нашел.
Вадим Буренков вне форума Ответить с цитированием
Старый 13.09.2009, 23:55   #4
evg_m
Старожил
 
Регистрация: 20.04.2008
Сообщений: 5,526
По умолчанию

если хотите пользоваться классами в основной программе и DLL то вам надо пользоваться BPL (это аналог DLL позволяющий передвать разные объекты(классы)
программа — запись алгоритма на языке понятном транслятору
evg_m вне форума Ответить с цитированием
Старый 14.09.2009, 10:59   #5
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
а с типом не знаю что делать.
Ну я обычно в таких ситуациях подключаю ДЛЛ как Библиотеку типов, (import Type Library).
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 14.09.2009, 15:06   #6
Вадим Буренков
Участник клуба
 
Аватар для Вадим Буренков
 
Регистрация: 06.03.2009
Сообщений: 1,346
По умолчанию

Решил делать с типами а не классами по техническим причинам.

Вот щас ошибки вообще бредовые получаются:
Ради теста сделал такую процедуру в простом модуле программы:

Цитата:
function LowString(input:String):string;
begin
result:=LowerCase(input);
end;
Все работает: символы строки преобразуются в нижний регистр.
Но если эту же функцию сделать в DLL то появляется "Pointer error" при попытке запуска функции. Может я что-то не так делаю? Я могу скинуть исходник если кто-то согласится посмотреть.
Или скиньте пример какой, может у кого найдется.
Вадим Буренков вне форума Ответить с цитированием
Старый 14.09.2009, 15:22   #7
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

а прочесть комент в болванке DLL никак?
string не используем.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 14.09.2009, 15:34   #8
Вадим Буренков
Участник клуба
 
Аватар для Вадим Буренков
 
Регистрация: 06.03.2009
Сообщений: 1,346
По умолчанию

1) Чем заменять string?
2)Стринга вообще не должно быть? Но ведь например LowerCase работает только со стрингом?
2) Как запихнуть в DLL тип и потом его использовать? Его нужно как-то экспортировать, производить какие-то манипуляции?
3)Когда делаешь программу использующую DLL тип, то тип в DLL нужно дублировать в программе (ведь программа не знает какие типы используются в DLL)?
4) Вот в рабочем примере DLL есть такая процедура с использованием string, и все работает:
Код:
Procedure TestDLL (TestStr : String); Stdcall
Begin
MessageDlg (TestConst + Chr (13) + Chr (13) + 'Your string is: ' +TestStr, mtInformation, [mbOk], 0);
End;

В инете ответов не нашел. Все статьи про создание элементарной Dll с одной простой показательной процедурой. Ничего про типы, правила использования Dll и прочее.

Последний раз редактировалось Вадим Буренков; 14.09.2009 в 15:39.
Вадим Буренков вне форума Ответить с цитированием
Старый 14.09.2009, 16:28   #9
alexBlack
Участник клуба
 
Регистрация: 12.10.2007
Сообщений: 1,204
По умолчанию

Примеры:
http://programmersforum.ru/showpost....6&postcount=17
http://programmersforum.ru/showpost....17&postcount=2
http://programmersforum.ru/showthrea...&highlight=dll
alexBlack вне форума Ответить с цитированием
Старый 14.09.2009, 16:40   #10
Вадим Буренков
Участник клуба
 
Аватар для Вадим Буренков
 
Регистрация: 06.03.2009
Сообщений: 1,346
По умолчанию

Про string понял, теперь использую shortstring.
А что насчет типов?
Вадим Буренков вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Новичку про классы Geniok Общие вопросы C/C++ 0 24.07.2009 16:18
Вопрос про DLL R@# Общие вопросы Delphi 11 21.06.2009 12:26
Вопрос наверное про функции, а так точно даже не знаю про что. (Вопрос начинющего #6) Albert2008 Общие вопросы Delphi 4 21.08.2008 15:33
У меня вопрос про базы данных,а точнее про таблицы!!! Alexij Общие вопросы Delphi 1 13.04.2008 23:24
Вопрос про DLL-файлы PChEL@ Общие вопросы Delphi 3 29.06.2007 02:03