Турбо Паскаль 7

- Ім'я файлового типу (правильний ідентифікатор);FILE, OF- зарезервовані слова (файл, з);TEXT- ім'я стандартного типу текстових файлів; - будь-який тип Турбо Паскаля, крім файлів.

ДОСТУП ДО ФАЙЛІВ

Будь-якій програмі доступні два попередньо оголошені файли зі стандартними файловими змінними:INPUT- для читання даних з клавіатури таOUTPUT- для виведення на екран. Стандартний Паскаль вимагає обов'язкової згадки цих файлів у заголовку програми, наприклад, так:

- Файлова змінна (правильний ідентифікатор, оголошений у програмі як змінна файлового типу); - текстовий вираз, що містить ім'я файлу або логічний пристрій.

Ім'я файлу- це будь-який вираз рядкового типу, що будується за правилами визначення імен у MS-DOS (операційній системі ПК):

  • ім'я містить до восьми дозволених символів; дозволені символи - це великі та малі латинські літери, цифри та символи:
! @ # $ % ^ & ( ) '

- _

  • ім'я починається з будь-якого дозволеного символу;
  • за ім'ям може йти розширення - послідовність до трьох дозволених символів; розширення, якщо воно є, відокремлюється від імені крапкою.
Перед іменем може вказуватись так званий шлях до файлу: ім'я диска та/або ім'я поточного каталогу та імена каталогів вищих рівнів. Ім'я диска - це один із символівA. Z, після якого ставиться двокрапка. ІменаА:іВ:відносяться до дискових накопичувачів на гнучких дискетах, іменаС:,D:і т.д. - До жорстких дисків. Ці імена можуть належати до одного або кількох віртуальних дисків, створених в оперативній пам'яті ПК спеціальною командою VDISK під час виконання файлу автоустановки.CONFIG.SYS дискової операційної системи. Якщо ім'я диска не вказано, мається на увазі стандартний пристрій - той, який було встановлено в операційній системі перед початком роботи програми. За іменем диска може вказуватися ім'я каталогу, що містить файл. Якщо імені каталогу передує зворотна коса риса, шлях до файлу починається з кореневого каталогу, якщо риси немає - з поточного каталогу, встановленого у системі за промовчанням. За іменем каталогу може йти одне або кілька імен каталогів нижнього рівня. Кожному з них має передувати зворотна коса межа. Весь шлях до файлу відокремлюється від імені файлу зворотною косою межею. Максимальна довжина імені разом із шляхом - 79 символів, наприклад:

Стандартні апаратні засоби ПК, такі як клавіатура, екран дисплея, друкувальний пристрій (принтер) та комунікаційні канали введення-виводу, визначаються в Турбо Паскалі спеціальними іменами, які називаютьсялогічними пристроями. Усі вони Турбо Паскале розглядаються як потенційні джерела чи приймачі текстової інформації.CON– логічне ім'я, яке визначає консоль – клавіатуру або екран дисплея. Турбо Паскаль встановлює різницю між цими фізичними пристроями за напрямом передачі: читання даних можливе лише з клавіатури, а запис - тільки екран. Таким чином, за допомогою логічного пристроюCONне можна, наприклад, прочитати дані з екрана ПК, хоча така апаратна можливість існує. Введення з клавіатури буферується: символи при натисканні на клавіші поміщаються в спеціальний рядковий буфер, який передається програмі тільки після натискання на клавішуEnter. Буфеїзація введення забезпечує можливість редагування рядка, що вводиться стандартними засобами ДОС. Привведення символів здійснюється їх луна-повтор на екрані ПК. У Турбо Паскалі можна прочитати будь-який символ клавіатури, у тому числі символ CR, що виробляється клавішеюEnter, відразу після натискання на відповідну клавішу без луна.PRN– логічне ім'я принтера. Якщо до ПК підключено кілька принтерів, доступ до них здійснюється за логічними іменамиLPT1,LPT2таLPT3. ІменаPRNтаLPT1спочатку - синоніми. Засобами ДОС можна присвоїти ім'яPRNбудь-якого іншого логічного пристрою, здатного приймати інформацію. Стандартний бібліотечний модульPRINTER, що входить до бібліотекиTURBO.TPL, оголошує ім'я файлової змінноїLSTі пов'язує його з логічним пристроємLPT1. Це дозволяє використовувати простий доступ до принтера. Наприклад, програма

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

- файлова змінна, пов'язана раніше процедурою ASSIGN з існуючим файлом або логічним пристроєм-приймачем інформації.

ПРОЦЕДУРИ ТА ФУНКЦІЇ ДЛЯ РОБОТИ З ФАЙЛАМИ

Нижче наведено процедури та функції, які можна використовувати з файлами будь-якого виду. Специфіка роботи з типізованими, текстовими та нетипізованими файлами розглядається в наступних розділах.

-- Рядковий вираз, що містить нове ім'я файлу.

-- рядковий вираз, що містить шлях до каталогу, що встановлюється за умовчанням.

- вираз типуWORD, що містить номер пристрою: 0 - стандартний пристрій, 1 - диск А, 2 -диск і т.д.; - змінна типуSTRING, в якій повертається шлях до поточного каталогу на вказаному диску.

- Вираз типуSTRING, що задає шлях до каталогу. Останнім ім'ям у дорозі, тобто. ім'ям новоствореного каталогу не може бути ім'я вже існуючого каталогу.

- рядковий вираз, що містить маску файлу; - вираз типуBYTE, що містить уточнення до маски (атрибути); - змінна типуSEARCHREC, в якій буде повернено ім'я файлу.

* означає, що на місці цього символу може стояти скільки завгодно (у тому числі нуль) дозволених символів імені або розширення файлу; ? означає, що на місці цього символу може стояти один із дозволених символів.

*.* вибирає всі файли з каталогу; з*.* вибирає всі файли з іменами, що починаються з (cl.pas, ccl2345, c.dat і т.д.) a?.dat вибирає імена файлів типу a0.dat, az.dat і т.д.

Attr- атрибути файлу (див. вище);Time- час створення або останнього оновлення файлу; повертається в упакованому форматі; розпакувати параметр можна процедуроюUNPACKTIME(див.нижче);Size- довжина файлу в байтах;Name- ім'я та розширення файлу.

0 – немає помилок; 2 - не знайдено каталог; 18 - каталог порожній (немає вказаних файлів).

- запис типуSEARCHREC(див. вище), де повертається інформація про файл.

- змінна типуLONGINT, у якій повертається час у упакованому форматі.

- час та дата в упакованому форматі.

PACKTIME (var T:DateTime; var Time:LongInt)

- змінна типуWORD, у молодшому байті якої повертаються встановлювані атрибути файлу.

- ім'я файлу, що відшукується (рядковий вираз або змінна типуPATHSTR; ім'я можепередувати шлях); - список каталогів, в яких знаходиться файл (рядковий вираз або змінна типуSTRING); імена каталогів поділяються крапкою з комою.

- рядковий вираз, що містить специфікацію файлу (ім'я з розширенням та, можливо, з попереднім шляхом); - змінна типуDIRSTR = STRING [67], в якій повертається шлях до файлу; - змінна типуNAMESTR = STRING [8], в якій повертається ім'я файлу; - змінна типуEXTSTR = STRING [4], в якій повертається розширення з попередньою точкою.

- рядковий вираз або змінна типуPATHSTR.

Текстові файли зв'язуються з файловими змінними, що належать до стандартного типуTEXT. Текстові файли призначені для збереження текстової інформації. Саме в таких файлах зберігаються, наприклад, вихідні тексти програм. Компоненти (записи) текстового файлу можуть мати змінну довжину, що суттєво впливає характер роботи з ними. Текстовий файл трактується в Турбо Паскалі як сукупність рядків змінної довжини. Доступ до кожного рядка можливий лише послідовно, починаючи з першого. При створенні текстового файлу в кінці кожного запису (рядки) ставиться спеціальна ознакаEOLN(End Of LiNe -кінець рядка), а в кінці всього файлу - ознакаEOF(End Of File -кінець файлу). Ці ознаки можна протестувати однойменними логічними функціями (див. нижче). Для формування текстових файлів використовуються такі системні угоди:

EOLN- послідовність кодів ASCII #13 (CR) та # 10 (LF);EOF- код #26 стандарту ASCII.

- список виводу: послідовність з одного або більше виразів типуCHAR, STRING, BOOLEAN, а також будь-якого цілого аборечового типу.

OUTEXPR- виведений вираз;MINWIDTH, DECPLACES- вирази типуWORD(квадратні дужки означають можливість відсутності укладених у них параметрів).

_ пробіл; s пробіл для позитивного та знак ╚-╩ для негативних чисел; # десяткова цифра; Е символ десяткової основи; * знак ╚+╩ або ╚-╩ залежно від знака десяткового порядку числа.

Довжина будь-якого компонента типізованого файлу суворо постійна, що дозволяє організувати прямий доступ до кожного з них (тобто доступ до компонента за його порядковим номером). Перед першим зверненням до процедур введення-виводу покажчик файлу стоїть на його початку і вказує на перший компонент з номером 0. Після кожного читання або запису покажчик зсувається до наступного компонента файлу. Змінні списки вводу-виводу повинні мати той самий тип, що й компоненти файлу. Якщо цих змінних у списку кілька, покажчик зміщуватиметься після кожної операції обміну даними між змінними та дисковим файлом.

- список введення, що містить одну або більше змінних такого самого типу, що і компоненти файлу.

- список виводу, що містить один або більше виразів того самого типу, що і компоненти файлу.

- Вираз типуLONGINT, що вказує номер компонента файлу.

Нетипізовані файли оголошуються як файлові змінні типуFILEі відрізняються тим, що для них не вказано тип компонентів. Відсутність типу робить ці файли, з одного боку, сумісними з будь-якими іншими файлами, з другого - дозволяє організувати високошвидкісний обмін даними між диском і пам'яттю. Під час ініціації нетипізованого файлу процедурамиRESETабоREWRITEможна вказати довжину запису нетілізованого файлу в байтах.Наприклад, так: