- •Передмова
- •Тема 1: Правила техніки безпеки при роботі з комп’ютером
- •Тема 2: Алфавіт. Ідентифікатори. Константи. Вирази
- •Тема 3: Загальна структура і розділи Pascal-програми
- •Тема 4: Введення і виведення у Pascal-і. Форматоване виведення
- •Тема 5: Прості (скалярні) типи данних
- •Тема 6: Завантаження середовища Турбо Паскаль. Функціональні клавіші
- •Тема 7: Меню опції
- •Тема 8: Вираження і пріоритет операцій. Стандартні математичні функції та процедури
- •Тема 9: Умовний оператор. Вкладений умовний оператор
- •Тема 10: Оператор вибору
- •Тема 11: Оператори циклу. Оператор циклу з параметром
- •Тема 12: Оператор циклу з перед- і з постумовою
- •Тема 13: Складні типи. Масиви
- •Тема 14: Багатомірні масиви
- •Тема 15: Пошук і сортування елементів масиву. Класи алгоритмів сортування
- •Тема 16: Динамічна пам'ять. Адреси і покажчики
- •Тема 17: Оголошення покажчиків, виділення та звільнення динамічної пам’яті
- •Тема 18: Процедури та функції для роботи з динамічною пам’яттю
- •Тема 19: Символьний тип даних. Упаковані масиви
- •Тема 20: Процедури та функції для обробки рядків
- •Тема 21: Структурований тип даних - безліч
- •Тема 22: Структурований тип даних – записи
- •Тема 23: Опис файлових змінних. Обробка типізованих файлів
- •Тема 24: Послідовний та прямий доступ до файлів
- •Тема 25: Обробка не типізованих файлів
- •Тема 26: Робота з текстовими файлами
- •Тема 27: Типізовані константи
- •Тема 28: Поняття та робота з процедурами та функціями
- •Тема 29: Використання модуля crt. Програмування клавіатури
- •Тема 30: Використання модуля crt. Текстове виведення на екран. Програмування звукового генератора
- •Тема 31: Графічні можливості tp 7.0. Використання бібліотеки Graph
- •Тема 32: Бібліотечні модулі користувача
- •Тема 33: Основні принципи ооп. Створення об’єктів. Використання об’єктів
- •Список літератури
- •Додаток а (довідковий) Основні алгоритми обробки масивів
- •Додаток б (довідковий) Питання перевірки знань з теорії
- •Додаток в (довідковий) Поширені коди клавіш
- •Додаток д (довідковий) Коди сканування клавіатури
Тема 25: Обробка не типізованих файлів
Файли, що не типізуються, оголошуються як файлові змінні типа FILE і відрізняються тим, що для них не вказаний тип компонентів. Відсутність типа робить ці файли, з одного боку, сумісними з будь-якими іншими файлами, а з іншою дозволяє організувати високошвидкісний обмін даними між диском і пам'яттю.
При ініціації файлу, що не типізується, процедурами RESET або REWRITE можна вказати довжину запису файлу, що не типізується, в байтах.
Наприклад, так:
var
f: file;
begin
.......
assign(f, ''myfile.dat'')
reset(f,512);
.......
end.
Довжина запису файлу, що не типізується, вказується другим параметром при зверненні до процедур RESET або REWRITE, як яке може використовуватися вираження типа WORD. Якщо довжина запису не вказана, вона приймається рівною 128 байтам.
Турбо Паскаль не накладає яких-небудь обмежень на довжину запису файлу, що не типізується, за винятком вимоги позитивності і обмеження максимальної довжини 65535 байтами (ємкість цілого типа WORD). Проте для забезпечення максимальної швидкості обміну даними слід задавати довжину, яка була б кратна довжині фізичного сектора дискового носія інформації (512 байт). Більш того, фактично простір на диску виділяється будь-якому файлу порціями - кластерами, які залежно від типа диска можуть займати 2 і більш суміжних секторів. Як правило, кластер може бути прочитаний або записаний за один зворот диска, тому найвищу швидкість обміну даними можна отримати, якщо вказати довжину запису, рівну довжині кластера.
При роботі з файлами, що не типізуються, можуть застосовуватися всі процедури і функції, доступні файлам, що типізуються, за винятком READ і WRITE, які замінюються відповідно високошвидкісними процедурами BLOCKREAD і BLOCKWRITE. Для виклику цих процедур використовуються наступні пропозиції:
BLOCKREAD (<ф .п . >, <буф> < [, <NN>] )
BLOCKWRITE (<ф . п . >, <буф> < [, <NN>] )
Тут <буф> - буфер: ім'я змінної, яка братиме участь в обміні даними з дисками;
<D> - кількість записів, які мають бути прочитані або записані за одне звернення до диска;
<NN> - необов'язковий параметр, що містить при виході з процедури кількість фактично оброблених записів.
За одне звернення до процедур може бути передано до N*recs байт, де RECS - довжина запису файлу, що не типізується. Передача йде, починаючи з першого байта змінної <буф>. Програміст повинен поклопотатися про те, щоб довжина внутрішнього представлення змінної <буф> була достатньою для розміщення всіх N*recs байт при читанні інформації з диска. Якщо при читанні вказана змінна <буф> недостатньої довжини або якщо в процесі запису на диск не виявиться потрібного вільного простору, виникне помилка введення-виводу, яку можна заблокувати, вказавши необов'язковий параметр <NN> (змінна типа WORD).
Після завершення процедури покажчик зміщується на <NN> записів. Процедурами SEEK, FILEPOS і FILESIZE можна забезпечити доступ до будь-якого запису файлу, що не типізується.
Питання для контролю.
-
Які файли називаються не типізованими?
-
В чому переваги не типізованих файлів?
-
Де можна вказати довжину запису файлу?
-
Як залежить швидкість обміну даними від довжини запису файла?
-
які специфічні процедури використовуються для роботи з не типізованими файлами?