Vb6 робота меню файлової системи приклади коду. Читання та запис до текстового файлу

Windows

Мета роботи: Вивчення та використання операторів мови VB 6 для роботи з файлами різних типів: послідовні (текстові) файли, файли довільного доступу, бінарні файли. Дослідження та використання інструменту CommonDialogдля відкриття та збереження файлів, вибору шрифту та кольору, а також використання об'єкта Clipboardдля зберігання фрагментів тексту – на прикладі створення простого текстового редактора.

Контрольні питання:

1. Яким чином можна відкрити текстовий файл? Як закрити текстовий та будь-який інший відкритий файл?

2. Як записуються дані у відкритий для запису текстовий файл? У чому різниця між операторами Write та Print?

3. Як читаються дані із відкритого для читання текстового файлу? Чим відрізняються один від одного оператори Input та Line Input? За допомогою якої функції можна прочитати із файлу задану кількість символів? Як прочитати всі символи файлу?

4. Що таке користувальницький тип даних і як використовується це поняття під час роботи з файлами довільного доступу ( raf)?

5. За допомогою яких операторів із файлу rafчитаються записи та у файл rafпишуться нові записи?

6. З якою метою визначається та використовується індекс при роботі з файлом raf?

7. Які особливості використання бінарних файлів? Як вони відкриваються? Як читається з бінарного файлу і запис в бінарний файл?

8. Як можна застосувати елемент керування CommonDialogЩоб завантажити вміст текстового файлу в текстове поле? Як за допомогою того ж елемента керування зберегти відредагований текст у текстовому файлі?

9. Як можна застосувати елемент керування CommonDialogдля завантаження вмісту файлу rtfв полі RichTextbox? Як за допомогою того ж елемента управління зберегти відредагований текст у файлі rtf?

10. Як можна застосувати елемент керування CommonDialogдля зміни значень параметрів шрифту та зміни кольору тексту у вікні Textbox(або виділеного фрагмента тексту у вікні RichTextbox)?

Приклад 7.1. Розглянемо додаток, який демонструє запис у текстовий файл (і читання з текстового файлу) «відомостей про співробітників» – рядків, кожна з яких містить ідентифікаційний номер, ПІБ, дату народження та місце народження працівника. Рядки утворюють таблицю, яку на екранній формі імітуватимуть 4 елементи управління Combo Box (рис. 7.1), що утворюють масив об'єктів Comb(i), у яких властивість Style має значення 1 – SimpleCombo.

Виділіть рядок, що видаляється", vbExclamation

Comb(j).RemoveItem i

‘ Вставка нового записуу таблицю:

Private Sub mnuInsert_Click()

i% = Comb(0).ListIndex

If i< 0 Then

MsgBox "Виділіть рядок для вставки перед нею", vbExclamation

Comb(0).AddItem InputBox("Введіть номер"), i

Comb(1).AddItem InputBox("Введіть фіо"), i

Comb(2).AddItem InputBox("Введіть дату народження"), i

Comb(3).AddItem InputBox("Введіть місце народження"), i

‘ Зміна запису в таблиці:

Private Sub mnuUpdate_Click()

i% = Comb(0).ListIndex

If i< 0 Then

MsgBox "Виділіть змінний рядок", vbExclamation

Comb(0).List(i) = InputBox("Введіть номер", Comb(0).List(i))

Comb(1).List(i) = InputBox("Введіть фіо", Comb(1).List(i))

Comb(2).List(i) = InputBox("Введіть дату народження", Comb(2).List(i))

Comb(3).List(i) = InputBox("Введіть місце народження", Comb(3).List(i))

‘ Очистка всієї таблиці:

Private Sub mnuClear_Click()

‘ Заповнення таблиці відомостями із текстового файлу:

Private Sub mnuLoad_Click()

Open "person. txt" For Input As #1

Input #1, numb, fio, bdate, bloc

Comb(0).AddItem numb

Comb(1).AddItem fio

Comb(2).AddItem bdate

Comb(3).AddItem bloc

‘ Запис даних таблиці в текстовий файл:

Private Sub mnuSave_Click()

N% = Comb(0).

Open "person. txt" For Output As #1

For i = 0 To N - 1

numb = Val(Comb(0).List(i))

fio = Comb (1).

bdate = CDate(Comb(2).List(i))

bloc = Comb (3).

Write #1, numb, fio, bdate, bloc

‘ Завершення роботи програми:

Private Sub mnuExit_Click()

Приклад 7.2 . Розглянемо програму, яка демонструє використання елементів керування CommonDialogдля відкриття та збереження файлу, для вибору шрифту та кольору, а також для редагування тексту.

Файл формату TXTбуде завантажуватись у текстове поле (ліве поле на мал. 7.2), а файл формату RTF- в полі RichTextbox(Праве поле на рис. 7.2).

об'єкта

Клас

об'єкта

Властивість

об'єкта

Значення якості

“Панелі спільного

діалогу”

Закладка Open / Save As

Закладка Font

Закладка Color

У таблиці не представлені властивості команд меню Font, Colorі Edit. Нижче наводиться код процедур також лише для команд меню File (Open, Saveі SaveAs). Складання коду інших команд меню – тема 2-го завдання даної роботи.

Private Sub mnuOpen_Click()

CommonDialog1.ShowOpen

F$ = CommonDialog1.FileName

If Right(F, 3) = "rtf" Then

RichTextBox1.LoadFile F

ElseIf Right(F, 3) = "txt" Then

Open F For Input As #1

S$ = Input(N, 1)

Private Sub mnuSave_Click()

CommonDialog1.ShowSave

F$ = CommonDialog1.FileName

Private Sub mnuSaveAs_Click()

CommonDialog1.ShowSave

F$ = CommonDialog1.FileName

RichTextBox1.SaveFile F, rtfRTF

У ході виконання даної роботи студент має виконати 2 завдання.

Завдання 1. У процесі виконання завдання студенти освоюють можливості роботи з файлами довільного доступу (VB 6). RAF –randomaccessfile).

Для заданої таблиці бази даних оголошується тип користувача даних, оголошується змінна цього типу (навчальний посібник , стор. 108 – 112), складаються і налагоджуються процедури, в яких використовується змінна користувача типу.

Зокрема, реалізуються процедури для команд меню Записати у файлRAFі Читати з файлуRAF. Як і прикладі 7.1, для редагування даних використовується масив об'єктів ComboBoxта меню Editз п'ятьма командами підменю: Додати запис, Видалити запис, Вставити запис, Змінити запис, Очистити таблицю.

Варіант 1.

Оголосити тип даних для таблиці «Автомобіль» (табл. 7.1) бази даних «Автосервіс».

автомобіля

автомобіля

несправності

У нижньому рядку таблиці 7.1 типи полів.

Варіант 2.

Оголосити тип даних для таблиці «Несправності» (табл. 7.2) бази даних «Автосервіс».

несправності

Назва

несправності

Вартість

У нижньому рядку таблиці 7.2 типи полів.

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

Завдання 2. Під час виконання завдання студенти доповнюють додаток прикладу 2 новими можливостями, які дозволяють розглядати цей додаток як простий текстовий редактор.

Варіант 1 CommonDialogреалізувати команди меню Fontі Color(З підменю Колір символіві Колір фону). За допомогою цих команд повинен забезпечуватися вибір шрифту (його найменування, накреслення та розміру) для виділеного фрагмента тексту у вікні RichTextbox, а також вибір кольору символів виділеного фрагмента та вибір кольору фону всього цього вікна.

Вказівка:Під час налаштування об'єкта CommonDialogДля вибору шрифту за допомогою властивості (Custom) обов'язково слід встановити значення властивості Flags, що дорівнює 1, 2 або 3 (див. посібник , стор. 183).

Варіант 2. За допомогою елемента керування CommonDialogреалізувати команди меню Edit(підміню Copy, Cutі Paste), призначенням яких є копіюванняабо видаленняу буфер обміну виділеного фрагмента тексту, а також вставкау виділене місце тексту вмісту буфера обміну.

Вказівка:До буфера обміну (об'єкту Clipboard) можна застосовувати методи SetText та GetText:

Clipboard. SetText RichTextBox1.SelText

RichTextBox1.SelText = Clipboard. GetText

8. ЗБЕРІГАННЯ І ЗЛІЧЕННЯ ІНФОРМАЦІЇ

Щоб після завершення роботи програми всі дані, створені в пам'яті, не зникли, необхідно вміти зберігати інформацію на жорсткому диску. Інакше вся інформація безслідно зникне. Зберігати дані та зчитувати їх можна у різний спосіб. Для роботи з інформацією різного обсягу та формату можна використовувати двійкові та текстові файли. Для збереження мінімальних обсягів інформації можна використовувати реєстр Windows. А для найскладніших завдань розумно користуватися базами даних.

8.1. Відкриття файлів за допомогою оператора «Open »

Файл - названа область кожного зовнішнього накопичувача інформації. Дані живуть у пам'яті комп'ютера, а файли – на жорсткому диску. Програма не працює з файлами безпосередньо, а використовує як посередник операційну систему.

Імена файлів бувають двох видів: повні - крім імені файлу вказується також розташування файлу на зовнішньому носії (наприклад "C:\Program Files\Microsoft Visual Studio\VB98\VB 6.EXE") і короткі - тільки ім'я файлу (VB 6.EXE ). Якщо місцезнаходження файлу не вказано, він шукатиметься в поточній папці, за замовчуванням – папка, де знаходиться ваша програма. Безпосереднє ім'я файлу і двох частин: власне унікальне ім'я файлу та його розширення. Власне ім'я ідентифікує файл, а розширення зазвичай вказує на формат файлу або те, якою програмою він створений.

Перед початком роботи з файлом необхідно запитати у операційної системи покажчик (дескриптор) файлу. Для його отримання користуються функцією FreeFile. Потім за допомогою оператора Open цей вказівник пов'язується з необхідним файлом. Тільки після цього програма зможе працювати із ним. Синтаксис відкриття файлу наступний:

'отримуємо вільний покажчик файлу та привласнюємо його змінною

FileHandle% = FreeFile

' відкриваємо файл

Open FilePath _

As [#]FileHandle%

...(роботафайлом)

Close [#]FileHandle

· FileHandle % – змінна, де зберігається покажчик файла;

· FreeFile - ім'я функції, що повертає покажчик файлу;

· Open – ім'я оператора;

· FilePath - повне ім'я файлу;

· For - ключове слово, за яким слідує опис режиму доступу до файлу;

· Mode – режим доступу до файлу (див. табл. 15);

Таблиця 15

Режими доступу до файлу

Режими доступу

Опис

Append

Додавання даних до кінця існуючого текстового файлу. Якщо файл не існує, він буде створено

Binary

Відкриття файлу у двійковому режимі, тобто. як набору байтів. Якщо файл не існує, але буде створено

Input

Відкриття файлу для читання у текстовому форматі

Output

Відкривання файлу для запису текстового файлу. При цьому вся стара інформація буде видалена. Якщо файл не існує, але буде створено

Random

Відкривання файлу як довільний доступ. Такий режим використовується для роботи із простими записами. Якщо файл не існує, але буде створено

· Access - необов'язкове ключове слово, за яким слідує опис типу доступу;

· AccessType – опис типу доступу:

· Read – читання;

· Write – запис;

· Read Write – читання та запис.

Примітка

При режимах доступу Append і Output доступний лише тип доступу Write, при Input – тільки Read, а при Binary та Random доступні всі три типи доступу.

· LockType – необов'язковий параметр, який визначає, чи зможуть інші програми використовувати цей файл, поки з ним працює ваша програма. Зазвичай воно пов'язане з роботою мережі (див. табл. 16).

Таблиця 16

Можливі значення LockType

Значення

Опис

Shared

До файлу матимуть повний доступ усі користувачі з необхідними правами

Lock Read

Блокується читання файлу, а запис дозволено

Lock Write

Блокується запис у файл, а читання дозволено

Lock Read Write

Забороняється і читання, і запис до нього

· As - ключове слово, за яким слідує покажчик файлу.

· # – символ, що вказує на те, що наступне за ним значення є вказівником файлу.

· Len – необов'язкове ключове слово, за яким має слідувати параметр, що визначає довжину запису.

· CharInBuffer % – довжина запису для файлу, відкритого в режимі довільного доступу (Random).

· Close – оператор, який закриває файл, пов'язаний із зазначеним дескриптором.

Важливо закрити файл після закінчення роботи з ним. Оператор "Close" звільняє покажчик файлу та пов'язану з ним область пам'яті.

При роботі з файлом, а саме при читанні з нього, дуже важливим є визначення кінця файлу. Його можна визначити за допомогою функції EOF (End Of File):

EOF (FileHandle)

· EOF – ім'я функції;

· FileHandle – покажчик файлу, кінець якого визначається.

Функція повертає True (істина), якщо кінець файлу досягнуто, інакше повертається False (Брехня).

8.2. Читання та запис до текстового файлу

Текстовий файл відкривають у режимі доступу "Input", "Output" або "Append" (див. табл. 15). Особливість цього режиму в тому, що в ньому працюють тільки з конкретними символами, що друкуються. Зі службовими символами працювати марно.

Для запису інформації використовують два оператори «Print» та «Write», синтаксис яких наступний:

Print #FileHandle%, VarBuffer [;]

Write #FileHandle%, VarBuffer [;]

· Print/Write – ключові слова операторів.

· #FileHandle % - покажчик файлу, в який буде розміщено інформацію.

· VarBuffer – це значення, яке буде записано у файл.

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

Для читання інформації з файлу використовують оператори «Input» та «Line Input». Синтаксиси аналогічний друг другу:

Line Input #FileHandle%, VarBuffer

Input #FileHandle%, VarBuffer

· Line Input/Input – ключові слова операторів.

· #FileHandle % - покажчик файлу, з якого буде прочитана інформація.

· VarBuffer – змінна, в яку буде зчитуватись інформація.

Різниця операторів Line Input і Input полягає в тому, що перший призначений тільки для текстових файлів, а другий - для будь-яких. У разі текстових файлів «Input» зчитує дані, що знаходяться в одному рядку, до першого роздільника (для текстових даних роздільником є ​​«,» (кома), а для числових – «» (пробіл) і «,»), а «Line Input» » зчитує відразу весь рядок, ігноруючи будь-які роздільники.

Примітка

В Visual Basicнемає засобів контролю формату раніше створених файлів. Тому символ «2» можна вважати як відповідне число і навпаки.

8.3. Робота з бінарними файлами

Файли відкриваються в бінарному форматіоператором "Open" у режимі "Binary". Відмінною рисою цього режиму є те, що робота з файлом орієнтована виключно на конкретні байти. Оскільки Visual Basic може адресуватися безпосередньо до місця файлу, цей режим також називається – режимом прямого доступу. Інша особливість цього режиму – наявність можливості одночасного запису та зчитування інформації в різні частини файлу, не перевідкриваючи його. Запис у файл, відкритий у бінарному режимі, здійснюється наступним синтаксисом:

Put #FileHandle%, , NameVar

· Put – ім'я оператора запису інформації.

· RecNumber – номер байта файлу, куди буде записана інформація (необов'язковий параметр).

· NameVar – змінна, вміст якої буде записано у файл.

Зчитування інформації з файлу в бінарному режимі відбувається за допомогою наступного оператора:

Get #FileHandle%, , NameVar

· Get – ім'я оператора запису інформації.

· FileHandle % – файловий покажчик.

· RecNumber – номер байта файлу, з якого буде прочитана інформація (не обов'язковий параметр).

· NameVar – ім'я змінної, до якої буде поміщено лічену інформацію.

Оскільки бінарний режим орієнтований на байти інформації, то при читанні з файлу буферна змінна повинна мати суворо певний тип: або «Byte», тоді буде раховано числове значення байта, або символьний фіксованої довжини в один символ, тоді байт буде рахований у вигляді символу, ANSI код якого відповідає величині байта. Цей символ може бути навіть керуючий, чого не можна досягти у випадку з текстовими файлами.

Примітка

За відсутності параметра "RecNumber" запис або зчитування інформації буде відбуватися в наступному байті файлу після того, з яким до цього працювали.

8.4. Маніпуляції графікою

Зберігати у файлах і витягувати їх можна і графічні зображення. Щоб витягти з растрового файлу або файлу піктограми та привласнити його властивості Picture елементів керування PictureBox і Image, використовується функція LoadPicture () з наступним синтаксисом:

ImageCtrl.Picture = LoadPicture(FilePath)

· ImageCtrl – ім'я елемента керування вікном із малюнком, елемента керування зображенням або форми;

· LoadPicture – ім'я функції;

· FilePath – повне ім'я файлу.

SavePicture ImageCtrl .Picture, FilePath

· SavePicture – ім'я оператора;

· ImageCtrl – ім'я елемента керування вікном із малюнком, елемента керування зображенням або форми;

· Picture - ім'я якості об'єкта, що відповідає за зображення;

· FilePath – повне ім'я файлу із зазначенням його розташування на диску.

8.5. Робота з даними у реєстрі

Для збереження невеликих фрагментів інформації символьного формату можна використовувати реєстр Windows. Visual Basic має чотири процедури, які можна використовувати для доступу до нього. Вони дуже прості у застосуванні, але мають один головний недолік: можна отримати доступ до даних тільки з певного розділу реєстру: MyComputer \ HKEY _CURRENT _USER \ Software \ VB and VBA Program Settings ". Щоб отримати доступ до інших розділів реєстру, потрібно скористатися спеціальними функціями Win 32 API.

Щоб отримати значення параметра з розділу реєстру Windows, присвяченого Visual Basic, потрібно використовувати таку функцію:

MyString = GetSetting(VBKeyName, Section, Key [,Default])

· MyString – рядок для зберігання значення, що повертається функцією;

· GetSetting – ім'я функції.

· VBKeyName – рядкове значення, яке є ім'ям внутрішнього підрозділу VB/VBA.

· Key – строкове значення, яке представляє ім'я параметра у розділі.

· Default – необов'язковий аргумент, значення якого буде повернено у разі помилки (відсутність параметра).

Для збереження певного значення в реєстрі Windows використовується наступний оператор:

SaveSetting VBKeyName, Section, Key, MyString

· SaveSetting – ім'я оператора.

· MyString – рядкова змінна, до якої буде вміщено знайдене значення.

Для отримання з реєстру масиву, що містить всі значення параметрів певного підрозділу, використовується наступна функція:

MyVariant = SetAllSettings(VBKeyName, Section)

· MyVariant – повертається функцією масив значень типу «Variant».

· SetAllSettings – ім'я функції.

· Section – строкове значення, яке представляє розділ або підрозділ конкретної програми.

Для видалення цілого розділу параметрів застосовується оператор із наступним синтаксисом:

DeleteSetting VBKeyName, Section, Key

· DeleteSetting – ім'я оператора.

Контрольні питання для самоперевірки

  1. Як довго зберігати деяку інформацію?
  2. Що таке файл?
  3. Які імена файлів ви знаєте?
  4. Наведіть синтаксис оператора Open. Поясніть призначення параметрів.
  5. Як організувати спільний доступ кількох програм до одного файлу одночасно?
  6. Як визначити, що інформація у файлі вичерпана?
  7. Чому рекомендується закрити його після роботи з файлом?
  8. У чому ви бачите різницю режимів текстового та бінарного файлів?
  9. Як відбувається зчитування та запис даних у режимі текстового файлу?
  10. Як відбувається зчитування та запис даних у режимі бінарного файлу?
  11. У чому різниця операторів «Print» та «Write» під час роботи з файлами?
  12. У чому різниця операторів Input і Line Input при роботі з файлами?
  13. Як можна працювати з графічними даними?
  14. Які основні принципи роботи з реєстром Windows?

Кожна програма повинна зберігати дані на диск та читати їх з диска. Це необхідно, наприклад, для збереження налаштувань програми, навряд чи користувачеві сподобається програма, яку при наступному запуску доведеться налаштовувати заново.

У цій статті йдеться про роботу з текстовими файлами засобами Visual Basic.

Дескриптор файлу

Для роботи з файлами операційна системавикористовує канали введення/виводу, тобто. кожен відкритий файл має власний номер.

У Visual Basic існує функція FreeFileяка повертає номер вільного каналу, який можна використовувати для роботи з файлом. Якщо вільних каналів немає, виникає помилка.

FreeFile [ (RangeNumber) ]

RangeNumber-необов'язковий параметр, який дозволяє визначити діапазон значень вільних каналів, якщо RangeNumber= 0 (за замовчуванням), то повертається номер каналу з діапазону 1 – 255, а якщо 1, то з діапазону 256 – 511.

MyFile = FreeFile " Змінної MyFile присвоєно вільний каналі тепер її можна використовувати для роботи з файлами

Робота з текстовими файлами

Найчастіше доводиться зустрічатися із текстовими файлами. Текстові файли складаються з набору символів ASCII(American Standard Code for Information Interchange – Американський стандартний код для обміну інформацією).

Перш ніж почати записувати/зчитувати дані, файл необхідно відкрити, робиться це за допомогою оператора Open (Ім'я файлу) For As #Номер_файлу, де:

Input- відкрити файл для читання, якщо файл не існує, виникає помилка;

Output- для запису, якщо файл немає, він буде створено, і якщо файл існує, він буде перезаписан;

Append- для додавання, якщо файл не існує, то він буде створений, а якщо файл існує, то дані будуть додаватися в кінець файлу.

Читання текстових файлівможна робити двома способами: читати посимвольно, для цього використовується функція Input(Кількість_зчитуваних_символів, #Номер_файлу) і рядково, для цього використовується функція Line Input #Номер_файлу, Куди_зчитувати.

Dim MyFile

Dim S As String "Змінна для зберігання лічених даних

MyFile = FreeFile

Open ("C:\TEST.txt") For Input As #MyFile

Line Input #MyFile, S "Зчитуємо перший рядок із файлу TEST.TXT до змінної S

Dim MyFile "Оголошуємо змінну для вільного файлу

Dim i As Integer "Змінна для циклу

Dim tS As String "Змінна для зчитування рядків

Dim S As String "Змінна для зберігання остаточних даних

MyFile = FreeFile Присвоюємо вільний канал, для роботи з файлами

"Відкриваємо файл TEST.TXT для читання

For i = 1 To 5

Line Input #MyFile, tS "Читаємо файл TEST.TXT рядково

If i => 5 Then S = tS "Якщо п'ятий рядок, то запам'ятовуємо його у змінну S

Next i

Close #MyFile "Закриваємо файл

Dim MyFile "Оголошуємо змінну для вільного файлу

Dim S As String "Змінна для зберігання лічених даних

MyFile = FreeFile Присвоюємо вільний канал, для роботи з файлами

Open ("C:\TEST.txt") For Input As #MyFile "Відкриваємо файл TEST.TXT для читання

S = Input $ (LOG (1), 1) "Зчитуємо весь файл у змінну S

Close #MyFile "Закриваємо файл

Для запису у файл існують оператори Print #Номер_файлу, Даніі Write #Номер_файлу, Дані. Відрізняє ці оператори лише те, що Writeзаписує дані в лапках, а Printбез лапок.

Нижче наступний код створить на диску C: новий файл TEST.TXT і запише в нього два рядки, перший без лапок, а другий у лапках:

Dim MyFile "Оголошуємо змінну для вільного файлу

MyFile = FreeFile Присвоюємо вільний канал, для роботи з файлами

Open ("C:\TEST.txt") For Output As #MyFile "Відкриваємо файл TEST.TXT для запису

Print #MyFile, "Цей рядок записаний оператором Print, він без лапок..."

Write #MyFile, "Цей рядок записаний оператором Write, він у лапках..."

Close #MyFile "Закриваємо файл

От і все. Як ви вже напевно зрозуміли, для закриття файлу служить оператор Close #Номер_файлу, при цьому, # Номер_файлувказувати необов'язково.

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



Завантаження...
Top