Вниз
Скачать: CL | DM;

Что то у меня с DLL не получается...   Найти похожие ветки 

← →
Koala ©   (2004-11-03 16:30) [0]

текст

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")) - белеберда всякая
В чем я перемудрил???


← →
Reindeer Moss Eater ©   (2004-11-03 16:32) [1]

В соглашении о вызовах


← →
Юрий Зотов ©   (2004-11-03 16:36) [2]

Тип процедуры не соответствует самой процедуре. Отсюда неверная передача параметров. Stdcall - либо пишите ВЕЗДЕ, либо НЕ пишите НИГДЕ.


← →
Koala ©   (2004-11-03 16:42) [3]

Reindeer Moss Eater ©   (03.11.04 16:32) [1]
Юрий Зотов ©   (03.11.04 16:36) [2]
Во, млин... действительно убрал stdcall и все заработало...
Огромное спасибо....


← →
Digitman ©   (2004-11-03 16:49) [4]


> Koala ©   (03.11.04 16:42) [3]


а [2]. конечно же, для тебя было божественным откровением ... дотумкать сие самому, рассмотрев несколько демо-проектов в Делфи - это выше предела чел.возможностей


← →
Koala ©   (2004-11-03 16:55) [5]

Digitman ©   (03.11.04 16:49) [4]
у меня нет демок в Delphi(инсталяшка битая) по этому и спрашивал....


← →
Digitman ©   (2004-11-03 17:45) [6]


> Koala ©   (03.11.04 16:55) [5]


>  меня нет демок


у тебя , видимо, и файлов справок нет ..

вопрос - а нашута такая инсталляция нужна .. в которой ни справок , ни демо, ни ...

себе дороже ..



Страницы: 1 вся ветка

Скачать: CL | DM;



Память: 0.46 MB
Время: 0.024 c
4-1097234701
Falcon
2004-10-08 15:25
2004.11.21
Передача клавиатурногог фокуса стороннему приложению.


1-1099903691
Igit
2004-11-08 11:48
2004.11.21
Поиск строки в строке


14-1099241658
VEG
2004-10-31 19:54
2004.11.21
Никто не ставил винт 160-200Гб на старые мат.платы (2000 год)?


8-1092367131
TextOut
2004-08-13 07:18
2004.11.21
Можно ли загрузить в MediaPlayer файл не с диска, а из памяти?


3-1098786783
Артем К.
2004-10-26 14:33
2004.11.21
Какие компоненты использовать для работы с MySQL Server?




   Наверх