Текущий архив: 2004.06.06;
Скачать: CL | DM;
Вниз
Ошибка в DLL Найти похожие ветки
← →
tamroF (2004-05-24 04:49) [0]В программе:
const
fDLL = "fDLL.dll ";
procedure TForm1.IniT;
var
GetPass:function:string; stdcall;
lib : THandle;
begin
...
lib := LoadLibrary(fDLL);
GetPass := GetProcAddress(lib, "GetPass");
if @GetPass <> nil then
Label1.Caption:=GetPass; // сюда приходит
FreeLibrary(lib);
...
end; // ошибка тут - при выходе из процедуры
//-----------------------------------------------------
В DLL:
const
passWORD="111";
function GetPass:string; stdcall;
begin
Result:=passWORD;
end;
если закомментировать вызов функции GetPass,
// Label1.Caption:=GetPass;
то ошибки не возникает.....
← →
SammIk © (2004-05-24 07:22) [1]Вопервых нужно проверять загрузилась ли либа.
Во-вторых, нужно какой-то модуль цеплять, если в либе строки передаешь.
Альтернатива-
procedure TForm1.IniT;
var
GetPass:function(str:pchar):bool; stdcall;
lib : THandle;
p:pchar;
begin
....
getmem(p,256);
GetPass(p);
Label1.Caption:=strpas(p);
....
end;
В DLL:
const
passWORD="111";
function GetPass(p:pchar):bool; stdcall;
begin
movememory(p,@passWORD[1],sizeof(passWORD));
result:=true;
end;
← →
MBo © (2004-05-24 07:48) [2]при создании DLL Дельфи пишет комментарий. Прочитай.
← →
tamroF (2004-05-24 10:13) [3]Всем спасибо.
Страницы: 1 вся ветка
Текущий архив: 2004.06.06;
Скачать: CL | DM;
Память: 0.44 MB
Время: 0.021 c