![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Форумчанин
Регистрация: 10.02.2009
Сообщений: 815
|
![]()
Доброго времени суток !
Хотелось бы найти линк на статейку/исходник/ или просто внятное обьяснение. Имеется файл настроек/скрипт в котором прописываются имена dll и вызываются функции из этих dll. Код HTML:
load "parser.dll" Fparse "123.txt","123[ps].txt" load "crypter.dll" Fcrypt "123[ps].txt","123[ps][cr].txt","%PASSWORD%" Вот вопрос и состоит в том как загрузить (с HDD) плагин и расширить свой функционал функциями Myfunc1, Myfunc2, etc. дабы потом по скриптовому файлу можно было отпарсив вызвать эти самые функции с необходимым количеством аргументов верного типа. Всем спасибо ! |
![]() |
![]() |
![]() |
#2 |
Старожил
Регистрация: 28.01.2009
Сообщений: 21,000
|
![]()
так как Делфи не интерпретируемый,то встает проблемка, а как же передать параметры в функцию.
есть 2 варианта. 1)передавать все как строку(одна строка, постоянный параметр), тогда функция сама должна разбить это все(это не трудно в принципе). 2)передавать через стек(stdcall...в принципе если мастерство позволяет можно и любые вызовы юзать)с помощью ассемблера(ну тогда про некоторые Делфи типы надо забыть ![]() первый вариант у меня давно реализован ![]() со вторым я решил так. есть функция которая возвращает кол-во функций в dll есть функция в dll которая возвращает для нужной функции(номер) структуру о ней(name,params(и так же тип вызова, но это личное ![]() ну а далее через асм вызываю ![]() Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел. Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите. |
![]() |
![]() |
![]() |
#3 |
Форумчанин
Регистрация: 10.02.2009
Сообщений: 815
|
![]()
А можно взглянуть на реализацию 1го варианта?
Разбить параметры не проблема , проблема обучить программу новым неизвестным доселе функциям из dll на лету(при выполнении скрипта) или хотябы при загрузке ![]() |
![]() |
![]() |
![]() |
#4 |
Старожил
Регистрация: 28.01.2009
Сообщений: 21,000
|
![]()
эмм..первый вариант на С++ написан+сейчас я не дома, дома скину, первый вариант то прост до безобразия(правда у меня ДЛЛ как интерпритатор, то есть извлекает имя функции из строки)
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел. Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите. |
![]() |
![]() |
![]() |
#5 | |
Форумчанин
Регистрация: 10.02.2009
Сообщений: 815
|
![]() Цитата:
Парсер аргументов внедрю в длл, мой вопрос собственно заключается в том как загрузив несколько dll вызвать их функции зная только их имена (спарсенные из файла) и передать им параметры (допустим все будет в 1ной строке). |
|
![]() |
![]() |
![]() |
#6 |
Старожил
Регистрация: 28.01.2009
Сообщений: 21,000
|
![]()
массив функций нужен(и их имен).
потом по имени функции находим её адрес в массиве далее Func[i](str)(или нельзя массив функций делать?) Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел. Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите. |
![]() |
![]() |
![]() |
#7 |
Форумчанин
Регистрация: 10.02.2009
Сообщений: 815
|
![]()
Собственно массив функций в pa.rar.
Но вот пример динамической загрузки dll и вызова функции у меня после выполнения вызывает ошибку ![]() Я так понимаю с помощью GetProcAddress можно заполнить адреса процедур в массиве если изначально назначить все процедуры = тестовыми(одинаковыми) ? |
![]() |
![]() |
![]() |
#8 |
Форумчанин
Регистрация: 10.02.2009
Сообщений: 815
|
![]()
В общем разобрался сам, хотя немного уклонился от темы , но на 1вый взгляд мне хватит арсенала для решения проблемы :D
+ Прилогаю исходники dll + loader ) Для проверки необходимо откомпилировать dll ,затем loader и проверить параметры по умолчанию (названия функций и имя dll) В ComboBox можно выбрать функцию и проверить её нажав test ![]() |
![]() |
![]() |
![]() |
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
управление ProgressBar-ом через dll | Volkogriz | Общие вопросы Delphi | 4 | 15.04.2010 18:04 |
из Matlab'a в Delphi через dll | Mikhail Bakurov | Общие вопросы Delphi | 7 | 03.12.2009 14:25 |
подсчет количества символов через dll | a_n_n_a | Помощь студентам | 14 | 19.05.2009 10:16 |
DLL через Lib | kiloruble | Общие вопросы C/C++ | 1 | 02.12.2008 22:58 |
Передача данных(массива) через DLL. | acorables | Общие вопросы Delphi | 4 | 05.02.2007 13:16 |