Вернуться   CoderX :: Forums > Lineage II > L2PacketHack
Войти через OpenID

L2PacketHack Форум программы L2PacketHack, всё что с ней связано находится тут.
Правила раздела! Обсуждение багов Lineage ЗАПРЕЩЕНО!

Чат (Новых сообщений с момента вашего последнего визита нет)
Загрузка...
Задавайте ваши вопросы на форуме. Чат предназначен для небольших разговоров.
 
Ответ
 
Опции темы Опции просмотра
Старый 16.11.2007, 12:10   #1
Новичок
 
Регистрация: 16.11.2007
Адрес: г. Владивосток
Сообщений: 2
Сказал Спасибо: 1
Имеет 0 спасибок в 0 сообщенях
Merdek
Печаль Проблема использования DLL написанной в Delphi.

Проблема использования DLL написанной в Delphi.

Скомпелированная DLL лежит в той же папке, что и PacketHack 1.3.8
При вызове "CallFunction" вылетает ошибка "Invalid Argument".
Подскажите что не так...


Код DLL-ки в Delphi
///---------------------------------------------------------------------------------------------------------------------------

library DLL;

uses
SysUtils,Classes;

function Str1(b:integer): string;
stdcall;
begin
if b=0 then
result := '1!'
else
result := '2!';
end;

exports
Str1 index 1 name 'op';

begin
end.

///---------------------------------------------------------------------------------------------------------------------------


Код скрипта
///---------------------------------------------------------------------------------------------------------------------------

var
lib, lib1:Integer;
Res:variant;
ar:array of variant;
str1: string;

procedure Init;

begin
str1:='0';

lib := loadLibrary('User32.dll');
lib1 := loadLibrary('DLL.dll');

Res:= CallFunction(lib1,'op',1,[0]);
str1:=Res;
Res := CallFunction(lib,'MessageBoxW',4,[nil,str1,'text2',0]);

FreeLibrary(lib);
FreeLibrary(lib1);
end;

begin
end;

///---------------------------------------------------------------------------------------------------------------------------
Merdek вне форума   Ответить с цитированием
Старый 16.11.2007, 13:24   #2
Рыцарь
 
Аватар для dmitry501
 
Регистрация: 01.10.2007
Сообщений: 293
Сказал Спасибо: 42
Имеет 50 спасибок в 37 сообщенях
dmitry501 пока неопределено
По умолчанию

Это кто тебя учил использовать дельфийские стринги без sharemem?
Почитай, что пишет Делфи, когда создаешь пустую dll
а лучше используй array of char с ручным управление памятью, как в классическом С.
Посмотри, как используются системные .dll, сначала подготавливаются буфера, а потом вызываются dll, причем передаются указатели на буфер.
__________________
Цитата:
Сообщение от Stas
...Ну на хрена ты меня посылаешь гууглить или искать 140 страниц описанных где-то комманд, если я уже в сотый раз объясняю, что хочу облегчить труд многим, я же эти доводы подробно описал...
dmitry501 вне форума   Ответить с цитированием
Старый 11.12.2007, 13:00   #3
Гость
 
Сообщений: n/a
По умолчанию

Если твоя строка будет меньше 256 символов, ты можешь вместо string использовать shortstring, не изменяя более ничего в программе.

function Str1(b:integer): shortstring;
  Ответить с цитированием
Ответ

  CoderX :: Forums > Lineage II > L2PacketHack


Опции темы
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


Часовой пояс GMT +4, время: 08:57.

vBulletin style designed by MSC Team.
Powered by vBulletin® Version 3.6.11
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot
Locations of visitors to this page
Rambler's Top100

Вы хотите чувствовать себя в безопасности? чоп Белган обеспечит её!