Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2002.10.07;
Скачать: CL | DM;

Вниз

DLL   Найти похожие ветки 

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

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


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

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

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


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

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:37) [3]

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


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

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


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


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

А это как?



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

Текущий архив: 2002.10.07;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.013 c
14-21199
BigBadMutuh
2002-09-08 01:01
2002.10.07
Где взять доку по Adobe Premiere?


14-21257
AL2002
2002-09-11 12:00
2002.10.07
Я так хочу


1-20960
vladimir_sv
2002-09-26 10:46
2002.10.07
Помагите начинающему.


3-20937
Студент2002
2002-09-17 15:29
2002.10.07
Мудреный поиск


1-21012
Evgeny
2002-09-24 15:02
2002.10.07
mdichild