Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 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.47 MB
Время: 0.049 c
1-1085486770
Delphin
2004-05-25 16:06
2004.06.06
Как вызвать процедуру


4-1083263927
Dummy
2004-04-29 22:38
2004.06.06
Какой WM_* соответствует VLC овскому...


14-1084713446
Gero
2004-05-16 17:17
2004.06.06
Вкладка "Безопасность" в XP.


3-1084451936
SergeyM
2004-05-13 16:38
2004.06.06
Удаление из таблицы?


14-1084666387
IceDog
2004-05-16 04:13
2004.06.06
Угол на который поднимается Солнце