Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лабораторный практикум по Visual Basic.doc
Скачиваний:
51
Добавлен:
31.08.2019
Размер:
10.63 Mб
Скачать

Лабораторная работа №15. Создание текстового редактора

Цель работы: рассмотреть типы существующих текстовых файлов; рассмотреть и изучить свойства компонентов, позволяющих пользователю работать с текстовыми файлами; научиться создавать приложения, которые позволяют пользователю работать с текстовыми файлами

Теоретическая часть

Для работы с текстом в Visual Basic имеется более функциональный элемент, чем Text Box – компонент Rich TextBox . Его можно увидеть на панели инструментов Tool Box, если установить в окне Properties на вкладке Controls галочку напротив компонента Microsoft Rich TextBox Control 6.0 (SP3).

Вывод на экран набора стандартных окон для выполнения операций открытия и сохранения файлов, выбора цвета и характеристик шрифта обеспечивает компонент CommonDialog , который также можно увидеть на панели инструментов, установив галочку напротив компонента Microsoft Common Dialog Control 6.0.

Методы, свойства и события компонента Common Dialog

Таблица 15.1

Название

Значение

Методы

ShowOpen

Выводит на экран диалоговое окно открытия файла

ShowSave

Выводит на экран диалоговое окно сохранения файла

ShowPrint

Выводит на экран диалоговое окно вывода на принтер

ShowColor

Выводит на экран диалоговое окно выбора цвета

ShowFont

Выводит на экран диалоговое окно выбора характеристик шрифта

Clear

Очищает Буфер обмена

SelText

Помещает в Буфер обмена текстовые данные

Свойства

CancelError

Включает формирование ошибки при щелчке на кнопке <Cancel>

Flags

Значения этого свойства задают значения диалогового окна

Filter

Задает типы файлов, которые будут показаны в списке файлов диалогового окна

FileName

Имя файла

SelText

Выделенный текст

FontName

Тип шрифта

FontSize

Размер шрифта

FontColor

Цвет шрифта

FontBold

Жирный

FontItalic

Курсив

FontStrikethru

Зачеркнутый

FontUnderline

Подчеркнутый

PrintQuality

Качество печати

PaperSize

Размер бумаги

Orientation

Ориентация бумаги

Событие

Change

Сообщает об изменении содержимого объекта

Оба компонента - CommonDialog и Rich TextBox помогают программисту создать программу, работающую с текстовыми файлами.

Рассмотрим более подробно формат свойства Filter и свойство Flags.

При использовании стандартного диалогового окна Save as свойство Flags имеет множество значений. В данной работе будут рассмотрены два из них - &H2 и &H4, описание которых приведено в Таблице 15.2.

Таблица 15.2

Имя константы

Значение

Описание

CdlOFNOverwritePrompt

&H2

Если файл с набранным именем уже существует, появляется окно сообщения с предупреждением

CdlOFNHideReadOnly

&H4

Из диалогового окна Save As исчезает CheckBox “Read Only” (только для чтения)

Использование стандартного диалогового окна Open отличается от использования окна Save as только значением свойства Flags и оператором, использующим значением свойства FileName. Описание значения свойства Flags для окна Open приведено в Таблице 15.3.

Таблица 15.3

Имя константы

Значение

Описание

CdlOFNFileMustExist

&H1000

Если файл с набранным именем уже существует, появляется окно сообщения с предупреждением и действие отменяется

CdlOFNHideReadOnly

&H4

Из диалогового окна Save As исчезает CheckBox “Read Only” (только для чтения)

Все значения записываются в одном операторе присваивания и отделяются друг от друга логическим оператором OR. Для задания значений свойства Flags можно использовать как константы, так и значения.

Свойство Filter задает типы файлов, которые будут показаны в списке файлов диалогового окна Save As (Сохранить как) или Open (Открыть).

Формат задания значений свойства Filter

Объект.Filter = “Описание 1|Фильтр1|Описание2|Фильтр2…”

Здесь Объект – имя объекта CommonDialog;

Описание 1 – описание фильтра 1, этот текст появится в списке типов файлов в окне Save As Type;

Фильтр 1 – строка символов, определяющая расширение имени файла (*.txt – файлы с расширением txt; *.doc – файлы с расширением doc и т.д.).

Описание фильтров и фильтры разделяются символом |. Справа и слева от этого символа не должно быть пробелов.

Текстовые файлы бывают нескольких типов

Различают файлы трех типов:

  • файлы с последовательным доступом (текстовые);

  • файлы с произвольным доступом;

  • двоичные файлы.

Файлы с последовательным доступом состоят из записей переменной длины. Они могут читаться только с самого начала до конца. Запись нельзя прочитать из середины файла. Каждая запись является строкой текста, которая заканчивается специальными символами-разделителями.

Файлы с произвольным доступом обладают заданной структурой и состоят из записей. Каждая запись в файле имеет определенный размер и номер. Доступ к данным в файле с произвольным доступом осуществляется именно по номеру записи. Данные из файла такого типа читаются и записываются записями. Пользователь может создать файл с произвольным доступом своей собственной структуры.

Формат операторов и событий для различных типов файлов.

Таблица 15.4

Файлы с последовательным доступом

Файлы с произвольным доступом

Операторы

Open Имя_файла For Режим_доступа As #Номер_файла

Режимы доступа:

- Input (файл открывается для чтения из него информации; если файл отсутствует, возникает сообщение об ошибке);

- Output (файл открывается для записи; если файл отсутствует, возникает сообщение об ошибке; если файл уже существует, он удаляется с диска и создается заново);

Open Имя_файла [For Random] As #Номер_файла Len=Длина_записи

Имя_файла – имя открываемого файла. Если путь к файлу не указан, файл открывается в текущей папке.

For Random – режим доступа единственно возможный; не обязателен, т.к. этот параметр устанавливается по умолчанию.

Номер_файла – номер файла

Длина_записи – длина записи в байтах

- Append (файл открывается для записи в него информации; если файл уже существует, запись производится в конец файла; если файл не существовал на диске, то он создается)

В отличие от файла с последовательным доступом, здесь необходимо обязательно указывать длину записи. Если длина неизвестна, ее можно вычислить с помощью функции Len

Close [#Номер_файла][, #Номер_файла][,#Номер_файла

Оператор закрывает файлы, номера которых указаны в списке. Если номера файлов не указаны, закрываются все файлы, открытые в данный момент. Файлы необходимо закрывать сразу после того, как работа с ними закончена.

Line Input # Номер_файла, Имя_переменной

Оператор читает из файла строку текста и присваивает прочитанное значение переменной типа String. Признаком конца строки служит символ возврата каретки или комбинация символов возврата каретки и конца строки. Если файл создавался в программе Блокнот, символ возврата каретки формируется при нажатии на клавишу [Enter]. Если файл создавался с помощью программы Visual Basic, этот символ добавляется в файл операторами Write# или Print#.

В отличие от оператора Line Input # оператор Input # может читать не всю текстовую строку, а только ее часть – поле. Поля отделяются друг от друга запятой. Если текст поля заключен в кавычки, то они при чтении файла отбрасываются. Отбрасывается также запятая, разделяющая поля.

Put #Номер_файла, [Номер_записи] Переменная

Номер_файла – номер файла, аналогичный номеру в операторе Open

Номер_записи – целочисленное выражение, которое задает номер записи в файле. Если номер записи не указан, то по умолчанию принимается текущая позиция указателя записи. Переменная – переменная, указывающая источник записываемых данных

При использовании оператора Put #, необходимо иметь ввиду, что данные в записи с указанным в операторе номером будут заменены теми, которые записываются в файл. Новая запись с данными не создается. Для добавления записей в файл необходимо указывать номер записи, который на единицу больше номера последней записи. В этом случае запись будет добавлена в файл, а не заменена.

Для удаления данных существует два способа:

1) очистить соответствующие поля указанных записей,

т.е. записать в них пустые значения. Однако в этом

Окончание таблицы 15.4

Файлы с последовательным доступом

Файлы с произвольным доступом

Print #Номер_файла, [Список_вывода]

Список вывода – перечень строковых или числовых выражений, значения которых записываются в файл. Выражения в списке разделяются запятой, пробелами или точкой с запятой.

Этот оператор после каждого элемента списка вставляет в файл один пробел, если выражения в списке вывода разделены точкой с запятой, или несколько пробелов, если выражения разделены запятой.

После того, как записан последний элемент из списка вывода, в файл вставляется комбинация символов «конец строки» и «перевод каретки». Если список вывода опущен (запятая после номера файла при этом сохраняется), в файл вставляется пустая строка.

Файл, созданный с помощью оператора Print#, читается обычно оператором Line Input#

случае в файле остаются пустые записи, в связи с чем ресурсы (дисковое пространство) используются нерационально

2) передать данные в новый файл, пропуская пустые записи. В этом случае порядок действий таков:

  • создать новый файл с помощью оператор Open;

  • переписать все непустые записи в новый файл, используя оператор Put #;

  • закрыть исходный файл и удалить его при помощью оператора Kill (см. ниже);

  • переименовать новый файл, дав ему имя исходного файла с помощью оператора Name (см. ниже)

В результат получается тот же самый файл, но без пустых записей. При этом экономятся дисковое пространство и время поиска данных в файле

Функции

Write #Номер_файла, [Список_вывода]

Список вывода – перечень строковых или числовых выражений, значения которых записываются в файл. Выражения в списке разделяются запятой. Этот оператор после каждого элемента списка вставляет в файл запятую. Строка текста записывается в кавычках. После того, как записан последний элемент из списка вывода, в файл вставляется комбинация символов «конец строки» и «перевод каретки». Если список вывода опущен (запятая после номера файла при этом сохраняется), в файл вставляется пустая строка.

Файл, созданный с помощью оператора Write#, читается обычно оператором Input#.

Kill Имя_файла

Имя_файла – полное имя файла

Name Старое_имя_файла Новое_имя_файла

В качестве имен файлов указываются полные имена файлов

Get #Номер_файла, [Номер_записи] Переменная

Номер_файла – номер файла

Номер_записи – номер записи в файле. Если параметр Номер_записи не указан, считывается текущая запись

Переменная – переменная.

Для того, чтобы выяснить, прочитан ли файл до конца, используется функция EOF:

EOF (Номер_открытого_файла)

Номер_открытого_файла – единственный аргумент функции.

Функция возвращает значение True, если достигнут конец файла, и значение False, если конец файла не достигнут

Для вычисления номера последней записи нужно размер файла поделить на длину записи. Для вычисления размера (длины) файла (в байтах) используют функцию LOF:

LOF (Номер_открытого_файла)

Номер_открытого_файла – единственный аргумент функции.

Возвращаемое функцией значение имеет тип Long.