Заглавная страница Избранные статьи Случайная статья Познавательные статьи Новые добавления Обратная связь FAQ Написать работу КАТЕГОРИИ: АрхеологияБиология Генетика География Информатика История Логика Маркетинг Математика Менеджмент Механика Педагогика Религия Социология Технологии Физика Философия Финансы Химия Экология ТОП 10 на сайте Приготовление дезинфицирующих растворов различной концентрацииТехника нижней прямой подачи мяча. Франко-прусская война (причины и последствия) Организация работы процедурного кабинета Смысловое и механическое запоминание, их место и роль в усвоении знаний Коммуникативные барьеры и пути их преодоления Обработка изделий медицинского назначения многократного применения Образцы текста публицистического стиля Четыре типа изменения баланса Задачи с ответами для Всероссийской олимпиады по праву Мы поможем в написании ваших работ! ЗНАЕТЕ ЛИ ВЫ?
Влияние общества на человека
Приготовление дезинфицирующих растворов различной концентрации Практические работы по географии для 6 класса Организация работы процедурного кабинета Изменения в неживой природе осенью Уборка процедурного кабинета Сольфеджио. Все правила по сольфеджио Балочные системы. Определение реакций опор и моментов защемления |
Использование в качестве аргументов процедур и функции форм и элементов управленияСодержание книги
Поиск на нашем сайте
Список аргументов процедур и функций может включать имена форм и элементов управления (в качестве описателей типа для них применяются соответственно Form и Control). Это позволяет создавать универсальные алгоритмы для работы с формами и управляющими элементами. Например, для привлечения внимания пользователя к одной из управляющих кнопок формы можно создать одну универсальную процедуру, изменяющую шрифт и цвет фона, Для контроля соответствия передаваемых при обращении типов форм и элементов управления в Visual Basic есть специальный оператор If TypeOf имя объекта Is тип объекта Then где TypeOf и Is — ключевые слова, а последующий синтаксис и действие совпадают с рассмотренным выше условным оператором. Чтобы проверить соответствие передаваемого в процедуру объекта, в ее текст можно включить оператор Sub Attention (Btn As Control) If TypeOf Btn Is OptionButton Then Btn.Fontltaiic = True Btn.BackColor = Red End If End Sub Пример программы. Создадим процедуру для изменения свойств формы, аргументом которой является имя формы, и процедуры обработки событий Click для задания исходных свойств формы и KeyPress, в которой имеется обращение к процедуре Change При запуске программы появляется исходная форма. Щелчок мыши по форме изменяет ее размер, положение и выводит начальную часть текста (задается в процедуре обработки события Click). . Нажатие клавиши Enter приводит к изменению размера, положения формы и вывод заключительной части текста (обращение в процедуре обработки события KeyPress к процедуре Change). ФАЙЛОВЫЙ ВВОД-ВЫВОД Архитектура современных компьютеров предусматривает наличие оперативной и внешней памяти. В оперативной памяти находятся выполняемая в данный момент программа и обрабатываемые ею данные. После выполнения программы ее данные в оперативной памяти не сохраняются, так как используемые ячейки памяти выделяются для данных другой программы. Технически и программно обусловленные ограниченность объема оперативной памяти и ее относительно высокая стоимость не позволяют применять ее для постоянного хранения больших объемов информации. Для этого используется внешняя память (магнитные ленты, жесткие и гибкие магнитные диски, лазерные диски), позволяющие хранить сотни мегабайт (1 Мбайт = 1048576 байт) и гигабайт (1 Гбаит = 1.073.741.824 байт) информации и стоимость которых относительно невелика. Хранение больших объемов информации на внешних носителях с учетом того, что время доступа к данным на внешних носителях на один, два порядка ниже времени доступа к данным в оперативной памяти, требует их хорошо продуманной организации. А возможность альтернативного хранения одних и тех же данных на различных внешних носителях требует использования единых принципов организации данных. Таким универсальным понятием является файл (набор данных), который используется для работы с внешними данными на любом носителе. Под файлом понимается совокупность данных. Файл состоит из записей. Запись состоит из логически связанных данных, которые передаются между оперативной и внешней памятью за одну операцию ввода-вывода (ввод — передача данных из внешней в оперативную память, вывод - передача данных из оперативной во внешнюю память). Например, в качестве файла можно рассматривать и используемую ранее колоду перфокарт. Одна карта является одной записью (устройство ввода перфокарт считывает последовательно по одной карте и нельзя считать меньше, чем одну карту). Запись характеризуется длиной (рассмотренная перфокарта является записью фиксированной длины в SO байтов и на ней можно было разместить 80 символов). Записи бывают фиксированной или переменной длины. По способу доступа к записям файлы подразделяются на файлы последовательного и прямого доступа. При последовательном доступе для доступа к какой-либо записи должны быть пройдены все предыдущие записи, при прямом можно напрямую перейти к нужной записи. Все внешние устройства позволяют использовать последовательный доступ к записям файла. Прямой доступ позволяют использовать только устройства прямого доступа (например, магнитные и оптические диски). В Visual Basic файлы подразделяются на: · последовательные (sequential), записи которых могут быть переменной длины;
Последовательные файлы Файлы прямого доступа Каждая запись последовательного файла представляет собой строку символов, в конце которой содержится символ <CR>, обозначающий переход к началу строки (carriage return, ASCII-код равен 13), и <LF>, обозначающий переход на другую строку (line feed, ASCII-код равен 10). Последовательное действие этих двух символов обеспечивает переход к новой записи. После последней записи записывается признак конца файла (end of file), который может проверяться встроенной функцией EOF (возвращает значение True. если обнаружен конец файла, и False, в противном случае). Для получения доступа к файлу для операции ввода-вывода используется оператор открытия файла, синтаксис которого следующий Open имя_файла For {Append Input | Output} As #номер_фаила fLen = размер буфера памяти} где Open, For. Append. Input. Output, As — ключевые слова. Input — файл открывается для ввода. Output — файл открывается для вывода. Append — устанавливает считывающе-записывающее устройство на конец файла и выводимая информация записывается в файл после существующих записей (при значении параметра Output выводимая информация записывается с начала файла, т.е. происходит перезапись файла, если в нем существовали записи). Имя_файла — имя файла (символьная константа или переменная) или путь. Имя файла в DOS и Windows 3.1 состоит из не более чем восьми буквенных (латинских) или цифровых символов (первый символ буква), за которым может следовать расширение, определяющее тип файла (VBPART3.DOC, Project. MAC). В Windows 95 допускаются длинные имена файлов до 255 символов, включая специальные символы (в русской версии для записи имени файла можно использовать русские буквы) Путь определяет местонахождение файла в иерархической системе каталогов (C:\CONF1G.SYS, C:\WINDOWS\VB). Номер файла — целочисленное выражение, значение которого должно лежать в диапазоне от 1 до 255 (присваиваемый файлу номер). Len — определяет размер буфера операций ввода-вывода (по умолчанию 512 Кб). Примеры: Open “С:\CONFIC.SYS” For Input As tt5 'открывается файл с именем CONFIG.SYS в директории С: для ввода и ему присваивается номер 5 Doc$ = “a:\Utilits\NC.DOC” присвоение значения константе Open Doc$ For Input A.s ft 5 'открытие файла NC.DOC на диске А: в директории Utilits для ввода, файлу присваивается номер 2 Open “Resulc. t:-:t “ For Output As tt7 'открытие файла для вывода. Если открывается для вывода несуществующий файл. то он создается при значениях параметров Append и Output. Если для ввода открывается несуществующий файл, то Visual Basic сообщает об ошибке. Если файл скрывается для вывода Visual Basic всегда создает новый файл, перезаписывая в него любой имеющийся на диске файл с тем же именем. Существование файла перед открытием можно проверить с помощью встроенной функции Dir$ (возвращает строку с копией имени файла, если указанный файл существует, либо пустую строку в противном случае). Пример. If Dir$ (“FilePrim.Txt”) <> “” Then .Open “FilePrim.Txt” For Input As #12 End If После завершения операций ввода — вывода файл должен быть закрыт. Для этого используется оператор Close #номер_фачла где Close — ключевое слово; номер_ файла соответствует номеру в операторе Open. Для ввода информации из последовательного файла используется оператор Line Input #номер _ файла, имя_переменной где Line Input — ключевое слово; номер_файла — номер файла, совпадающий с номером в операторе Open (вводится информация из открытого файла); имя_переменной — имя переменной, которая принимает значение записи файла, типа String или Variant. При выполнении оператора считывается одна запись файла и помещается в ячейку оперативной памяти, адрес которой соответствует имени переменной в операторе ввода (переменная получает значение, совпадающее с введенной записью файла). Последовательное выполнение операторов ввода обеспечивает последовательное считывание записей файла. Встроенная функция EOF (аббревиатура английских слов End Of File - конец файла) позволяет проверять при чтении файла: достигнут конец файла или нет. Значением аргумента функции EOF является номер считываемого файла. Функция возвращает значение True, если достигнут конец файла, и False - в противном случае. Пример. Dim FileYura, Sr.rokaVvoda As String 'объявление символьных переменных Open FileYura For Input As #5 'открытие файла FileYura для ввода Do While Not EOF(5)'цикл последовательного чтения 'записей файла пока не достигнут конец Line Input #5, StrokaVvoda' ввод считанной записи 'в переменную StrokaVvoda LineRead StrokaVvoda 'обращение к 'процедуре обработки строки LineRead 'аргументом которой является переменная StrokaVvoda Loop Close #5 ' закрытие файла Для вывода информации в последовательный файл используется оператор {Print* Write} ”номер_файла,[[{8рс(ч) |Tab(n)}] [ выражение}[{,\;}}} где Print, Write — ключевые слова. Print# — обеспечивает вывод в последовательный файл в формате дисплея (т.е. аналогично выводу на печать, например, на форме). выражение - выражение, значение которого записывается в файл. Если выражения разделяются “;”, то в файл они записываются без пробелов слитно. Если выражения разделяются “,”, то в файл они записываются в фиксированные зоны длиной 14 символов (зонный формат). Если в конце выражения не стоит “;” или “,”, то выведенная в файл строка дополняется символами <CR>, обозначающими переход к началу строки (carriage return, ASCII-код равен 13), и <LF>, обозначающими переход на другую строку (line feed, ASCII-код равен 10). Т.о. каждому значению соответствует одна запись или одна строка при выводе в формате дисплея. Spc(n) и ТаЬ(п) определяют соответственно вставку п пробелов между выводимыми выражениями и табуляцию на п колонок перед списком выражений. Для удаления с дискового пространства неиспользуемого файла используется оператор Kill имя_файла где Kill — ключевое слово. В заключение следует отметить, что данные любого типа (Boolean, Data, Integer, Single, Double, Currency) записываются в файл в символьной форме. При выводе данные преобразуются к символьной форме, при вводе происходит их преобразование к первоначальному типу, па что затрачиваются ресурсы компьютера. Кроме того. представление данных в символьной форме неэффективно. Например, число 421596 типа Single -занимает в памяти компьютера 4 банта, но при записи в последовательны” файл - 7 байт: 1 байт па каждый символ. Для того чтобы считать требуемую запись в последовательном файле необходимо последовательно пройти все предыдущие записи; чтобы изменить одну запись в файле, необходимо переписать весь файл заново. От этих недостатков свободны файлы прямого доступа. Файлы прямого доступа Пример программы. В первой части процедуры обработки события щелчка мыши по форме в файл TE5TFILE выводятся строки символов с использованием оператора Print# (вывод в формате дисплея). Во второй части процедуры записи этого файла читаются и выводятся в окно вывода в том виде, как они записаны в файле. Текст процедуры: Пример программы. Программа осуществляет преобразование текстового файла последовательною доступа распаковкой его строк таким образом, чтобы каждая цепочка символов “*п”, где п — однозначное целое число (число пробелов), заменялась указанным числом пробелов. На форме располагаются: · командная кнопка “Ввод” (имя — Command 1), щелчок мыши по которой активизирует окно ввода (имя — 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 •= “”
|
||||
Последнее изменение этой страницы: 2016-08-12; просмотров: 284; Нарушение авторского права страницы; Мы поможем в написании вашей работы! infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 18.119.235.107 (0.006 с.) |