Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Что то у меня с 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]

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


Наверх

Титульная страница Поиск, карта сайта Написать письмо