![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Что то у меня с DLL не получается...
Koala © (2004-11-03 16:30:00)текст
library daifl;
uses
SysUtils,
Classes,
Forms,
infoForm in 'infoForm.pas' {fmInfo};
{$R *.res}
procedure ShowInfoDLL(AppHandle : THandle; infDate, infUser : PChar);
begin
Application.Handle := AppHandle;
with TfmInfo.Create(Application) do try
lbInfoDate.Caption := StrPas(infDate);
lbInfoName.Caption := StrPas(infUser);
ShowModal;
finally
Application.Handle := 0;
free;
end;
end;
exports ShowInfoDLL;
begin
end.
вызываю из программы:
type
TShowFormFromDLL = procedure (AppHandle: THandle; infDate, infUser : PChar); stdcall;
procedure TfmMain.ShowFormFromDLL;
var
DLLHandle: THandle;
ShowFormFromDLL: TShowFormFromDLL;
begin
DLLHandle := LoadLibrary(PChar(GetExePath + '\daifl.dll'));
try
if DLLHandle <= 0 then
MsgError('Невозможно загрузить daifl.dll');
@ShowFormFromDLL := GetProcAddress(DLLHandle, 'ShowInfoDLL');
if Assigned(ShowFormFromDLL) then
ShowFormFromDLL(Application.Handle, PChar('сегодня'), PChar('Test'))
else
MsgError('Отсутствует загружаемая DLL ' + #13#10 +
'или в DLL не найден адрес необходимой функции.');
finally
Application.ProcessMessages;
FreeLibrary(DLLHandle);
end;
end;
Выскакивает ошибка:
Project D:\Dll\Test\Test.exe faulted with message: 'access violation at 0x01056000: read of address 0x01056000'. Process Stopped. Use Step or Run to continue.
и вместо текста который передается в
ShowFormFromDLL(Application.Handle, PChar('сегодня'), PChar('Test')) - белеберда всякая
В чем я перемудрил???
Digitman (2004-11-03 17:45:00) [1]
> Koala © (03.11.04 16:55) [5]
> меня нет демок
у тебя , видимо, и файлов справок нет ..
вопрос - а нашута такая инсталляция нужна .. в которой ни справок , ни демо, ни ...
себе дороже ..
Koala (2004-11-03 16:55:00) [2]Digitman © (03.11.04 16:49) [4]
у меня нет демок в Delphi(инсталяшка битая) по этому и спрашивал....
Digitman (2004-11-03 16:49:00) [3]
> Koala © (03.11.04 16:42) [3]
а [2]. конечно же, для тебя было божественным откровением ... дотумкать сие самому, рассмотрев несколько демо-проектов в Делфи - это выше предела чел.возможностей
Koala (2004-11-03 16:42:00) [4]Reindeer Moss Eater © (03.11.04 16:32) [1]
Юрий Зотов © (03.11.04 16:36) [2]
Во, млин... действительно убрал stdcall и все заработало...
Огромное спасибо....
Юрий Зотов (2004-11-03 16:36:00) [5]Тип процедуры не соответствует самой процедуре. Отсюда неверная передача параметров. Stdcall - либо пишите ВЕЗДЕ, либо НЕ пишите НИГДЕ.
Reindeer Moss Eater (2004-11-03 16:32:00) [6]В соглашении о вызовах