Робота з ресурсами в CBuilder

Знаєте ви про це чи ні, але ресурси лежать в основі всього, що ви робите в CBuilder Всі дані форми, такі як властивості і обробники подій, зберігаються у вигляді ресурсів, приєднаних до додатків, які ви пишете в CBuilder Рядки, меню, керуючі елементи та інша інформація доступні класам VCL через ресурси, що приєднуються до вашій програмі під час збірки додатку (компоновки)

У цьому розділі ми розглянемо кілька інших варіантів використання ресурсів у вашому додатку Що таке ресурс В основному це дані, повязані з вашим додатком Ресурси не можуть безпосередньо містити код, але можуть містити інформацію, яка використовується кодом вашої програми Прикладом ресурсів можуть служити рядки тексту, меню і растрові малюнки (bitmaps) Ця інформація передається разом з вашим виконуваним файлом або може зберігатися в динамічно завантажується бібліотеці (DLL)

Ми досліджуємо деякі менш відомі варіанти використання ресурсів Ми побудуємо бібліотеку DLL, що складається тільки з ресурсів, в CBuilder та іншої середовищі розробки (у даному випадку Visual C + +) і покажемо, як завантажувати з неї інформацію під час роботи програми

На додаток до DLL, що складається з ресурсів, ми досліджуємо, як динамічно завантажувати меню в вашу програму У CBuilder немає прямого способу завантажити меню з ресурсу або зовнішнього файлу, але ви легко можете конфігурувати меню під час роботи, грунтуючись на меню з ресурсу

Само собою, ви навчитеся створювати файли ресурсів Хоча в основному ви будете будувати файли ресурсів за допомогою програми Borland Resource Workshop (поставляється з Borland C + +) або інший (наприклад, Resource Editor в Visual C + +), ви також можете побудувати повністю функціональний ресурс самі, набираючи текст вручну Це все не так страшно, як звучить, і скоро ви навчитеся це робити

В останньому прикладі в цьому розділі ми розглянемо інший тип ресурсу Ви зрозумієте, як завантажувати сам код (функції) з зовнішньої DLL під час роботи, не привязуючись до цієї бібліотеці під час компіляції Виключно потужна технологія, відома як динамічне завантаження функцій, може бути застосована для розширення існуючих програм за відсутності їх вихідного коду Використовуючи відповідний дизайн, ви зможете бути впевнені, що ваша програма не буде застарівати, завантажуючи критичний код із зовнішніх динамічних бібліотек

Ймовірно, перше питання, яке у вас виник, – навіщо нам використовувати ресурси Зрештою, CBuilder сам завантажує свої дані з ресурсу, навіщо ж підміняти собою систему і намагатися її переграти за її правилами Відповідь у тому, що ресурси можна використовувати більш широко, ніж це робить CBuilder CBuilder зберігає дані статично в файлах ресурсів Ви ж можете тримати дані в ресурсі, а потім отримувати їх під час роботи, грунтуючись на якомусь своєму критерії Ви навіть можете змінювати вид міток статичного тексту, грунтуючись на даних з ресурсу

Навіщо вам може знадобитися небудь подібне Одним словом – для інтернаціоналізації Можливість зберігати інформацію для кожної мови окремо в таблицях рядків у ресурсному файлі є кращою альтернативою зберіганню окремих таблиць для кожної мови Це буде все більш і більш важливо, так як програмне забезпечення стає все більш глобальним Вам доведеться думати про те, як версії вашої програми будуть працювати не тільки в Америці та Англії, але також і у Франції, Іспанії, Німеччини, Ізраїлі, Росії та багатьох інших країнах

Щоб не збожеволіти в такій ситуації, найкраще мати одну загальну версію програми

Якщо у вас є можливість завантажувати різні частини системи, які залежать від мови, то ви мінімізуєте роботу, яку потрібно виконати для використан ня ваших програм в інших країнах Хоча є деякі мови, в яких не все так просто, наприклад в китайському є свої вимоги, і такий підхід не згодиться, але для більшості європейських мов він себе виправдовує Використовуючи міць файлів ресурсів, вам потрібно думати тільки про завантаження коректного набору рядків з ресурсу, замість того щоб розробляти окремий продукт для даної країни

Ще одним величезним перевагою ресурсів є можливість налаштування програми з їх допомогою Уявіть, що у вашої програми є три режими роботи Перший призначений для тих, хто рідко використовує компютер і майже нічого не знає про роботу з Windows (віце-президент вашої компанії, швидше за все, один з таких) Для них вам потрібні більш докладні повідомлення про помилки, прості екранні запити і коротка система меню, що містить самі часто використовувані команди Більш досвідчені користувачі хочуть мати більше можливостей контролю над системою і менше слів в повідомленнях Вони хочуть робити те, що їм потрібно, і при цьому мати можливість збільшити свій контроль над системою в майбутньому

Останній вид користувачів, з якими ви найчастіше зустрічаєтеся, – це так званий суперкористувач (power user), який хоче мати повний контроль над усім Таким потрібні гарячі клавіші для швидкого виклику основних команд, стислі повідомлення про помилки, що містять тільки потрібну їм інформацію, і меню, які можна конфігурувати так, щоб вони містили потрібні команди і не містили нічого непотрібного (Наприклад, довідки)

Єдиний спосіб задовольнити потреби всіх трьох груп – використовувати ресурси Єдина альтернатива – постачати три різних програмних продукту або ж тримати в програмі так багато логічного коду, визначального групу, що вона стане «поперек себе ширше» Давайте розглянемо, як же ви можете використовувати ресурси для вирішення своїх завдань простішим способом, ніж переписування одного і того ж код тричі з різними варіаціями

Основний метод використання ресурсів полягає у зберіганні та завантаженні рядків (текстових символів) із зовнішнього джерела Як зазначено вище, рядкові ресурси використовуються в основному для інтернаціоналізації програми, але також існують і інші, не такі очевидні способи використання строкових ресурсів Наприклад, у відповідь на яку-небудь помилку ви використовуєте функцію MessageBox, Щоб проінформувати користувача про те, що відбувається Текст, який зявляється в повідомленні, зашитий в програму Що станеться, якщо вам знадобиться змінити текст повідомлення в залежності від запитів користувача Вам доведеться поміняти текст, перекомпілювати програму і заново її поширити Крім того, тестуючий персонал наполягатиме на повторному тестуванні нової версії Так що невелике зміна програми перетвориться на кошмар

Уявіть тепер, що рядки тексту для вікон повідомлень зберігаються в зовнішньому файлі Довжини рядків, що лежать у файлі, не зміняться, так що тестує персоналу не потрібно повна перевірка системи, якщо вам знадобиться поміняти пару рядків Ті, хто пише документацію, теж будуть щасливі, так як усвідомлюють, що текст може змінюватися, і напишуть відповідні інструкції користувачеві І нарешті, ви будете щасливі, так як код не змінюватиметься, програму не потрібно буде перекомпілювати і ваш бос не буде вас лаяти Все, що буде потрібно, – поміняти рядок в зовнішньому файлі і поширити цей файл серед користувачів

Ось у чому полягає концепція строкових ресурсів Вони зберігаються або в програмі, в якій

використовуються, або у зовнішній DLL У даному прикладі ми будемо використовувати просту ресурсну бібліотеку (DLL), створену в іншій системі, для динамічного завантаження даних в наш додаток

Джерело: Теллес М – Borland C + + Builder Бібліотека програміста – 1998

Схожі статті:


Сподобалася стаття? Ви можете залишити відгук або підписатися на RSS , щоб автоматично отримувати інформацію про нові статтях.

Коментарів поки що немає.

Ваш отзыв

Поділ на параграфи відбувається автоматично, адреса електронної пошти ніколи не буде опублікований, допустимий HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

*

*