powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Параметры вызова функции из dll
6 сообщений из 6, страница 1 из 1
Параметры вызова функции из dll
    #37232249
dimonf
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Господа,
есть код на FoxPro вызова функции из dll
DECLARE INTEGER CheckLicense IN NEOGLITE.DLL STRING @, INTEGER @
и функция вызова
nresult = checklicense(@slicense, @nuserid)
Подскажите плиз как это все переписать под delphi?

у меня получилось
TCheckLicense = function (Value: PShortString; Key: PInteger): integer;

try
New(FValue);
New(FKey);
FValue^ := '3';
FKey^ := 0;

FDllHandle := LoadLibrary(PChar('c:\project\neoglite.dll'));
if FDllHandle <> HINSTANCE_ERROR then
begin
FCheckLicense := GetProcAddress(FDllHandle, Pchar('CheckLicense'));
FCheckLicense(@FValue,@FKey);
end;

Dispose(FValue);
Dispose(FKey);

но это все валится с ошибкой Access violation at address 10041CD7 in module 'neoglite.dll'. Read of address 00000000
...
Рейтинг: 0 / 0
Параметры вызова функции из dll
    #37232308
Sergey Sizov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dimonf,
оба параметра - указатели (ссылки, pointer).
...
Рейтинг: 0 / 0
Параметры вызова функции из dll
    #37232349
dimonf
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
да я уже понял, написал как
type
TCheckLicense = function (Value: PAnsiChar; Key: PInteger): integer;

в коде вызываю:
var
FValue: AnsiString
FKey: Integer

begin
FValue := PChar('test');
FKey := 0;

FCheckLicense(@FValue,@FKey);

и валится с ошибкой Access violation at address 10041CD7 in module 'neoglite.dll'. Read of address 00000000
...
Рейтинг: 0 / 0
Параметры вызова функции из dll
    #37232771
dimonfда я уже понял, написал как
type
TCheckLicense = function (Value: PAnsiChar; Key: PInteger): integer;

в коде вызываю:
var
FValue: AnsiString
FKey: Integer

begin
FValue := PChar('test');
FKey := 0;

FCheckLicense(@FValue,@FKey);
PAnsiChar и PInteger - вроде как уже указатели. Зачем @ перед параметрами?
...
Рейтинг: 0 / 0
Параметры вызова функции из dll
    #37232891
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Есть несколько стандартов вызова функций из DLL. Если DLL скомпилирована одним способом, а вызывают ее другим - ничего хорошего при этом не происходит, как правило просто вылетает при вызове.
Как в дельфях не знаю, в Си так функция описывается:
Код: plaintext
extern "C" __declspec(dllexport) INT MyFunc(LPCSTR pcszString);

Для проверки что с компиляцией проблем нет - сделай простейшую функцию, которая выведет MessageBox`ом переданные ей параметры. Т.е. убедись что твоя функция параметры получает так как ты задумывал.
...
Рейтинг: 0 / 0
Параметры вызова функции из dll
    #37235465
PP987
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Как вариант, предлагаю залинковать ее статически и переопределить.

function CheckLicense(Value: PAnsiChar; Key: PInteger): integer; cdecl ; external neoglite.dll;
Поиграть параметром выделенным жирным шрифтом.
...
Рейтинг: 0 / 0
6 сообщений из 6, страница 1 из 1
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Параметры вызова функции из dll
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]