Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2002.10.07;
Скачать: [xml.tar.bz2];

Вниз

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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.45 MB
Время: 0.008 c
14-21196
RV
2002-09-09 13:58
2002.10.07
Сеть. Программа на расшаренном диске или локально у каждого?


1-21095
vinni2000
2002-09-24 17:38
2002.10.07
Как узнать архив RAR не по расширению


1-21086
Sergey V. Shadrin
2002-09-25 08:08
2002.10.07
найти файл.


4-21320
Oxy2
2002-08-17 17:44
2002.10.07
По поводу одновременного выполнения кода


1-21042
Влад Утюмов
2002-09-27 07:55
2002.10.07
Хранение Integer в Combobox





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский