Файлы в Visual Basic © Гайдаржи А.А. Типы
Файлы в Visual Basic © Гайдаржи А.А.
Типы текстовых файлов
Последовательный файл Последовательный файл структурно организован как последовательность элементов. Файл создается или пополняется, если в него что-то записывается. Каждая операция записи добавляет к файлу новую компоненту. Компоненты можно добавлять только к последней записи последовательного файла.
Файлы последовательного доступа
Файлы последовательного доступа
Базовые операции в работе с файлами запись данных в файл считывание данных из файла Оба этих действия проводятся в одной программной конструкции Open ... Close. ChanNum = FreeFile Open "Путь к файлу" For Тип действия As #ChanNum . Операторы . Close #ChanNum
Файлы последовательного доступа ChanNum – переменная, которой присваивается номер свободного канала обмена информацией. Если открыто несколько файлов, то каждый из них занимает канал с определенным номером. FreeFile – функция, которая находит свободный канал и присваивает его номер переменной ChanNum. Open – открывает указанный файл для работы. Путь к файлу – текст в кавычках или текстовая переменная, которая указывает с каким файлом следует работать. Тип действия – параметр, задающий тип действия проводимого над файлом (Считывание из файла, Запись и Дозапись в файл). Close – оператор, завершающий работу с файлом под номером ChanNum.
Запись информации в файл последовательного доступа Output Append Перезапись Записывает информацию в файл, удаляя предыдущие записи в нем. Дозапись Прибавляет информацию в конец содержимого файла.
Запись в файл осуществляется оператором Print Print #ChanNum, “Текст” [, {;} перем] где #ChanNum – номер канала (решетка и запятая обязательны); “Текст” – текст в кавычках; (, или ;) разделители. Если стоит: точка с запятой, то информация печатается в одну строку через пробел; запятая, то информация печатается в одну строку через табуляцию. Перем – цифровая переменная или математическое выражение. Вместо набора слова Print можно набирать знак ―?. Формат:
Задача 1 Программа, которая записывает текст из окна txtNewName в файл ―D:\STUDENT\test.dat. Записи в файле должны накапливаться. Private Sub Command1_Click() ChanNum = FreeFile Open "d:\student\test.dat" For Append As #ChanNum Print #ChanNum, txtNewName.Text Close #ChanNum End Sub Каталоги, указанные в пути к файлу и диск, обязательно должны быть, иначе программа выдаст ошибку ―Path not found(―Путь не найден).
Задача 2 Считывание файла с неизвестным количеством строк. Private Sub Command2_Click() ChanNum = FreeFile Open "D:\student\test.dat " For Input As #ChanNum Do While Not EOF(ChanNum) Input #ChanNum, tmpName txtNames.Text = txtNames.Text + tmpName + vbNewLine Loop Close #ChanNum End Sub В ходе программирования данного алгоритма нужно учитывать: 1. Файл, из которого предполагается считывание должен существовать. Если его нет, то программа выдаст сообщение ―File not found (“Файл не найден”). 2. Если алгоритм спрограммирован с ошибкой и в ходе его работы программа пытается считать информацию за пределами файла, то будет выдана ошибка ―Input past end if file(Считывание вышло за пределы файла).
Задача 3 Очистить файл, который расположен D:\STUDENT\test.dat. Private Sub Command3_Click() ChanNum = FreeFile Open "D:\studenttest.dat " For Output As #ChanNum Close #1 End Sub Если в данном алгоритме поменять Output на Append, то его можно будет использовать для проверки наличия файла – если файл есть, то программа просто откроет и закроет его, если его нет, то программа создаст файл.
Составить программу, которая позволяет выполнять следующие действия 1. Записать имя в файл. 2. Считать все имена из файла и вывести их в текстовое окно. 3. Очищать содержимое файла. Диалоговое окно должно иметь следующий вид.
Функция Shell Запуск другой программы Windows не выходя из проекта. y = Shell ("C:\WINDOWS\Notepad.exe") y = Shell ("C:\WINDOWS\Notepad.exe C:\Untitled.txt") Блокнот откроется с загруженным файлом C:\Untitled.txt.
Функция Shell Управление видом окна: y = Shell ("C:\WINDOWS\Notepad.exe C:\Untitled.txt", vbMaximizedFocus) другие константы: vbHide, vbNormalFocus, vbMinimizedFocus, vbNormalNoFocus, vbMinimizedNoFocus.
Файл произвольного доступа Организация файлов с прямым доступом позволяет непосредственно прочитать компоненту n, минуя n - 1 предыдущие компоненты.
Файлы произвольного доступа Файл с произвольным доступом обладает заранее заданной структурой и состоит из записей. Каждая запись в файле — это некоторая порция данных, которая имеет строго определенный размер и свой конкретный номер в файле. Доступ к данным в файле произвольного доступа осуществляется именно по номеру записи. Данные из файла такого типа читаются и записываются записями. Примерами файла произвольного доступа являются базы данных, всегда имеющие строго определенную структуру.
Файлы произвольного доступа Рассматриваемая структура данных часто называется записью - Record, компоненты этой структуры - полями записи - Fields. Если запись состоит из К - полей, то каждое поле записи будет иметь порядковый номер от 1 до К. Запись, как и база данных, содержит множество наборов единообразных записей, т. е. записей, состоящих из одинакового количества полей, и i-e поля всех записей имеют одинаковый тип и размер. Набор записей можно представить в виде строк таблицы, у которой n столбцов, а i-й столбец таблицы соответствует i-y полю любой записи.
Файлы произвольного доступа Пользовательский тип данных Пользователь может объявить собственный тип данных - пользовательский, который представляет логически объединенный набор данных, состоящий из нескольких переменных стандартного типа, выступающих под одним именем. Объявить эти данные можно следующим образом: <Имя типа данных> - имя, которое присваивается определяемому типу данных. <элемент 1> ... <элемент N> - название полей записи, для которой создается пользовательский тип данных. <Тип элемента 1> . . . <тип элемента N> - стандартные типы данных, причем данные типа String должны иметь фиксированную длину. Private / Public Type <имя типа данных> Локальная / Глобальная <элемент 1> As <тип элемента 1> . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . <элемент N> As <тип элемента N> End Type Type Mens Name As String*15 'имя' Famile As String*20 'фамилия' DateR As Date ' дата рождения' Prim As String*30 'примечание‘ End Type
Файлы произвольного доступа При открытии файлов произвольного доступа возможен только один режим доступа — Random. Произвольный доступ реализуется посредством оператора Open. Open FileName For Random [Access] [Lock] As [#]FileHandle [Len=RecLength]
Виды доступа при произвольном доступе
Параметр 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 <НовоеИмя> СтароеИмя и Новое Имя — строки, определяющие маршрут к файлу со старым именем и маршрут к этому же файлу с новым именем; Оператор копирования файла: FileCopy <ИмяИсходногоФайла>, <ИмяФайлаКопии> ИмяИсходногоФайла и ИмяФайлаКопии — строки, определяющие маршрут к файлу-оригиналу и маршрут к создаваемой копии оригинала; Оператор уничтожения файла: Kill <ИмяУничтожаемогоФайла>
20176-+fayly_v_visual_basic.ppt
- Количество слайдов: 27

