+Файлы в Visual Basic.ppt
- Количество слайдов: 27
Файлы в Visual Basic © Гайдаржи А. А.
Типы текстовых файлов Файл Описание Последовательного Файл – последовательность строк доступа произвольной длины, разделенных специальными символами. Чтение и запись в файл производится построчно. Произвольного Файл – записи фиксированной длины. доступа Размер записи указывается при его открытии. Это позволяет локализовать любую запись в файле по ее номеру. Бинарный Файл – частный случай файла произвольного доступа. Размер записи в бинарном файле считается равным 1 байту.
Последовательный файл • Последовательный файл структурно организован как последовательность элементов. • Файл создается или пополняется, если в него что-то записывается. • Каждая операция записи добавляет к файлу новую компоненту. – Компоненты можно добавлять только к последней записи последовательного файла.
Файлы последовательного доступа Выполняемое действие Функции, Действия операторы Открыть или Open создать файл Закрыть файл Close Reset Определение Format параметров Spc(n) вывода данных Tab(n) Width # Скопировать File. Copy файл Получить EOF информацию о File. Attr файле Date. Time File. Len Get. Attr Loc LOF Открывает файл Закрывает все открытые файлы, записывает содержимое буферов Вставка n пробелов в файл; Устанавливает курсор в столбец номером n. Копирует файл Определяет метку конца файла Возвращает режим доступа открытого файла Возвращает дату и время создания файла Возвращает размер файла в байтах Получает атрибуты файла Возвращает номер текущей позиции в файле Возвращает размер открытого файла в байтах
Файлы последовательного доступа Выполняемое Функции, Действия действие операторы Организовать Dir управление Kill файлами Lock Unlock Name Прочитать Input # данные из Get # файла Line Input # Установить Set. Attr атрибуты файла Найти позиции Seek в файле Записать Print # данные в файл Put # Write # Возвращает содержимое текущей директории Удаляет файл Блокирует файл при работе в многопольз. среде Снимает блокировку с файла Задает (переименовывает) имя файла Чтение данных из файла Чтение строки из файла Устанавливает атрибуты файла Устанавливает указатель на заданную номером позицию Записывает данные в файл
Базовые операции в работе с файлами • запись данных в файл • считывание данных из файла Оба этих действия проводятся в одной программной конструкции Open. . . Close. Chan. Num = Free. File Open "Путь к файлу" For Тип действия As #Chan. Num. Операторы. Close #Chan. Num
Файлы последовательного доступа • Chan. Num – переменная, которой присваивается номер свободного канала обмена информацией. • Если открыто несколько файлов, то каждый из них занимает канал с определенным номером. • Free. File – функция, которая находит свободный канал и присваивает его номер переменной Chan. Num. • Open – открывает указанный файл для работы. Путь к файлу – текст в кавычках или текстовая переменная, которая указывает с каким файлом следует работать. • Тип действия – параметр, задающий тип действия проводимого над файлом (Считывание из файла, Запись и Дозапись в файл). • Close – оператор, завершающий работу с файлом под номером Chan. Num.
Запись информации в файл последовательного доступа Output Перезапись Записывает информацию в файл, удаляя предыдущие записи в нем. Append Дозапись Прибавляет информацию в конец содержимого файла.
Запись в файл осуществляется оператором Print Формат: Print #Chan. Num, “Текст” [, {; } перем] • где • #Chan. Num – номер канала (решетка и запятая обязательны); • “Текст” – текст в кавычках; (, или ; ) разделители. Если стоит: точка с запятой, то информация печатается в одну запятой строку через пробел; запятая, то информация печатается в одну строку запятая через табуляцию. • Перем – цифровая переменная или математическое выражение. • Вместо набора слова Print можно набирать знак ―? .
Задача 1 • Программа, которая записывает текст из окна txt. New. Name в файл ―D: STUDENTtest. dat. Записи в файле должны накапливаться. Private Sub Command 1_Click() Chan. Num = Free. File Open "d: studenttest. dat" For Append As #Chan. Num Print #Chan. Num, txt. New. Name. Text Close #Chan. Num End Sub Каталоги, указанные в пути к файлу и диск, обязательно должны быть, иначе программа выдаст ошибку ―Path not found(―Путь не найден).
Задача 2 • Считывание файла с неизвестным количеством строк. Private Sub Command 2_Click() Chan. Num = Free. File Open "D: studenttest. dat " For Input As #Chan. Num Do While Not EOF(Chan. Num) Input #Chan. Num, tmp. Name txt. Names. Text = txt. Names. Text + tmp. Name + vb. New. Line Loop Close #Chan. Num End Sub В ходе программирования данного алгоритма нужно учитывать: 1. Файл, из которого предполагается считывание должен существовать. Если его нет, то программа выдаст сообщение ―File not found (“Файл не найден”). 2. Если алгоритм спрограммирован с ошибкой и в ходе его работы программа пытается считать информацию за пределами файла, то будет выдана ошибка ―Input past end if file(Считывание вышло за пределы файла).
Задача 3 • Очистить файл, который расположен D: STUDENTtest. dat. Private Sub Command 3_Click() Chan. Num = Free. File Open "D: studenttest. dat " For Output As #Chan. Num Close #1 End Sub Если в данном алгоритме поменять Output на Append, то его можно будет использовать для проверки наличия файла – если файл есть, то программа просто откроет и закроет его, если его нет, то программа создаст файл.
Составить программу, которая позволяет выполнять следующие действия 1. Записать имя в файл. 2. Считать все имена из файла и вывести их в текстовое окно. 3. Очищать содержимое файла. Диалоговое окно должно иметь следующий вид.
Функция Shell • Запуск другой программы Windows не выходя из проекта. • y = Shell ("C: WINDOWSNotepad. exe") • y = Shell ("C: WINDOWSNotepad. exe C: Untitled. txt") • Блокнот откроется с загруженным файлом C: Untitled. txt.
Функция Shell • Управление видом окна: • y = Shell ("C: WINDOWSNotepad. exe C: Untitled. txt", vb. Maximized. Focus) – другие константы: • vb. Hide, vb. Normal. Focus, • vb. Minimized. Focus, vb. Normal. No. Focus, • vb. Minimized. No. Focus.
Файл произвольного доступа • Организация файлов с прямым доступом позволяет непосредственно прочитать компоненту n, минуя n - 1 предыдущие компоненты.
Файлы произвольного доступа • Файл с произвольным доступом обладает заранее заданной структурой и состоит из записей. • Каждая запись в файле — это некоторая порция данных, которая имеет строго определенный размер и свой конкретный номер в файле. • Доступ к данным в файле произвольного доступа осуществляется именно по номеру записи. • Данные из файла такого типа читаются и записываются записями. • Примерами файла произвольного доступа являются базы данных, всегда имеющие строго определенную структуру.
Файлы произвольного доступа • Рассматриваемая структура данных часто называется записью - Record, компоненты этой структуры - полями записи - Fields. Если запись состоит из К - полей, то каждое поле записи будет иметь порядковый номер от 1 до К. Запись, как и база данных, содержит множество наборов единообразных записей, т. е. записей, состоящих из одинакового количества полей, и i-e поля всех записей имеют одинаковый тип и размер. • Набор записей можно представить в виде строк таблицы, у которой n столбцов, а i-й столбец таблицы соответствует i-y полю любой записи.
Файлы произвольного доступа Пользовательский тип данных • Пользователь может объявить собственный тип данных пользовательский, который представляет логически объединенный набор данных, состоящий из нескольких переменных стандартного типа, выступающих под одним именем. Объявить эти данные можно следующим образом: Private / Public Type <имя типа данных> Локальная / Глобальная <элемент 1> As <тип элемента 1> . . <элемент N> As <тип элемента N> End Type Mens Name As String*15 'имя' Famile As String*20 'фамилия' Date. R As Date ' дата рождения' Prim As String*30 'примечание‘ End Type <Имя типа данных> - имя, которое присваивается определяемому типу данных. <элемент 1>. . . <элемент N> - название полей записи, для которой создается пользовательский тип данных. <Тип элемента 1>. . . <тип элемента N> - стандартные типы данных, причем данные типа String должны иметь фиксированную длину.
Файлы произвольного доступа • При открытии файлов произвольного доступа возможен только один режим доступа — Random. • Произвольный доступ реализуется посредством оператора Open File. Name For Random [Access] [Lock] As [#]File. Handle [Len=Rec. Length]
Виды доступа при произвольном доступе Ключевое слово Описание Без указания Open "DATE. DAT" For Random As int. FH Чтение (Read) Open "DATE. DAT" For Random Access Read As int. FH Запись (Write) Open "DATE. DAT" For Random Access Write As int. FH Чтение и запись Open "DATE. DAT" For Random Access Read (Read Write) Write As int. FH
Параметр Lock Для обеспечения целостности данных при коллективном использовании. Определяет права доступа к открытому файлу. Этот параметр может принимать следующие значения: • Shared – файл может использоваться всеми процессами для считывания и записи. • Lock Read – никакой другой процесс не может считывать данные из файла. Данный параметр можно установить, если в данный момент никакой другой процесс не выполняет операцию чтения. • Lock Write – никакой другой процесс не может записывать данные в файл. Данный параметр можно установить, если в данный момент никакой другой процесс не выполняет операцию записи. • Lock Read Write – никакой другой процесс не может считывать или записывать. Данный параметр можно установить, если в данный момент не выполняются операции чтения или записи.
Параметр Len • Параметр Len задает длину одной записи. Для задания длины можно использовать функцию Len: Open "ADDRESS. DAT" For Random Access Write As 1 Len = 27 Open "ADDRESS. DAT" For Random Access Write As 1 Len = Len(Varname)
Открытие файлов произвольного доступа Open <Имя. Файла> For Random As #<Дескриптор-Файла> _Len = <Длина. Записи> • Длина. Записи — целое число. Оно должно быть равно длине переменной пользовательского типа, которая применяется для хранения одной записи файла.
Для включения в файл новой записи Put # <Дескриптор. Файла>, <Номер. Записи>, <Имя. Переменной> • Номер. Записи — это номер (целое положительное число), который будет иметь запись, помещаемая в файл. • Имя. Переменной — это имя переменной пользовательского типа, значением которой является запись, помещаемая в файл.
Для извлечения записи из файла произвольного доступа • Get # <Дескриптор. Файла>, <Номер. Записи>, <Имя. Переменной> • Номер. Записи — это номер извлекаемой из файла записи. • Имя. Переменной — это имя переменной пользовательского типа, значением которой является запись, извлекаемая из файла.
Операторы для работы с текстовыми файлами Оператор переименования файла: • Name <Старое. Имя> As <Новое. Имя> • Старое. Имя и Новое Имя — строки, определяющие маршрут к файлу со старым именем и маршрут к этому же файлу с новым именем; Оператор копирования файла: • File. Copy <Имя. Исходного. Файла>, <Имя. Файла. Копии> • Имя. Исходного. Файла и Имя. Файла. Копии — строки, определяющие маршрут к файлу-оригиналу и маршрут к создаваемой копии оригинала; Оператор уничтожения файла: • Kill <Имя. Уничтожаемого. Файла>
+Файлы в Visual Basic.ppt