|
Программирование >> Проектирование интерфейса пользователя
об именах и адресах электронной почты пользователей. Строка 20 демонстрирует пример использования команды Put для записи полученных данных в двоичный файл. Команда Put более подробно рассмотрена в следующем разделе. Цикл прерывается при вводе символа Q в качестве имени пользователя. В строке 22 (мы не забыли!) файл закрывается. Если попытаться открыть двоичный файл с помощью обычного текстового редактора, помимо значимых данных, мы, вероятно, увидим нагромождение служебных символов. Картина становится более прозрачной, если обратиться к средствам старой программы Двоичные файлы полезны для хранения блоков структурированной информации, которые, скажем, описываются определенными пользователем типами данных, а текстовые файлы удобны в качестве хранилища произвольных текстов. Например, глава, которую вы читаете, записана в виде текстового документа Word, а вот адресную книгу, содержащую сведения об именах абонентов, номерах телефонов и т.п., вероятно, в каких-то случаях целесообразно сохранять в виде бинарного файла определенной структуры. Чтение и запись текстовых данных Команды Line Input, Input, Print и Write предназначены для чтения и записи текстовой информации. Выбор той или иной команды диктуется условиями конкретной задачи и структурой используемых данных. Команда Line Input применяется для построчного чтения, input - для чтения текста с разделителями, Print - для вывода порций текста, a Write - для записи фрагментов данных в двойных кавычках с разделителями. Ниже приведены синтаксические формулы, описывающие каждую из названных команд. Line Input #НомерФайла, nepeMeHHaHTMnaString Input #НомерФайла, Переменная! [, Переменная2, ПеременнаяЗ, ...] Print #НомерФайла, Переменная! [, Переменная2, ПеременнаяЗ, ...] Write #ПомерФайла, Переменная! [, Переменная2, ПеременнаяЗ, ...] Команда Line Input требует задания номера открытого файла и символьной переменной для хранения считанной из файла строки данных. Input считывает из файла, который задан с помощью номера, поля данных, ограниченные разделителями, и присваивает их переменным из указанного списка. Номер файла, используемый командами Line Input и input, - это числовая переменная двойной точности, полученная от функции FreeFile. Input позволяет непосредственно считывать и присваивать переменным как строки, так и данные других типов. Команды Print и Write также пользуются номером файла, возвращаемым функцией FreeFile, и предоставляют возможность записи одного или нескольких значений, ограниченных разделителями, в текстовый файл. Результат работы команды Write (мы применим ее в строке 7 листинга 10.6) - это строка, которая состоит из полей, заключенных в двойные кавычки и разделенных запятыми: Robert Golieb , RobertGolieb@hotmail.com Те же значения, записанные с помощью команды Print, в файле будут выглядеть так: Robert Golieb RobertGolieb§hotmail.com Обратите внимание на отсутствие каких бы то ни было разделителей, кроме пробелов. Применяя команды Write и Input, вы сможете легко создать простую базу данных в виде текстового файла, а также приложение для ее просмотра. Несмотря на то, что такое решение трудно назвать эффективным, в некоторых случаях оно может оказаться оправданным. Подобная информация может поступать из различных источников - Web-страниц, файлов конфигурации или баз данных старых форматов. Листинг 10.6 демонстрирует пример функции для создания и просмотра базы данных, содержащей сведения об именах пользователей и их электронных адресах. Листинг 10.6. Пример использования команд Input и Write 2 3 4 5 6 7 8 9 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: Sub UsinglnputAndWrite( Dim Handle As Double Handle = FreeFile ,Open CommaDelimited.Txt For Output As #Handle Writ Mdle, Robert Golieb , RobertGoliebghotmail.com Close IHandle Handle = FreeFile Open CommaDelimited.Txt For Input As #Handle Dim Name, Email As String Input #1, Name, Email MsgBox Корреспондент: & Name \ & Email Close IHandle End Sub Ключ к созданию высококлассного кода - последовательность в действиях. В качестве номера открытого файла мы, например, неоднократно использовали переменную Handle типа Double, получающую значение от функции FreeFile, - нам не приходилось всякий раз выдумывать новые имена или, хуже того, пользоваться литеральными значениями. Чем большее количество элементов кода подвергается разумной унификации, тем быстрее достигается качественный результат. Открытые файлы - это ресурсы операционной системы. Поскольку они ограниченны, программный код должен заботиться о том, чтобы все открытые файлы в конце концов обязательно закрывались. Если в промежутке между операциями открытия и закрытия файла происходит ошибка, файл может остаться открытым, что вполне может привести к повреждению данных. В главе 18-й час. Обработка ошибок во время выполнения программы речь пойдет о создании кода, позволяющего избегать подобных потенциальных опасностей. В строке 3 листинга 10.6 содержится объявление переменной Handle типа Double, предназначенной для хранения номера открытого файла. Этот файл запрашивается у операционной системы с помощью функции FreeFile, которая вызывается в строке 4. Полученный ресурс необходимо сразу же использовать, чтобы многопоточная операционная система не передала его другой программе или иному процессу той же программы. В строке 5 выполняется открытие текстового файла для записи, а строка 7 содержит инструкцию сохранения в файле двух литеральнтх символьных значений. В строке 9 файл закрывается. В строке 11 с помощью функции FreeFile вновь запрашивается свободный номер файла - обратите внимание, мы не стали полагаться на ранее используемый ресурс, а затребовали новый. Строка 12 содержит команду открытия того же текстового файла, но на сей раз в режиме чтения. В строке 14 объявляются две текстовые переменные - ниже, в строке 16, они используются для хранения результатов чтения данных из файла. В строке 18 полученная информация выводится на экран с помощью процедуры MsgBox, и в строке 20 файл закрывается. Конечно, рассмотренный пример является достаточно условным. Чтобы придать ему практическую ценность, необходимо вынести операции записи и чтения данных в отдельные функции и создать приемлемый интерфейс пользователя. О том, как строить понятные пользовательские интерфейсы, будет рассказано в главе 19-й час. Создание экранных форм . Чтение и запись двоичных данных Двоичные (бинарные) файлы находят самое широкое применение и позволяют сохранять данные в виде записей. Указав размер каждой записи, вы сможете последовательно сохранять и считывать их с помощью команд Put и Get. Строка23 листинга 10.5 содержит пример использования инструкции Put. Команда Get действует тем же образом, но применяется для работы с файлами, открытыми в режиме Read или Read g Write. Синтаксис команд Put и Get описан ниже. ▼ Put #Номер файла, [Номер записи], Переменная А Get #НомерФайла, [НомерЗаписи] , Переменная Команда Put требует задания номера файла (предварительно открытого с помощью Open), необязательного номера записи и идентификатора переменной. В качестве переменной может выступать объект стандартного или пользовательского типа данных - такого, как, например Email (мы определяли этот тип в тексте листинга 10.5). Аргумент НомерЗаписи задается в том случае, если вам известен индекс записи, которую необходимо сохранить. Если команда Put выполняется без указания номера записи, данные сохраняются последовательно. Если вы ссылаетесь на номера записей, то должны принять дополнительные меры по обработке возможных ошибок, чтобы избежать опасности выхода за маркер конца файла. Команда Get считывает двоичные данные в простые переменные или объекты более сложных типов. В отношении использования аргумента НомерЗаписи действуют те же правила, которые были рассмотрены выше. Прежде чем приступить к явному заданию номера записи для сохранения или считывания, обратитесь к главе 18. Команда Get предъявляет те же требования к параметру Переменная,
|
© 2006 - 2024 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки. |