- •1.Розробка системи оперативної довідки
- •1.1.Меню Help
- •1.2. Малюнок 1. Вікно довідки. Кнопка Help в екранній формі
- •1.4.Виклик контекстно-залежної довідки кнопкою What's This?
- •1.5. Малюнок 2. Екранна форма, у якій установлена кнопка виклику контекстної довідки. Використання html Help Workshop
- •1.5.1.Створення проекту системи оперативної довідки
- •Малюнок 3. Діалогове вікно New.
- •Малюнок 4. Діалогове вікно Existing Files.
- •1.5.2.Таблиця змісту
- •Малюнок 5. Вікно щойно створеного проекту.
- •Малюнок 6. Заповнення таблиці змісту.
- •1.5.3.Предметний покажчик
- •Малюнок 7. Заповнення контекстного вказівника.
- •1.5.4.Додавання в проект html-файлів розділів довідки
- •1.5.5. Малюнок 8. Заготівля html-файлу, оформлена html Help Workshop. Зв'язки між файлами розділів і url
- •1.6.Додавання і видалення файлів розділів довідки
- •Малюнок 9. Діалогове вікно Topіc Fіles.
- •1.7.Компіляція системи оперативної довідки
- •1.8.Контекстно-залежні розділи довідки
- •Малюнок 10. Діалогове вікно Options.
- •Малюнок 11. Wizard Selection
- •Малюнок 12. Вікно Application Builder.
- •1.8.1.Включення файлу відображення в проект системи оперативної довідки
- •1.8.2. Малюнок 13. Включення файлу відображення в проект системи оперативної довідки. Зв'язування HelpContextіD з html — файлами розділів довідки
- •1.8.3. Малюнок 14. Діалогове вікно для організації зв'язування файлів розділів довідки і HelpContextі у додатку. Розділи довідки, що викликаються кнопкою What's This?
- •Малюнок 15 Екранна форма Visual FoxPro, налаштована на використання довідки What's This?
- •1.9.Поширення готової системи оперативної довідки
- •2.Пошук і обробка помилок, тестування проекту
- •2.1.Проблема помилок у програмному продукті
- •2.2.Пошук помилок у програмному коді
- •2.2.1.Синтаксичні помилки
- •2.2.2.Логічні помилки
- •2.2.3.Виключення
- •2.3.Розбивка коду на модулі для мінімізації помилок
- •2.4.Помилки при передачі параметрів
- •2.5.Використання команд exіt і return
- •2.6.Обробка ушкоджених файлів
- •2.7.Тестування та налагодження додатків
- •2.7.1.Технологія тестування
- •2.7.2.Створення середовища для тестування
- •2.7.3.Створення тестових наборів даних, що забезпечують повноту накриття додатка
- •2.7.4.Документування тестових наборів
- •2.8.Методика перехоплення помилок
- •2.9.Налагоджувальник
- •Малюнок 16. Налагоджувальник Visual FoxPro.
- •2.9.1.Використання вікна Trace
- •Малюнок 17. Панель інструментів налагодження
- •Малюнок 18 Діалогове вікно Breakpoints
- •2.9.2.Використання вікна Locals
- •Малюнок 19. Діалогове вікно Locals
- •2.9.3.Використання вікна Watch
- •Малюнок 20. Діалогове вікно Watch.
- •2.9.4.Діалогове вікно Call Stack
- •2.9.5.Використання вікна Debug Output
- •2.9.6.Діалогове вікно Event Tracking
- •Малюнок 21. Діалогове вікно Event Tracking.
- •2.10.Використання Coverage Profiler
- •Малюнок 22. Додаток Coverage Profiler у режимі відображення покриття.
- •2.11. Малюнок 23. Додаток Coverage Profiler у режимі відображення профілю. Використання процедур обробки помилок
- •2.11.1.Використання методів обробки події error в об'єктах
- •3.Література
- •4.Перелік ілюстрацій
2.6.Обробка ушкоджених файлів
Файл даних дуже легко може бути ушкоджений. Оскільки обсяг файлу значно перевищує обсяг оперативної пам'яті комп'ютера, Visual FoxPro безупинно перекачує дані з файлу в пам'ять і назад. Якщо все нормально, то ніяких ускладнень при цьому не виникає. Але якщо користувач раптово виключить комп'ютер, не вийшовши з програми… У такому випадку дуже імовірно, що файл не буде цілком записаний. Те ж саме може відбутися, якщо програма завершує роботу в процедурі обробки помилок, не закривши усі відкриті файли таблиць. На жаль, єдиний радикальний спосіб охоронити файли від ушкоджень подібного роду лежить не в області програмного забезпечення, а у використанні відповідних апаратних засобів, зокрема джерел безперебійного живлення. Програмними ж засобами можна тільки відстежити і по можливості парирувати наслідки вже існуючої помилки в структурі файлу даних.
Звичайно, найпростіший спосіб відновити ушкоджений файл — використовувати збережену раніше його резервну копію з стрічки чи диска. Якщо резервне копіювання виконується щодня, ви ризикуєте тільки результатами роботи за поточний день. Але навіть така втрата небажана. Для колишніх версій FoxPro можна було використовувати такі програми відновлення індивідуальних файлів таблиць, як dSalvage, розроблену фірмою Comtech, і FoxFіx, розроблену в Hallogram (www.Hallogram.com). Але для файлів більш складної структури, що використовуються в Vіsual FoxPro, ці програми не годяться. Для цих цілей можна порекомендувати Stonefіeld Database Toolkitіt від Stonefіeld Systems Corp (www.stonefіeld.com). Інший дуже ефективний інструмент — xCase for Fox від RESolutіon Ltd (його можна знайти на сервері www.fltech.com). Оскільки компоненти бази даних дуже тісно зв'язані усередині файлу, для роботи з ними потрібно, крім звичайних засобів формування резервних копій, обов'язково обзавестися цими інструментальними засобами. У повсякденній роботі з базами даних Visual FoxPro вам знадобляться засоби для виконання наступних операцій:
виправлення помилок у заголовках файлів;
відновлення загублених Мемо — полів;
повторна індексація таблиць у DBC-файлі зі збереженням існуючих відносин або цілісності коду;
супровід контейнера баз даних — зміна імен таблиць, полів, властивостей полів і т. п.;
відновлення структури бази даних чи відновлення структур окремих її компонентів.
Ушкодження індексних файлів виникають у випадку переносу резервної копії DBF — файлу у відриві від відповідної йому резервної копії індексу. У цьому випадку зміни, внесені в оригінальний DBF-файл, тобто той, котрий заміняється резервною копією, відповідно відбиваються в його індексі, але відсутні в резервній копії. У результаті індекс може вказати не на той запис, не знайти потрібного запису чи узагалі вказати на неіснуючий запис за межами файлу. Положення погіршується тим, що контейнер бази даних (DBC — файл) відслідковує інформацію й у таблиці й в індексі.
Проблема з окремим файлом індексу може бути улагоджена повторним індексуванням таблиці. Однак навіть команді REІNDEX не допоможе, якщо зіпсований заголовок файлу. За старих часів простих баз даних можна було застрахуватися, зберігши індексні вираження в окремій таблиці, чи словнику просто виписавши на лист папера і сховавши його в шухляду столу. Потім при необхідності ушкоджений індексний файл видаляється, відкривається потрібна таблиця .DBF, і індекс відновлюється. Але такий спрощений підхід тепер тільки додає “головний біль” базі даних Visual FoxPro, оскільки при цьому можна втратити іншу інформацію про файли — відносини між таблицями і процедури відстеження посилальної цілісності.
Хоча DBC — файл і містить запис для посилання на будь-яке ім'я тега, він не зберігає ні індексного вираження, ні інформації про будь-який інший індекс (автономний чи неструктурований). А звідси випливає, що кращий спосіб цілком зруйнувати структуру бази даних — це просто скопіювати резервну копію якої-небудь таблиці в поточний каталог. Ви зможете одержати ще більше інформації про умови підтримки цілісності бази даних, якщо запустите з командного вікна команду VALІDATE DATABASE.
Додаткові складності виникають при ушкодженні файлів форм, етикеток і звітів. Visual FoxPro запам'ятовує інформацію, що стосується цих об'єктів, і в DBF -, і в Мемо — файлах. Так що тут чекають складності того ж порядку, що і при роботі з ушкодженими індексами. У Таблиця 2 перераховані розширення імен файлів для головних програмних компонентів системи.
Таблиця 2 Розширення імен файлів для головних програмних компонентів Vіsual FoxPro
-
Уміст файлу
Розширення для даних
Розширення для MEMO
База даних
.DBC
.DCT
Меню
.MNX
.MNT
Класи
.VCX
.VCT
Проект
.PJX
.PJT
Етикетка
.LBX
.LBT
Звіт
.FRX
.FRT
Екран
.SCX
.SCT
Таблиця
.DBF
.FPT
На закінчення дійдемо невтішному висновку: хоча в деяких випадках і вдається справитися з ушкодженням файлів чисто програмними засобами, єдиний радикальний спосіб боротьби з цими “окремими недоліками” — запастися резервною копією і регулярно її обновляти. Найкраще використовувати який-небудь мобільний носій чи то стрімер, оптичні диски, Flash накопичувач і зберігати резервну копію в надійному потаєному місці.