Вы не можете объявить класс в скрипте, но вы можете использовать внешние классы, объявленные в вашем приложении или в дополнительных модулях.
Собстно вопрос: как из скрипта обратится к классу объявленному в ДЛЛ, или , что значит "можете использовать внешние классы"??
Добавлено через 53 минуты
или может так:
В длл есть возможность експортировать переменные, у меня эта переменная имеет тип класса объявленного в длл. Как из скрипта достучаться до этой переменной??
Последний раз редактировалось Ezhik, 20.05.2009 в 02:33.
Причина: Добавлено сообщение
ну я бы ещё уточнил что из длл не только в пакетхаке нельзя классы экспортировать, как правило их вообще нельзя экспортировать из длл
исключения составляют только длл на .НЕТ (но их можно юзать только из программ на .НЕТ) и пакеты дельфи (но они собсно тоже не обычные длл а очень специфические)
из дллок экспортируют только интерфейсы (это что то типа расширения классов)
ЗЫ кстати в 3.6.х версиях пакетхака вроде можно создавать свои классы в скриптах
ЗЫ а вообще под внешними классами имелись в виду базовые классы встроенные в программу типа TForm, TButton...
__________________
Я здесь практически не появляюсь!, Skype - ikskor
Мучался-мучался с попытками создать хотя бы один плагин под последний зарелизеный пакетхак, но ничего у меня не получилось, то не к той памяти обратится, то вообще вылетит и ничего не скажет, а потом решил посмотреть на Changelog к последней версии, и обнаружил там следующую весчь:
в onpacket функцию плагинов теперь передается имя соединения (TOnPacket = procedure(const cnt: Cardinal; const fromServer: Boolean; const connectionname:string; var packet : tpacket); stdcall
И соответсвенно у меня просьба=) где можно узнать, или у кого, обо всех таких изменениях?) ну и как минимум последний uSharedStructs бы вытянуть
Однако добиться исправной работы даже порезанного demo плагина у меня не получилось.Вот то что я сделал в итоге с исходником после нескольких часов его мучения:
Плагин загружаю когда чара уже выбрали, дальше пишу set и в чат клиента пишется всего одна строчка "Выбрано это соединение" вместе с месседжем:
Application error. Exception EInvalidPointer in module plugin_demo.dll at xxx
Т.е. раз сообщение дошло то строчка в процедуре Say ps.SendPacketStr(buf,cntHP,False);
выполняется. И исключение срабатывает на выходе из этой процедуры.
Использую CodeGear Delphi 2007. Оригинальный плагин plugin_demo.pas из SVN.