Теми рефератів
> Реферати > Курсові роботи > Звіти з практики > Курсові проекти > Питання та відповіді > Ессе > Доклади > Учбові матеріали > Контрольні роботи > Методички > Лекції > Твори > Підручники > Статті Контакти
Реферати, твори, дипломи, практика » Курсовые обзорные » Розробка програми для автоматизації роботи кардіоцентру

Реферат Розробка програми для автоматизації роботи кардіоцентру





пошук в каталогах, визначених у змінній середовища Path. Якщо бібліотека з заданим ім'ям буде знайдена, то вона завантажиться і додаток стартує. Якщо ж ні - відбувається виключення і додаток припинить свою роботу. Додаток припиняє роботу також і в тому випадку, якщо не буде знайдений метод з даними ім'ям (або індексом, якщо він імпортується за індексом). p align="justify"> Динамічне завантаження DLL дозволяє завантажувати бібліотеку тільки в той момент, коли вона потрібна. Крім того, якщо не буде знайдена бібліотека або метод, то це можна проаналізувати і запустити додаток і в цьому випадку. Звичайно, в такій ситуації слід інформувати користувача про неможливість викликати метод з DLL - наприклад, зробивши невидимим пункту меню, який звертається до даного методу. Приклад динамічного завантаження DLL виглядає наступним чином:

= function (K: integer): integer; stdcall;


procedure TForm1.Button2Click (Sender: TObject);: TAddFunction;: THandle;: integer;: = 0;: = LoadLibrary ('FirstLib.dll'); HLib> HINSTANCE_ERROR then begin: = GetProcAddress (HLib, 'CalculateSum'); Assigned (Add1) then begin: = StrToInt (Edit1.Text);: = Add1 (N);. Text: = IntToStr (N); else ShowMessage ('Method with name CalculateSum was not found '); else ShowMessage (' Can not load library FirstLib.dll '); HLib> HINSTANCE_ERROR then FreeLibrary (HLib);

end;;


Спочатку визначається новий процедурний тип, наприклад TAddFunction, який має такий же список параметрів і такі ж домовленості виклику, що і метод в DLL. Delphi в процесі компіляції програми ніяк не може перевірити відповідність процедурного типу методом, що викликається з DLL. Перевірка може бути здійснена тільки під час виконання, а при невідповідності формальних параметрів або неврной зазначеної домовленості виклику відбувається крах стека, що програміст виявить дуже швидко. p align="justify"> Далі в коді програми викликається метод LoadLibrary, який у якості параметра використовує ім'я бібліотеки. Після успішної відпрацювання даного методу і завантаження бібліотеки в пам'ять покажчик на завантажену бібліотеку поміщається в змінну HLib. Якщо бібліотеки не вдається знайти (або завантажити), то в цю ж змінну поміщається код помилки. Щоб визначити, чи була завантажена бібліотека, змінну HLib слід порівняти з константою HINSTANCE_ERROR, яка визначена в модулі Windows. Якщо бібліотека була успішно завантажена, то здійснюється спроба знайти адресу методу в пам'яті комп'ютера за допомогою виклику методу GetProcAddress. Зазначений метод повертає адресу того методу, ім'я якого зазначено в другому параметрі GetProcAddress. Якщо ж метод не був знайдений, то повертається nil-адресу. p align="justify"> Відповідно виклик методу Add1 здійснюється тільки у разі, якщо він був успішно знайдений. Потім, оскільки при завантаженні бібліотеки були зайняті си...


Назад | сторінка 5 з 12 | Наступна сторінка





Схожі реферати:

  • Реферат на тему: Як бути, якщо контрагент за договором - нерезидент?
  • Реферат на тему: Якщо ви викликаєте швидку допомогу
  • Реферат на тему: Якщо лікарняний невірно розрахований
  • Реферат на тему: Якщо ваш працівник затриманий чи засуджений
  • Реферат на тему: Якщо ремонт виявився модернізацією