Есть какие новости по использованию данной функции?
CallFnc(LibHandle:integer;FunctionName:String;Coun t:Integ er;Params:array of variant):String
Или как передавать из DLL строковые параметры.
Способ который используется в Бот DLL (передача по 1 букве в виде индекса в массиве) не расматриваю, так как это связанно с повышенной нагрузкой скрипта. И лагами в игре. Хотя и он имеет право на жизнь.
Мне нужно передавать именно строки целиком. Что снизит нагрузку на скрипт.
У кого либо получилось передавать строки, ктоме как в цифромом виде?
Если да то пожалуйста можно посмотреть на исходник DLL и кусок скрипта в котором это дело происходит.
Использую L2phx 3.5.33.164
Добавлено через 5 часов 39 минут
Не у кого проблем значит нет?
После копания в исходниках и по просторам Интернета передача строк получилась!
В исходниках функция описана следующим образом:
TestFunc: function (ar:array of PChar):Pchar;stdcall;
Отсюда вытекает что и в DLL она должна быть описана аналогично.
В DLL создаем функцию такого вида:
---------------------------------------------------------------
function getr(ar:array of PChar):Pchar;stdcall; {<- только так}
begin
Result :=PAnsiChar(StrPas(Param[0]) +StrPas('Старт 1234567890 ASRTP Конец')); // Результат будет: первый паремерт переданный в функцию + строковая константа
end;
exports getr;
---------------------------------------------------------------
В скрипте:
---------------------------------------------------------------
var
S :string;
begin
lib:=loadLibrary('D:\Temp\test1.dll');
S := CallFnc(lib, 'getr',1,[i]);
SendMessage_Client('Result = '+S);
FreeLibrary(lib);
end;
---------------------------------------------------------------
Работает отлично