ЛАБОРАТОРНАЯ РАБОТА №15. Создание текстового редактора
Вопросы для контроля
1. Какой метод позволяет упорядочивать дочерние окна в приложении? Какие значения он имеет?
2. Укажите формат вызова общей процедуры. В каких случаях он используется?
3. Какой объект Visual Basic используется для создания панели инструментов? Укажите его значимые свойства.
Цель работы:рассмотреть типы существующих текстовых файлов; рассмотреть и изучить свойства компонентов, позволяющих пользователю работать с текстовыми файлами; научиться создавать приложения, которые позволяют пользователю работать с текстовыми файлами
Для работы с текстом в 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 (Открыть).
Описание 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.
Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет
studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав!Последнее добавление