Програмирование на Visual Basic
Информация - Компьютеры, программирование
Другие материалы по предмету Компьютеры, программирование
итно.
Если выражения разделяются “,”, то в файл они записываются в фиксированные зоны длиной 14 символов (зонный формат).
Если в конце выражения не стоит “;” или “,”, то выведенная в файл строка дополняется символами , обозначающими переход на другую строку (line feed, ASCII-код равен 10). Т.о. каждому значению соответствует одна запись или одна строка при выводе в формате дисплея.
Spc(n) и ТаЬ(п) определяют соответственно вставку п пробелов между выводимыми выражениями и табуляцию на п колонок перед списком выражений.
Для удаления с дискового пространства неиспользуемого файла используется оператор
Kill имя_файла где Kill ключевое слово.
В заключение следует отметить, что данные любого типа (Boolean, Data, Integer, Single, Double, Currency) записываются в файл в символьной форме. При выводе данные преобразуются к символьной форме, при вводе происходит их преобразование к первоначальному типу, па что затрачиваются ресурсы компьютера. Кроме того. представление данных в символьной форме неэффективно. Например, число 421596 типа Single -занимает в памяти компьютера 4 банта, но при записи в последовательны” файл - 7 байт: 1 байт па каждый символ.
Для того чтобы считать требуемую запись в последовательном файле необходимо последовательно пройти все предыдущие записи; чтобы изменить одну запись в файле, необходимо переписать весь файл заново. От этих недостатков свободны файлы прямого доступа.
Пример программы.
В первой части процедуры обработки события щелчка мыши по форме в файл TE5TFILE выводятся строки символов с использованием оператора Print# (вывод в формате дисплея). Во второй части процедуры записи этого файла читаются и выводятся в окно вывода в том виде, как они записаны в файле.
Текст процедуры:
Пример программы.
Программа осуществляет преобразование текстового файла последовательною доступа распаковкой его строк таким образом, чтобы каждая цепочка символов “*п”, где п однозначное целое число (число пробелов), заменялась указанным числом пробелов.
Ввод исходных данных и управление работой программы осуществляется на форме на рис. 3.24.
На форме располагаются:
- командная кнопка “Ввод” (имя Command 1), щелчок мыши по которой активизирует окно ввода (имя Textl). Вводимая информация записывается в файл последовательного доступа:
- командная кнопка “Вывод” (имя Commands), щелчок мыши по которой обеспечивает вывод записей файла в многострочном текстовом окне (имя Text2):
- командная кнопка “Преобразование” (имя Command2), щелчок мыши по которой обеспечивает чтение записей файла, их преобразование в соответствии с заданием и запись новых записей в другой файл:
- командная кнопка “Вывод” (имя Command4). щелчок мыши по которой обеспечивает вывод записей повою файла в многострочном текстовом окне (имя Textl);
- щелчок мыши по кнопке “Конец” прекращает выполнение программы.
Тексты процедур обработки событий:
Private Sub Coriurtandl_Click ()
Text3.SetFocus Open “Filel” For Output As #5
Text3.Text = “” End Sub
Private Sub Command2_Click() Dim Filedata, Filedatal As String Dim NPoz, NProbel As Integer Close #5
Open “Filel” For Input As tt5 Open “File2” For Out-put As #6 Do While Not EOF(5) Line Input #5, Filedata Filedatal = “” 1=1 Do While InStrfI, Filedata, “*”) > 0
NPoz = InStr(I, Filedata, “*”) Filedatal = Filedatal + Mid$(Filedata, 1, NPoz - I) NProbel = Val (Mid$ (Filedata, NPoz +1, 1);
Fiiedatal = Filedatal + String$(NProbel, “ I .= NPoz + 2 Loop
Filedatal = Filedatal +Mid$(Filedata, I) Write #6, Filedatal Loop
Close #5 Close ft6 End Sub
Private Sub Command3_Click() Dim Filedata As String Close #5
Text2.Text = “”
Open “Filel” For Input As ft5 Do While Not EOF(5)
Line Input #5, Filedata
Text2.Text = Text2.Text + Filedata :hr$ (13) + Chr$(10)
Loop End Sub
Private Sub Command4 Click() Dim Filedata As String Open “File2” For Input As #6 Do While Not EOF(6) Line Input tt6, Filedata
Textl.Text = Textl.Text + Filedata + Chr$(13) ^ Chr$(10)
Loop Close #6 End Sub
Private Sub Command5_Click()
Kill “Filel”
Kill “File2”
End End Sub
Private Sub Text3_KeyPress(keyAscii As Integer) Dim Filedata As String If keyAscii = 13 Then Filedata = Text3.Text
Write tt5, Filedata Text3.Text = “”
Описание используемых стандартных (функции для обработки строк
Stiing$(niimbei, chaiactci) возвращает проку одинаковых символов (chaiaciei) заданной длины (niimbel)
Mid$(stung, start|. length|) возвращает строку с заданным количеством символов (length) из cirokh (stung), начиная с заданной позиции (start) el in start больше количесгва символов в строке - возвращаечся прока нулевой длины Если отсутствуег параметр length, то воз праща клея симво1ы от заданной позиции до конца строки Если slung равно Null - возвращается Null
lnSti(|stait. |stiingl. stiing2) возвращает первую позицию, с которой одна строка (stiing2) вхолиг в другую (stimgl), как подстрока Start арифмешческое выражение, значение которого задае! начальную позицию поиска в slungi (если параметр stait не задан, ю поиск иде1 с первой позиции)
Возвращаемое значение если stiingi имеет нулевую длину О если string! равно Null - Null если stiing2 имеет нулевую длину start если stiing2 равно Null Null если string2 не найдено О если start > длины stimgl О
3.7.2. Файлы прямого доступа
Для получения доступа к файлу для операции ввода-вывода используется оператор открыгия файла, синтаксис которого следующий
Open имя_фаша [For Random] [Access {Read] Write I Read
Write}]
[{Shared | Lock Read | Lock Read Write}] As [#] номер файла [Len =
длина записи}
где Foi Random, Access. Read, Wiite, Read Wiite, Shaied, Lock Read, Lock Wiite, Lock Read Wiite, Len - ключевые слова.
For Random определяет прямои доступ и принимается по умолчанию
Access определяет допустимые операции с файлом (Read чтение фаипа (ввод). Write - вывод в файл. Read Write допускается ввод и вывод)
Shared, Lock Read, Lock Write, Lock Read Write опре?/p>