vb. (694737), страница 19

Файл №694737 vb. (Програмирование на Visual Basic) 19 страницаvb. (694737) страница 192016-07-31СтудИзба
Просмтор этого файла доступен только зарегистрированным пользователям. Но у нас супер быстрая регистрация: достаточно только электронной почты!

Текст из файла (страница 19)

'процедуре обработки строки LineRead 'аргументом которой является переменная StrokaVvoda Loop

Close #5 'закрытие файла

Для вывода информации в последовательный файл используется оператор

{Print* Write} ”номер_файла,[[{8рс(ч) |Tab(n)}]

[ выражение}[{,\;}}} где Print, Write — ключевые слова.

Print# — обеспечивает вывод в последовательный файл в формате дисплея (т.е. аналогично выводу на печать, например, на форме).

выражение - выражение, значение которого записывается в файл.

Если выражения разделяются “;”, то в файл они записываются без пробелов слитно.

Если выражения разделяются “,”, то в файл они записываются в фиксированные зоны длиной 14 символов (зонный формат).

Если в конце выражения не стоит “;” или “,”, то выведенная в файл строка дополняется символами , обозначающими переход к началу строки (carriage return, ASCII-код равен 13), и , обозначающими переход на другую строку (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 определяют допустимые операции над фаилом для друшх пользователей сеги (только для сетевых приложении)

имя_фа1иа имя файла (символьная константа или переменная) или путь

Номер файла - целочисленное выражение, значение которого должно лежать между 1 и 255 Другие операторы ввода-вывода используют номер открытого файла

Len определяет длину записи в байтах (по умолчанию длина записи устанавливается в 128 бант)

Длина записи определяется информацией, хранимой в файле, и задается целочисленным выражением и должна быть меньше 32767 байт (см ниже) Все записи одного файла прямого доступа имеют одинаковую длину (записи одного файла последовательного доступа Moiyr иметь разные длины)

Несушес1вующии файл создается при выполнении оператора Open Примеры:

Open “TESTFILE” For Random As#l Len=Len (Cl ien CWame) 'открывается файл “TESTFILE” прямого 'доступа с номером 1, длина записи

'определяется с помощью встроенной 'функции Len (определение длины строки)

Open “MYFILE.TXT” For Random As #5 Len = 256

Для файлов прямого доступа можно открыть файл с другим номером, не закрывая файл

Файл прямого доступа закрывается оператором

Close #номер файла где номер фалла - указанный при открытии номер

Для ввода и вывода в файлах прямого доступа используются соответственно операторы

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

Put #номер файла, [номер записи], имя_переменной где Get, Put - ключевые слова (Get — ввод. Put — вывод).

номер записи - арифметическое выражение, значение которого должно лежать в диапазоне от 1 до 2247483647, и которое определяет номер читаемой записи при вводе и номер записи, в которую выводится переменная

Если номер записи отсутствует, то ввод — вывод начинается со следующей от текущеи записи (используемый номер в последнем из предыдущих операторов Get и Put) Обратите внимание, что запятые должны присутствовать при отсутствии номера записи (Get #4„FileBufTer)

Имя^переменной имя любой переменной, кроме имени массива (отдельный элемент массива может быть) и имени объекта, значение которой записывается в файл при выводе и значение которой считывается из файла при вводе

Примеры

Put #3, 4, Massiv(5)'выводится значение 5-го 'элемента массива Massiv в 4-ю запись J-го файла.

Get #fileNum, I, RecVar 'ич 1-й -записи файла с 'номером liieNun’ считывается 'значение переменной RecVar.

Пример программы.

Создадим форму с двумя командными кнопками и две процедуры обработки событии “Click” для каждой кнопки По щелчку кнопки “Ввод” выводится окно для последовательного ввода пяти символьных строк и их записи в фаил прямого доступа (рис 3 26) По щелчку кнопки “Вывод” выводится окно для ввода номера требуемои записи фаила и запись, соответствующая введенному номеру, выводится в окне вывода (рис 3 27)

Текст процедур обработки событии'

Private Sub Commandl_C-Lick ()

i^im PEREMLN Ач String * 15

Open “Prirrb^le” For Random As 5 Len - 15

For I - 1 ^r b PEREMEN = InputBox(“Введите запись” + Str(I))

Put #1-, T, PEPEMEN

Next r

Close ^ End Sub

Private Sub Commcind2 Click ()

Dim PEREMEN As String * 15

Open “Primflie” For Random As 5 Len = 15 К = InputBox(“Введите номер записи для вывода”)

Get #5, К, PEREMEN

MsgBox Str(K) +' “-ая запись” + “ “ + PEREMEN

Close #5

Kill “PrimFile” End Sub

Еще одним преимуществом файлов прямого доступа является возможность использования индексов записеи Если для реорганизации фаила последовательного доступа (добавление, удаление, перестановка записей) необходимо сначала его прочитать, затем реорганизовать данные, а потом переписать фаил на диск в соответствии с новой реорганизациеи, то используя индекс, можно реорганизовывать индекс без реорганизации самого фаила Это значительно увеличивает скорость обработки больших объемов информации

Чтобы создать индекс, вначале создается массив целых чисел, в котором каждый элемент содержит один (свой) номер записи фаила прямого доступа Этот массив используется для определения номера записи, к которой нужно обратиться Такая

организация хранения записи файла называется индексированием записи. Записи одного файла могут иметь несколько разных индексов для организации различных алгоритмов работы с одним и тем же файлом.

Для массива индексов Index () оператор ввода для связанного с этим индексом файла имеет вид

Get ftFiieNiim. Imlex(l), RecVar

Первоначально каждый элемент массива Index () содержит свой собственный номер:

Index (1) = 1

Index (2) = 2 “.', Index (3) = 3

Результат использования такого массива для доступа к записям файла идентичен прямому доступу к этому файлу. Для того чтобы переставить местами, например, вторую и третью запись, вместо реальной перестановки записей достаточно изменить значения индексов следующим образом:

Index (I) = 1

Index (2) = 3

Index (3) = 2

Пример программы.

Добавим к предыдущей программе процедуру обработки события щелчка мыши по форме.

Private Sub Form_C]-ick ( )

Характеристики

Тип файла
Документ
Размер
1,22 Mb
Тип материала
Учебное заведение
Неизвестно

Список файлов реферата

Свежие статьи
Популярно сейчас
Зачем заказывать выполнение своего задания, если оно уже было выполнено много много раз? Его можно просто купить или даже скачать бесплатно на СтудИзбе. Найдите нужный учебный материал у нас!
Ответы на популярные вопросы
Да! Наши авторы собирают и выкладывают те работы, которые сдаются в Вашем учебном заведении ежегодно и уже проверены преподавателями.
Да! У нас любой человек может выложить любую учебную работу и зарабатывать на её продажах! Но каждый учебный материал публикуется только после тщательной проверки администрацией.
Вернём деньги! А если быть более точными, то автору даётся немного времени на исправление, а если не исправит или выйдет время, то вернём деньги в полном объёме!
Да! На равне с готовыми студенческими работами у нас продаются услуги. Цены на услуги видны сразу, то есть Вам нужно только указать параметры и сразу можно оплачивать.
Отзывы студентов
Ставлю 10/10
Все нравится, очень удобный сайт, помогает в учебе. Кроме этого, можно заработать самому, выставляя готовые учебные материалы на продажу здесь. Рейтинги и отзывы на преподавателей очень помогают сориентироваться в начале нового семестра. Спасибо за такую функцию. Ставлю максимальную оценку.
Лучшая платформа для успешной сдачи сессии
Познакомился со СтудИзбой благодаря своему другу, очень нравится интерфейс, количество доступных файлов, цена, в общем, все прекрасно. Даже сам продаю какие-то свои работы.
Студизба ван лав ❤
Очень офигенный сайт для студентов. Много полезных учебных материалов. Пользуюсь студизбой с октября 2021 года. Серьёзных нареканий нет. Хотелось бы, что бы ввели подписочную модель и сделали материалы дешевле 300 рублей в рамках подписки бесплатными.
Отличный сайт
Лично меня всё устраивает - и покупка, и продажа; и цены, и возможность предпросмотра куска файла, и обилие бесплатных файлов (в подборках по авторам, читай, ВУЗам и факультетам). Есть определённые баги, но всё решаемо, да и администраторы реагируют в течение суток.
Маленький отзыв о большом помощнике!
Студизба спасает в те моменты, когда сроки горят, а работ накопилось достаточно. Довольно удобный сайт с простой навигацией и огромным количеством материалов.
Студ. Изба как крупнейший сборник работ для студентов
Тут дофига бывает всего полезного. Печально, что бывают предметы по которым даже одного бесплатного решения нет, но это скорее вопрос к студентам. В остальном всё здорово.
Спасательный островок
Если уже не успеваешь разобраться или застрял на каком-то задание поможет тебе быстро и недорого решить твою проблему.
Всё и так отлично
Всё очень удобно. Особенно круто, что есть система бонусов и можно выводить остатки денег. Очень много качественных бесплатных файлов.
Отзыв о системе "Студизба"
Отличная платформа для распространения работ, востребованных студентами. Хорошо налаженная и качественная работа сайта, огромная база заданий и аудитория.
Отличный помощник
Отличный сайт с кучей полезных файлов, позволяющий найти много методичек / учебников / отзывов о вузах и преподователях.
Отлично помогает студентам в любой момент для решения трудных и незамедлительных задач
Хотелось бы больше конкретной информации о преподавателях. А так в принципе хороший сайт, всегда им пользуюсь и ни разу не было желания прекратить. Хороший сайт для помощи студентам, удобный и приятный интерфейс. Из недостатков можно выделить только отсутствия небольшого количества файлов.
Спасибо за шикарный сайт
Великолепный сайт на котором студент за не большие деньги может найти помощь с дз, проектами курсовыми, лабораторными, а также узнать отзывы на преподавателей и бесплатно скачать пособия.
Популярные преподаватели
Добавляйте материалы
и зарабатывайте!
Продажи идут автоматически
6353
Авторов
на СтудИзбе
311
Средний доход
с одного платного файла
Обучение Подробнее