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

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

DLL [D6, WinXP]


начинающий програмер ©   (2002-09-25 20:16:00) 

Здравствуйте, Мастера!
Вот какая у меня проблема:
как мне сделать так, чтобы если библиотека есть, то из неё загружались бы фунции итд и тп, а если ей нет, то не выдавалось бы сообщение о том,что не найдена библотека. Да, и ещё вопрос в догонку:я сделал библиотеку с формой, всё работает. Но как мне присоединить её форме программы(т.е. если библиотека есть, то добавлялся бы пунт в ComboBox и при щелчке отрывалась форма, загруженая из библиотеки).Заранее благодарен. Если не хотите/не можете/лень ответить, то киньте хотя бы ссылку на инфу.
В FAQ на этом сайте смотрел, но немного не то, а кое-что не понятно.. Спасибо!


начинающий програмер   (2002-09-25 21:33:00) [1]


> описал динамический вызов

А это как?


Akim2   (2002-09-25 21:26:00) [2]

AlexT1000 (25.09.02 20:36)
описал динамический вызов. Принем нет надобности описывать в вверху с использывнием external


начинающий програмер   (2002-09-25 20:37:00) [3]

Но ведь их нельзя вставить там, где объявляется библиотека(extenal "Mydll.dll"). Слышал, что надо API использовать....


AlexT1000   (2002-09-25 20:36:00) [4]

FAddress:integer;
DllName : string;
1)
DllName := "c:\MyDll.Dll";
if FileExists(DllName) then begin
FAddress := LoadLibrary(PChar(DllName));
end else HET БИБЛИОТЕКИ

2) FAddress := LoadLibrary(PChar(DllName));
if FAddress <> 0 then begin
end else HET БИБЛИОТЕКИ
//
на счет вызова форм

внешний модуль
TSetHandle = function (Value:integer):integer;stdcall;
SetHandle :TSetHandle;

SetHandle:=GetProcAddress(P.Address, "SetHandle");
if not Assigned(SetHandle) then begin Result:= cError;Exit;end;
SetHandle(integer(Application.Handle));

dll

{------------------------------------------------------------------------}
function SetHandle(Value:integer):integer;stdcall;
begin
aHandle := Value;
aOldHandle := Application.Handle;
Application.Handle := Value;
end;
{------------------------------------------------------------------------}
function ActivateMusicPlayer : integer ;stdcall;
begin
if FormMusicPlayer = nil then
Application.CreateForm(TFormMusicPlayer, FormMusicPlayer);
FormMusicPlayer.ShowModal;
end;


///// внешний модуль
type Tfunction = function :integer;stdcall;
Var F:TFunction;

F:=GetProcAddress(Address, "ActivateMusicPlayer");
if Assigned(F) then F;


Новенький в Делфи   (2002-09-25 20:30:00) [5]

а если ей нет, то не выдавалось бы сообщение о том,что не найдена библотека

испольщуй защищённый блок:
...
try
...
операторы которые могут вызвать ошибку
...
except
...
операторы, которые будут выполняться при ошибке
...
end;
...


Наверх

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