ПОНЯТНО О Visual Basic NET (том 3)




Пример «Сейсмодатчик» - часть 3


                      Были_колебания = True

                      Debug.WriteLine(By)

                      If By > 100 Then Debug.WriteLine("Это Йети!")

              End If

        Loop

        BR.Close()

        FS.Close()

        If Not Были_колебания Then MsgBox("Колебаний не было")

End Sub

При работе с нашим примером файла программа распечатывает такую информацию:

28.08.2005 8:59:27

90

47

35

205

Это Йети!

19

Пояснения: Вначале переменной Были_колебания, естественно, присваивается значение False, но если 28 августа было хоть одно показание датчика, то программа меняет его на True. Последняя строка программы в зависимости от значения этой переменной выдает или не выдает сообщение «Колебаний не было».

Данные из файла считываются в цикле Do-Loop. Чтобы остановить чтение при достижении конца файла, используется функция PeekChar (попробуй символ) класса BinaryReader. Она работает аналогично функции Peek класса StreamReader (19.2.5). При достижении конца файла чтение становится невозможным и функция принимает значение -1.

Вы видите, что если считано число 255, то компьютер его не распечатывает, а методом ReadString класса BinaryReader считывает строку, в которой записано время. У класса BinaryReader есть несколько методов для считывания из файла данных разных простых типов, например, ReadBoolean или ReadDouble. Но нет метода для считывания дат, поэтому даты и были записаны в файл в строковом виде. А сейчас они функцией CDate преобразовываются опять к типу DateTime.

Если эта дата Время.Date является более поздней (>), чем 28 августа, то компьютер выходит из цикла, иначе время распечатывается.

Если считанный байт не является числом 255, то проверяется, не 28 ли августа нынче в файле, и если да, то делается вывод о том, что колебания, точно, были, и распечатывается численное значение считанного байта, а если оно еще и превосходит 100, то в этом обвиняется Йети.




Содержание  Назад  Вперед