Почти все программы имеют
одинаковую структуру. В хорошей программе явно выделены области объявления
переменных, функций и процедур, везде присутствуют одни и те же циклы и
управляющие логические конструкции, всегда можно найти операторы сравнений.
Разница лишь в ключевых словах, которые используются в том или ином языке
программирования. В данной главе мы рассмотрим основные конструкции языка Visual
Basic.
Почему мы рассматриваем именно
Visual Basic? Дело в том, что именно на этом языке изначально писались сценарии
для ASP, поэтому стоит рассматривать именно этот язык в качестве рабочей лошадки
для ASP-сценариев. Если быть более точным, надо заметить, что при разработке
сценариев ASP.NET мы используем язык Visual Basic .NET, который несколько
отличается от канонического Visual Basic. Однако эти отличия не так уж и
кардинальны, и там, где они будут важны для создания сценариев ASP.NET, мы
упомянем об этих изменениях.
Естественно, мы не будем
рассматривать язык Visual Basic .NET полностью. Дело в том, что для нужд
создания сценариев ASP.NET нужны далеко не все его возможности. Но все, что
действительно необходимо для ASP, мы рассмотрим.
Основа любой программы — это ее
управляющая логика, т. е. те самые циклы, операторы сравнений и прочие
конструкции, обуславливающие порядок действий программы.
Примечание
Яростные приверженцы объектно-ориентированной модели программирования могут
заметить, что основой программы является именно объектная модель. Но ради
объективности надо признать, что это не так. Программы писались еще в те
времена, когда об объектах никто и не задумывался. Все-таки управляющая логика
это основа, альфа и омега любой программы.
Начнем мы с основного оператора
управляющей логики — условного оператора. В языке Visual Basic он имеет
предельно детализированный вид и объявляется следующим образом:
If условие [ Then ]
[ блок кода } [ Elself условие [
Then ]
[ блок кода ] ] [ Else
[ блок кода ] } End If
Детально рассмотрим это формальное
объявление оператора. Обязательным ключевым словом является, естественно, слово
if. После него мы указываем либо логическое условие (или их комбинацию), либо
переменную булева (логического) типа. После ключевого слова Then размещается
блок кода, который будет выполнен в том случае, если логическое условие истинно.
Или булева переменная имеет значение True. Блок, начинающийся с ключевого слова
Eiseif, позволяет задать еще одно логическое условие, которое будет проверяться
на истинность в том случае, когда первое условие, находящееся после ключевого
слова if, является ложным. Как и в первом блоке оператора, код, выполняемый в
случае истинности условия, размещается после ключевого слова Then. Если же оба
логических условия оказываются ложными, мы можем использовать третий раздел
оператора, начинающийся с ключевого слова Else. Сразу после него размещается
блок кода, выполняемый в том случае, если все логические условия оказались
ложными. Завершается весь условный оператор комбинацией ключевых слов End if.
Необходимо также отметить, что второй и третий блоки оператора не являются
обязательными.
Приведем пример использования
условного оператора. Рассмотрим следующую конструкцию:
If i>5 Then
i=i*2 Elself i<0 Then
i=i*(-l)
[ Else
i=l
End If
Все операции в этом блоке кода
производятся с переменной 1. Если значение этой переменной больше пяти, то оно
удваивается. Если оно меньше нуля, то у этого значения принудительно
меняется знак. Во всех остальных случаях, т. е. когда значение переменной
находится в промежутке от нуля до пяти, это значение становится равным единице.
Но, как мы уже говорили, последние
два блока оператора являются необязательными, поэтому без них можно обойтись,
если необходимо просто проверить некоторое условие. В этом случае условный
оператор будет выглядеть следующим образом:
If i>5 Then
i=i*2
End If
Легко увидеть, что реализация
условного оператора в Visual Basic .NET явно несколько утяжелена по сравнению с
остальными распространенными языками программирования. Как мы увидим позже,
подобная избыточность свойственна практически всем управляющим конструкциям
Visual Basic .NET.
Логическим продолжением условного
оператора является оператор выбора select. Его формальное объявление выглядит
следующим образом:
Select [ Case ] testexpression
[ Case expressionlist
[ блок кода ]
]
[ Case Else
[ блок кола ] ]
End Select
В теле этого оператора при помощи
ключевого слова Case мы можем задавать логические условия и сопоставлять им
блоки кода. Причем количество ключевых слов Case и связанных с ними логических
условий ограничивается только требованиями программиста. Более того, в операторе
присутствует ключевое слово Else. Блок кода, связанный с ним, выполняется в том
случае, если ни одно из вышеперечисленных логических условий не было истинным.
Условия, связанные с ключевым
словом Case, задаются несколько шире, нежели в случае с обычным условным
оператором. Можно задавать целый интервал допустимых значений при помощи
ключевого слова то. Пример такого условия показан в следующем фрагменте кода:
Select i
Case 1 То 10 . . .
.........
End Select
Оператор select связывается с
переменной i. А в первом условии проверяется, входит ли значение этой переменной
в промежуток между единицей и десятью.
В логических условиях оператора
select мы можем использовать ключевое слово is, применяемое в связке с
операторами логического сравнения. Так, например, для того, чтобы выполнить
некий блок кода в том случае, если значение основной переменной оператора больше
пяти, следует использовать следующий код:
Select i
Case Is>5 . . .
............
End Select
Завершается оператор, как видно из
объявления, комбинацией ключевых слов
End Select.
Приведем пример использования
оператора Select. Рассмотрим следующий фрагмент кода:
Select i
Case 1 То 5
з="0т единицы до пяти"
Case 6, 7
s ="Или
шесть или семь"
Case Is>8
s
="Больше восьми"
Case Else
s ="Судя
по всему, меньше единицы"
End Select
Рассмотрим работу этого оператора.
Все логические условия завязаны на переменную i. Первое условие проверяет
вхождение значения основной переменной в интервал от единицы до пяти. В том
случае, если это условие является истинным, то переменной s, очевидно имеющей
строковый тип, присваивается значение От единицы до пяти. Второе условие
проверяет, не равно ли значение основной переменной оператора шести или семи.
Легко заметить, что в случае перечисления сравниваемых значений, они просто
разделяются запятой. Соответственно, если это условие выполняется, то переменной
s присваивается другое значение. Третье и последнее логическое условие будет
истинным, если значение основной переменной оператора больше восьми. В том
случае, если ни одно из перечисленных условий не выполняется, управление
переходит к блоку кода, указанному после комбинации ключевых слов Case select.
Впрочем, этот блок не является обязательным.
Настало время рассмотрения циклов.
Стандартный цикл For, связанный с переменной-счетчиком, объявляется следующим
образом:
For counter = start To end [ Step
step ]
[ блок кода ]
[ Exit For ]
[ блок кода ]
Next [ counter ]
Процесс выполнения такого цикла
связан не с каким-либо логическим условием, а с переменной-счетчиком, на основе
которой вычисляется количество проходов цикла. Простейший пример подобного цикла
выглядит следующим образом:
For i=0 To 9
my_array(i) =i * 2
Next
В этом цикле мы каждому элементу
массива присваиваем значение, в два раза больше его порядкового номера. Следует
отметить, что нумерация массива начата с нуля, что нетипично для Visual Basic.
Это нововведение Visual Basic .NET, которое мы рассмотрим в разделе, посвященном
созданию массивов и работе с ними.
По умолчанию, после каждого прохода
цикла значение переменной-счетчика увеличивается на единицу. Цикл будет
выполняться до тех пор, пока значение переменной-счетчика не превысит числа,
указанного после ключевого слова то. Однако могут возникать случаи, когда
необходимо при прохождении цикла изменять значение счетчика не на единицу. В
этом случае следует использовать необязательное ключевое слово step, после
которого указывается величина изменения счетчика с каждым проходом цикла, т. е.
если мы хотим модифицировать цикл из вышеприведенного примера так, чтобы
операции присваивания производились только с четными элементами массива, следует
использовать следующий фрагмент кода:
For i=0 To 9 Step 2
my_array(i)=i*2
Next
После ключевого слова Next мы можем
указать наименование переменной-счетчика цикла. Это указание переменной не
является обязательным, но может помочь в создании более понятного кода, когда
применяются встроенные циклы. Посмотрите на такой пример:
For 1=0 То 9
For j=0 To 9
my_array(i,j)=i*2+j
Next j
Next i
В данном случае, дополнительное
указание наименований счетчиков в конце цикла помогает читать код.
На основе приведенных примеров
может сложиться впечатление, что переменная-счетчик для данного цикла может
обладать только целочисленным типом. На самом деле это не так. Для
создания переменных-счетчиков может применяться любой численный тип, для
которого поддерживаются арифметические операции сложения и вычитания, а также
логические операции "больше" и "меньше".
Существует и еще одна вариация
цикла For. Она применяется в тех случаях, когда необходимо обработать все
элементы некоей группы. Это могут быть элементы коллекций, списков, различных
стеков и прочих групп. Пример подобного цикла выглядит следующим образом:
For Each myitem In mylist
myitem.qwant=1
Next
Как видно, структура подобного
цикла достаточно прозрачна. Начало цикла формируется при помощи комбинации
ключевых слов For Each, после которых указывается наименование элементов, по
которым будет проходить цикл. Затем следует ключевое слово in, после которого мы
указываем наименование списка, в который входят обрабатываемые элементы. В нашем
случае мы производим обработку всех элементов myitem, которые являются
вложенными частями объекта mylist. Естественно, в данном случае нам не нужна
переменная-счетчик, для контроля над количеством проходов цикла. Легко заметить,
что в приведенном примере мы успешно обошлись без нее. Завершается цикл при
помощи знакомого нам уже ключевого слова Next.
Также часто применяются циклы,
основанные на каких-либо логических условиях. То есть тело цикла будет
выполняться до тех пор, пока заранее оговоренное условие не станет истинным или
ложным (в зависимости от того, какую разновидность цикла использует
разработчик). Подобные циклы объявляются следующим образом:
Do { While | Until } условие
[ блок кода ]
[ Exit Do ]
[ блок кода ]
Loop
Это объявление так называемого
цикла с предусловием. То есть, перед выполнением очередного прогона цикла
проверяется логическое условие, и в зависимости от результата проверки действие
цикла может быть выполнено или нет. Ключевое слово until применяется в тех
случаях, когда цикл должен выполняться до тех пор, пока логическое условие
является истинным. Примером подобного цикла является следующий фрагмент кода:
i =0
Do While i<10
my_array(i)=i*2
Loop
Следует заметить, что в данном
конкретном случае мы все же использовали переменную-счетчик, пусть и
опосредованную. Но все зависит от логики программы. Часто подобные циклы
применяются и без счетчиков.
Легко увидеть, что в приведенном
примере цикл будет выполняться до тех пор, пока условие не станет ложным. Если
же мы будем использовать ключевое слово until вместо while, то цикл будет
выполняться до тех пор, пока условие не станет истинным.
Мы уже говорили, что подобная
модификация циклов называется циклом с предусловием, т. е. соответствие
логического условия проверяется перед выполнением тела цикла. Таким образом,
может возникнуть ситуация, когда еще 'перед самым первым проходом цикла
окажется, что логическое условие не выполняется. В этом случае цикл не будет
выполнен. Однако не стоит забывать о циклах с постусловием. В этой разновидности
циклов логическое условие проверяется уже после выполнения тела цикла. Другими
словами, при любом раскладе можно быть уверенным, что цикл будет пройден хотя бы
один раз. Определяется подобный цикл следующим образом:
Do
[ блок кода ]
[ Exit Do ]
[ блок кода ]
Loop { While I Until } условие
Как видно, отличие от первого
варианта цикла очень невелико — условие продолжения работы вместе с ключевым
словом until или while перенесено в конец цикла.
Итак, мы рассмотрели практически
все управляющие конструкции языка Visual Basic .NET. Без внимания остались
некоторые элементы управляющей логики, которые автор не счел нужным приводить.
Одним из таких пропущенных элементов является ключевое слово goto,
обеспечивающее прямую передачу управления какой-либо строке программы. Понятно,
что этот пережиток прошлого должен быть как можно быстрее забыт, так как эта
разновидность управления ходом выполнения программы устарела даже в момент
появления парадигмы модульного программирования. Сейчас это просто
дополнительный источник ошибок, которых и без того немало в наших программах,
средство ухудшения читабельности кода и просто признак плохого стиля
программирования.
Типы данных
Какими бы сложными объектами,
массивами или коллекциями мы ни пользовались, следует помнить, что основой их
являются единичные переменные.
Это основные кирпичики информации,
атомы, из которых будет формироваться впоследствии сложная ткань огромных
объектов. Конечно, в конце концов, вся информация в компьютерных системах
представляется в численном виде, поэтому теоретически мы могли бы обойтись и
одним-единственным типом данных. Причем раньше, во времена ассемблера, так и
было. Но сейчас это уж слишком хлопотно. Следует точно знать, какой именно вид
информации хранится в той или иной переменной, и в соответствии с этим знанием
применять к ней те или иные функции обработки.
Visual Basic .NET все-таки обрел
достаточно хорошую типизацию. Рассмотрим краткий перечень возможных типов
переменных Visual Basic .NET. Типы перечислены в алфавитном порядке.
Boolean
. Логический тип. Для
хранения переменной отводятся два байта. Переменная может принимать только два
значения: True (Истина) И False (Ложь).
Byte. Числовой тип. Для хранения переменной отводится один байт. Значение
переменной может находиться в промежутке от нуля до двухсот пятидесяти пяти.
Знак не используется.
Char. Символьный тип. Для хранения переменной отводятся два байта. В
качестве значения переменной обычно применяются символы. Так как используются
теперь два байта, разработчики могут применять символы Unicode.
Date. Предназначен для хранения дат. Переменная занимает восемь байт.
Возможные значения находятся в промежутке от первого января первого года нашей
эры до тридцать первого декабря девять тысяч девятьсот девяносто девятого года
1.
Decimal. Самый мощный числовой тип. Для хранения переменной подобного типа
отводится шестнадцать байт. Отрицательная и положительная границы промежутка,
в котором располагаются возможные значения этой переменной, одинаковы по
модулю и равны +/-79 228 162 514 264 337 593 543 950 335, если использовать
целые числа. Если же необходимо хранить дробные величины, то границы возможных
значений будут смещены на несколько порядков в зависимости от того, сколько
знаков после запятой использует разработчик. Подобный тип может использоваться
только для хранения десятичных дробей. Разработчик может использовать до
двадцати восьми знаков после запятой.
Double. Числовой тип. Применяется для хранения чисел в экспоненциальной
форме. Для хранения переменной отводится восемь байт. Отрицательные значения
находятся в промежутке от —1,79769313486231Е+308 до —4,94065645841247Е—324.
Положительные значения входят в промежуток от 4,94065645841247Е-324 до
1.79769313486231Е+308.
I
nteger. Предназначен для обработки целочисленных значений. Переменная
подобного типа занимает четыре байта. Возможные значения находятся в
промежутке от -2 147 483 648 до 2 147 483 647.
Long. Предназначен для целочисленных значений. Для хранения переменной
отводятся восемь байт. Возможные значения переменной подобного типа находятся
в промежутке от —9 223 372 036 854 775 808 до 9 223 372 036 854 775 807.
O bject. По сути, переменная подобного типа
является всего лишь ссылкой на некий конкретный экземпляр какого-либо объекта.
Для хранения переменной отводятся четыре байта.
S hort. Облегченный целочисленный тип. Для
хранения переменной отводятся два байта. Возможные значения переменной данного
типа находятся в промежутке от —32 768 до 32 767.
S ingle. Предназначен для хранения чисел в
экспоненциальной форме. Для хранения переменной отводятся четыре байта.
Отрицательные возможные значения переменной такого типа расположены в
промежутке от -3,402823Е+38 до -1,401298Е~45. Положительные значения
укладываются в промежуток от 1.401298Е-45 до 3,402823Е+38.
S tring. Строковый тип. Предназначен для
хранения строк различной длины. Возможная длина строки может
Доходить до двух миллионов символов кодировки Unicode. Объем памяти для
хранения переменной выделяется в зависимости от длины строки.
Мы рассмотрели все
предустановленные типы Visual Basic .NET. На самом деле, разработчик может
создавать собственные типы, но в работе с ASP.NET эта возможность, скорее всего,
не потребуется. В крайнем случае, можно обойтись объектами. Сейчас уже нет
смысла создавать собственный тип переменных просто для экономии оперативной
памяти. Учитывая ее типичные объемы на машинах, предназначенных для работы
WWW-серверов и возможности автоматического сборщика мусора, действующего в среде
Microsoft .NET Framework, можно пользоваться оперативной памятью без оглядки на
ее объем. И уж точно не стоит экономить на нескольких байтах, ухудшая тем самым
читабельность и стройность кода.
Если есть типы данных, то
существуют и переменные. А если мы используем переменные в своих приложениях,
следует уметь их объявлять. Объявление переменных производится при помощи
комбинации ключевых слов Dim и as. Типичный пример объявления целочисленных
переменных выглядит следующим образом:
Dim i,j As Integer
При помощи ключевого слова Dim мы
начинаем объявление переменных, за ним указываются наименования этих переменных,
а после ключевого слова as записывается их тип. Программы на языке Visual Basic
.NET имеют строковую структуру, т. е. в каждой строке кода может находиться
только один оператор. Таким образом, разработчик избавлен от необходимости
отделять операторы друг от друга при помощи символов-разделителей, таких, как
символ точки с запятой. В нашем случае это означает, что мы должны использовать
ключевое слово Dim перед каждой строкой объявления переменных, т. е. если
необходимо объявить несколько целочисленных переменных и одну булеву, следует
использовать следующий фрагмент кода:
Dim i,j As Integer
Dim r As Boolean
На самом деле, объявление
переменных может быть и не таким простым. Мы можем создавать глобальные и
защищенные переменные, дружественные, статические и частные. Но все эти
дополнительные возможности необходимы лишь для работы с разветвленной объектной
иерархией, которая явно не нужна в приложениях ASP.NET.
Естественно, в языке Visual Basic .NET
существует ряд функций, которые позволяют преобразовывать типы. Вот их список.
CB оо
l . Возвращает булево значение. В качестве параметра
функции может быть передано какое-либо условие или числовое значение.
CByte. Возвращает значение типа
Byte. В качестве параметра передается соответствующая строка или числовое
значение.
CC har.
Возвращает символ. В качестве параметра передается целое число, находящееся в
промежутке от 0 до 65 535.
CDate. Возвращает значение типа
Date. В качестве параметра можно использовать любое принятое в операционной
системе обозначение даты.
CDbl .
Преобразовывает значение параметра к типу Double.
CD ес. Применяется для преобразования параметра
к типу Decimal.
CI nt. Преобразовывает значение параметра к
целочисленному типу integer. Если в качестве параметра передано дробное число,
то дробная часть просто округляется.
CLng. Возвращает значение типа Long. Обработка параметра производится по
образцу функции cint.
CS hort. Преобразовывает переменную или значение
к типу short.
CS ng. Применяется для преобразования параметра
к типу single.
CS tr. Используется для преобразования данных в
строковый тип string. Если в качестве параметра функции передается булево
значение, то возвращается строка True или False. Если передаются данные типа
Date, то функцией возвращается строка, содержащая обозначение даты в принятом
для системы формате. Любое числовое значение преобразовывается в символьное
представление данного числа.
И на этом мы заканчиваем
рассмотрение простых типов данных, принятых в языке программирования Visual
Basic .NET.
Массивы и коллекции
Все мы знакомы с понятием массивов.
Это просто совокупности переменных одного типа, объединенных одним именем.
Доступ к конкретному элементу массива производится при помощи указания его
порядковых номеров.
В Visual Basic.NET массивы
объявляются точно так же, как и обычные переменные. Отличает их только указание
размера массива. То есть, если мы хотим объявить целочисленный массив,
содержащий десять элементов, следует воспользоваться следующей конструкцией:
Dim my_array(10) As Integer
Естественно, разработчик не
ограничен одномерными массивами. Язык Visual Basic .NET позволяет создавать
многомерные массивы. При этом программист может использовать для своих массивов
до тридцати двух измерений. Обычно этого количества более чем достаточно. Если
же вам необходимы массивы с большей степенью размерности, то либо вы несколько
неправильно спроектировали свое приложение, либо вы — гений, который в состоянии
свободно оперировать более чем тридцатью двумя измерениями. Правда, далеко не
факт, что с обработкой подобного массива легко справится ваша система.
Объявление многомерных массивов
практически ничем не отличается от объявления одномерных массивов. Просто в
скобках после имени массива следует перечислить размеры массива по всем
измерениям, а именно, если мы хотим объявить целочисленный массив,
представляющий собой квадратную матрицу размером десять на десять элементов,
следует использовать следующий фрагмент кода:
Dim my_array(10,10) As Integer
Как мы знаем, все языки, входящие в
семейство Microsoft .NET, должны действовать практически одинаково, чтобы
создавать идентичный runtime-код. А у языков Visual Basic и C++ есть одно
коренное различие в обработке массивов. В C++ нумерация элементов массива
начинается с нуля, а в Visual Basic — с единицы. Корпорация Microsoft пошла на
серьезный шаг и объявила, что теперь в языке Visual Basic .NET элементы массивов
нумеруются с нуля. Честно говоря, меня это известие обрадовало, так как для меня
язык С является "родным", и нумерация с нуля кажется мне более естественной. Той
же самой точки зрения придерживаются многие разработчики, до знакомства с Visual
Basic работавшие с языками C++ или Pascal. На самом деле, такая нумерация более
органична для компьютерных систем.
Однако этот, вне сомнения, "дерзкий
и революционный" шаг Microsoft практически "убил" совместимость языка Visual
Basic .NET с программами, разработанными на старых версиях языка Visual
Basic. Теперь не получится просто перекомпилировать их в новой среде разработки,
так как фактически у массивов получится на один элемент меньше, чем ожидали
разработчики. Поэтому, чтобы не потерять совместимость с ранее написанными
программами, было принято следующее "соломоново" решение. Массивы действительно
нумеруются с нуля, но при этом, в момент объявления массива им автоматически
добавляется по одному дополнительному элементу по всем измерениям. Таким
образом, действительно достигается совместимость со старыми программами, и в то
же время предоставляется возможность разработчикам при создании новых приложений
пользоваться нумерацией элементов массива с нуля.
Язык Visual Basic .NET
предоставляет возможность переобъявить массив в процессе работы программы,
изменив его размеры. Сама идея переобъявления массива явно необычна для стиля
программирования последних лет, она, скорее, унаследована из начала истории
языка Visual Basic. Однако такая возможность есть, поэтому нам следует знать,
как использовать ее.
Для переобъявления массива
используется ключевое слово Re Dim. Процедура изменения размеров массива
выглядит приблизительно следующим образом:
Dim my_array(10,10) As
Integer
...
ReDim my_array(10,20)
После выполнения директивы ReDim
размер массива my_array по второму измерению будет увеличен вдвое. При этом
необходимо осознавать, что мы можем изменить лишь объем массива, но не его тип
или количество измерений массива. Также по умолчанию при переобъявлении массива
значения его элементов теряются. Если же необходимо сохранить их, следует
использовать ключевое слово Preserve. В этом случае процедура переобъявления
размеров массива будет выглядеть следующим образом:
Dim my_array(10,10) As Integer
...
ReDim Preserve my_array(10, 20)
Следует также помнить, что при
создании любого массива, он автоматически становится объектом. Да, в объектной
иерархии Visual Basic .NET существует объект System.Array, и любой массив
является экземпляром данного класса. Никто не заставляет разработчика относиться
к массиву как к классу, и применять соответствующие свойства, методы и приемы
программирования, но в определенных ситуациях есть смысл воспользоваться
массивом как объектом. Полное рассмотрение методов и свойств объекта
System.Array находится в разделе, посвященном объектной иерархии языка Visual
Basic .NET.
Альтернативой массивам данных с
жестко заданными размерами являются так называемые "коллекции". Это просто набор
однотипных элементов.
У коллекций нет жестко заданных
размеров, и они изначально являются объектами. Поэтому объявление коллекции не
обойдется без ключевого слова New, при помощи которого выделяется память под те
или иные экземпляры различных классов, т. е. стандартное объявление коллекции
будет выглядеть следующим образом:
Dim my_col As New Collection ( )
Видно, что при объявлении мы не
указываем тип элементов коллекции. Этот тип будет определен автоматически, как
только будет добавлен к коллекции ее первый элемент. Добавление элемента к
коллекции производится при помощи метода Add, а удаление элемента при помощи
метода Remove. Пример работы с этими методами приведен в следующем фрагменте
кода:
my_col.Add(New my_object, "Пустой
элемент")
my_col.Remove(1)
Теперь разберем этот фрагмент кода.
Метод Add, как мы видели, получает два параметра. Мы добавляем в коллекцию
переменную my_object, которая на самом деле является объектом. Более того, этот
экземпляр объекта не был инициализирован, и для него не была выделена память.
Поэтому мы в качестве первого параметра метода Add, используем связку
наименования экземпляра объекта и ключевого слова New, которое заставляет
систему выделить требуемый объем памяти. Таким образом, мы добавляем в коллекцию
новый пустой экземпляр объекта.
Второй параметр метода Add является
текстовой строкой, которая описывает добавляемый элемент. Дело в том, что доступ
к отдельным элементам коллекции может производиться как по их номеру, так и по
текстовому описанию. Естественно, текстовые описания различных элементов
коллекции не должны совпадать.
Вторая строка рассматриваемого
фрагмента кода содержит метод Remove, при помощи которого удаляется какой-либо
элемент коллекции. В качестве параметра данному методу передается либо
порядковый номер удаляемого элемента, либо его текстовое описание. В нашем
случае мы удаляем первый элемент коллекции. Необходимо помнить, что нумерация
элементов коллекции начинается с единицы, а не с нуля, как у элементов массива.
Для доступа к конкретному элементу
коллекции следует воспользоваться методом item. В качестве параметра данному
методу может передаваться порядковый номер требуемого элемента коллекции или его
текстовое уникальное описание. Использование данного метода показано в следующем
фрагменте кода:
t=my_col.Item(1)
Данная операция присваивает
переменной t значение первого элемента коллекции. Излишне напоминать, что типы
переменной и элемента коллекции должны совпадать. Впрочем, метод item
используется для коллекций по умолчанию, поэтому предыдущая операция
может быть записана следующим образом:
t=my_col(1)
Обработку всех элементов коллекции
удобнее всего производить при помощи цикла For Each. Однако можно
воспользоваться стандартным циклом For, если знать количество элементов в
коллекции. Это количество хранится в свойстве count. Естественно, это свойство
имеет статус "только для чтения".
Встроенные функции
Теперь пришло время рассмотреть
список стандартных функций языка Visual Basic .NET. Некоторые из них явно не
понадобятся для разработки ASP-приложений, но их очень немного. В конце концов,
встроенные функции это возможности языка, которые и создают действующий код в
рамках тех или иных управляющих логических конструкций. Поэтому приводится
список встроенных функций Visual Basic .NET в алфавитном порядке.
Abs. В качестве параметра
передается любое числовое значение или переменная числового типа. Функция
возвращает абсолютное значение параметра, т. е. его модуль. Тип возвращаемого
значения всегда совпадает с типом переданного параметра.
AppActivate. Передает фокус ввода окну какого-либо открытого приложения. В
ASP.NET, естественно, не используется.
asc. Возвращает числовое представление символа, переданного функции в
качестве параметра. По сути дела, функция возвращает числовой код
символа-параметра. В качестве параметра может также передаваться значение типа
string, но возвращаться будет числовой код первого символа переданной строки.
Возвращаемое значение имеет тип integer.
ascw. В качестве параметра принимается только значение типа string. В
остальном механизм действия функции идентичен функции as с.
At п. Реализует математическую функцию арктангенса. Передаваемый параметр
и значение функции имеют тип Double.
Веер. Воспроизводит единичный звук при помощи встроенного динамика
компьютера. Не требуется никаких параметров, никаких значений не возвращается.
Функция явно унаследована из предыдущих версий Visual Basic и в данное время
практически не используется. И уж тем более, не потребуется в ASP-приложениях,
так как они исполняются на www-сервере, следовательно, и звук будет
воспроизводиться на сервере.
CaiiByName. Выполняет некий метод объекта, переданного в качестве
параметра, или устанавливает значения свойств этого объекта. Явно бесполезна в
современных условиях программирования с плотным использованием стандартных
методов объектно-ориентированного программирования.
choir. Меняет текущий каталог. В качестве параметра передается путь к
каталогу, который будет текущим.
chorive. Меняет текущий логический диск. В качестве параметра передается
символ, обозначающий диск, который будет текущим.
choose. В качестве параметров передается числовое значение типа Double и
список элементов, из которых функция будет выбирать возвращаемое значение.
Выбор значения производится на основе переданного числового параметра.
chr. Функция возвращает символ, код которого передан ей в качестве
параметра. Параметр имеет тип integer, возвращается значение типа Char.
Command. Применяется в разработке приложений, которые будут скомпилированы
в отдельный исполняемый ехе-файл. Возвращает строку с опциями, введенными в
командную строку после наименования исполняемого файла. В ASP-приложениях не
используется.
Cos. Реализует математическую функцию косинуса. Передаваемый параметр и
значение функции имеют тип Double.
Createobject. Создает СОМ-объект и возвращает ссылку на него. В качестве
обязательного параметра передается идентификатор создаваемого объекта. Также
может быть передано наименование объекта, но данный параметр не является
обязательным.
CurDir. Возвращает значение типа string, в котором содержится путь к
текущему каталогу. В качестве необязательного параметра может быть передан
символ, идентифицирующий существующий в системе логический диск. В этом случае
будет возвращен путь к текущему каталогу на этом диске. Если параметр не
задан, то для расчета значения будет использован текущий диск.
DateAdd. Возвращает дату, определяемую на основе параметров, переданных в
функцию. Функция обладает тремя обязательными параметрами. Первый параметр
обозначает тип интервала времени, который будет отсчитываться от стартовой
даты. Этот интервал может иметь тип Datelnterval или String. Значения типа
Datelnterval это всего лишь несколько констант. Им соответствуют строковые
константы, которые можно использовать в качестве первого параметра. Полный
список констант типа Datelnterval и соответствующих им строковых значений
приведен в приложении. Второй параметр содержит количество отсчитываемых
интервалов. А в качестве третьего параметра используется дата, от которой и
будет вестись отсчет. Таким образом, если мы используем
функцию
DateAdd(DateInterval.Day,I,#Jan
1,2002#), то
в качестве результата ее
деятельности мы получим значение #Jan 2,2002#, т.е. второе января две тысячи
второго года.
DateDiff. Возвращает разницу между двумя датами в качестве значения типа
Long. Принимает три параметра. Первым параметром передается тип интервала
времени, в котором будет вестись отсчет разницы между сравниваемыми датами, т.
е. если мы указываем тип, ориентированный на дни, то результатом действия
функции будет разница именно в днях. Второй и третий параметры имеют тип Date.
Это соответственно те даты, разница между которыми вычисляется функцией.
DatePart. Возвращает в качестве целочисленного значения определенную часть
даты. В качестве параметров функции передаются уже знакомое нам указание типа
интервала и дата, из которой необходимо выделить фрагмент. Так, если мы укажем
тип промежутка времени, ориентированный на месяцы, то в качестве результата
работы функции мы получим номер месяца, в котором находится искомая дата,
переданная как второй параметр.
DateSeriai. Возвращает значение типа Data, созданное на основе трех
целочисленных значений, переданных функции в качестве параметра, а именно, в
функцию передаются год, месяц и день как значения типа integer. Так, выражение
DateSeriai (2002,2, 9} возвращает значение типа Date, указывающее на девятое
февраля две тысячи второго года.
DateValue. Как и предыдущая функция, создает значение типа Date, но при
этом опирается не на числовое представление ее частей, а на строковое
отображение даты, т. е. в качестве параметра данной функции передается строка,
описывающая некоторую дату в установленном формате операционной системы. Для
того чтобы получить значение, указывающее на девятое февраля две тысячи
второго года, как в предыдущем примере, следует воспользоваться вызовом
DateValue( "February 09, 2002").
Day. Возвращает конкретное число, т. е. номер дня в месяце, опираясь на
дату, переданную в качестве параметра. Возвращаемое значение имеет тип integer,
другими словами, выражение Day(#Feb 9, 2002#) возвратит число "девять".
DeieteSetting. Удаляет из реестра операционной системы записи о каком-либо
приложении. В качестве параметров функции передаются официальное наименование
приложения, записи которого будут удалены, и наименования раздела реестра, из
которого будут удаляться эти записи. В качестве необязательного параметра
может быть добавлено точное наименование конкретной записи, которая подлежит
удалению. Естественно, в приложениях AS P.NET функция не используется.
Dir. Возвращает наименование файла, включая его расширение. В качестве
необязательных параметром может быть передана строка, включающая в себя путь к
каталогу, в котором необходимо найти файл, и шаблон его имени, а также
атрибуты файла. Если эти параметры не задаются, в качестве результата будет
возвращено наименование первого найденного файла в текущем каталоге. Так,
функция Dir("C:docs*.txt") вернет наименование первого найденного текстового
файла в каталоге docs, находящемся на диске С. Если в данном каталоге нет
файлов с подобным расширением, будет возвращена пустая строка.
Environ. Возвращает значение системной переменной окружения, наименование
которой передано функции в виде строки. Возвращается также значение типа
string.
eof. Функция возвращает логическое значение, сигнализирующее о достижении
границы файла, открытого для чтения. В качестве значения функции передается
значение типа integer, являющееся дескриптором читаемого файла. В том случае,
если указатель позиции, с которой производится чтение, указывает уже на конец
файла, функция возвращает значение True.
ErrorToString. Функция конвертирует код ошибки в текстовое обозначение
ошибки. Естественно, при этом используются официальные англоязычные
наименования ошибок. Чаще всего применяется для вывода информации в модальных
окнах, сообщающих об ошибках, поэтому используется в приложениях ASP.NET
крайне редко.
FileAttr. Функция возвращает режим доступа к открытому ранее файлу. В
качестве значения передается целочисленный дескриптор искомого файла.
Возвращаемое значение имеет тип integer.
Fiieciose. Закрывает открытый для доступа файл. В качестве параметра
передается целочисленный дескриптор открытого файла.
FileCopy. Копирует файл в другой каталог. В качестве параметра в функцию
передаются полное имя копируемого файла и путь к каталогу, куда необходимо
скопировать этот файл. Если при этом необходимо сменить имя файла, во втором
параметре может быть указан не просто путь к каталогу, а полное наименование
создаваемого файла.
FiieDateTime. Возвращает значение типа Date, в котором показывается дата
создания или последней модификации файла, полный путь к которому передается
как строка в качестве параметра функции.
FiieLen. Возвращает объем файла в байтах. Полный путь к файлу передается в
функцию как параметр. Возвращаемое значение имеет тип Long.
FiieOpen. Открывает файл. В качестве параметра функции передается
целочисленное значение, указывающее дескриптор открываемого файла (другими
словами об уникальности дескрипторов файла должен заботиться сам разработчик),
имя открываемого файла и вариант доступа к нему.
Fiiewidth. Задает длину строк, которые будут считываться из файла,
открытого для чтения. В качестве параметров функции передаются дескриптор
открытого файла и целочисленное значение, которое и устанавливает длину
читаемых строк.
Fix. Обрезает дробную часть у числового значения, переданного в качестве
параметра, и возвращает целое число. Необходимо учитывать, что эта функция не
округляет параметр до ближайшего целого, а просто отбрасывает его дробную
часть.
Formatcurrency. Функции передается некая строка или объект как параметр, а
функция преобразовывает его в финансовый формат. Особенности формата
обуславливаются установками операционной системы.
FormatDateTime. Преобразовывает переданный параметр в строку, которая
содержит дату. Особенности формата даты, как и в предыдущей функции,
определяются установками операционной системы.
FormatNumber. Преобразовывает в строку числовое значение, переданное в
качестве параметра.
FormatPercent. Функция форматирует переданный параметр как строку с
добавлением знака процента.
FreeFiie. Функция не имеет параметров. Выдает целочисленное значение,
которое можно использовать как дескриптор для открываемого файла, т. е. данная
функция фактически возвращает свободный дескриптор, который затем разработчик
должен использовать для открытия файла.
GetAiisettings. Функция возвращает двумерный массив строк, состоящий из
наименований записей некоего приложения в реестре операционной системы и их
значений. В качестве параметров функции передаются официальное наименование
приложения, записи которого необходимо получить в реестре, и наименования
раздела реестра, откуда будут извлечены искомые данные.
GetAttr. Функция возвращает атрибуты файла, путь к которому передан
функции в качестве параметра. Возвращаемое значение имеет перечислимый ТИП
FileAttribute.
Getchar. Функция возвращает символ с указанным порядковым номером из
строки. Сама строка, откуда извлекается символ, и порядковый номер
извлекаемого символа передаются функции в качестве параметров.
GetExeption. Функция возвращает исключение, которое могло произойти в
результате действий приложения. Функция применяется только в составе объекта
егг. Возвращаемое значение имеет тип Exception.
Getsetting. Возвращает значение одного конкретного ключа в реестре
операционной системы для некоего приложения. В качестве параметров функции
передаются наименование приложения, которому соответствует данный ключ, секция
реестра и наименование ключа, значение которого будет возвращать функция.
Hex. Возвращает строку, в которой записано шестнадцатеричное представление
целого числа, переданного функции в качестве параметра. Параметр может иметь
любой целочисленный тип, от Byte до Long. Также может быть передан параметр
типа object, но в этом случае ответственность за передачу правильного значения
перекладывается на разработчика. В том случае, если передано не целое число,
параметр будет округлен до ближайшего целого.
Hour. Функция выделяет из параметра, имеющего тип DateTime, час и
возвращает его номер в качестве значения, имеющего тип integer. Результат,
естественно, лежит в промежутке от нуля до двадцати трех.
iif. Функция является аналогом условного оператора if. В качестве
параметров ей передается логическое условие и два значения, одно из которых
она вернет в качестве результата. Эти два параметра имеют тип object, т. е.
фактически, разработчик может использовать любой тип. В том случае, если
переданное как первый параметр, логическое значение истинно, функция
возвращает второй параметр. Если логическое значение ложно, возвращается
третий параметр.
input. Функция читает данные из открытого файла. В качестве параметров
функции передается целочисленный дескриптор файла и та переменная, в которую
будет записан прочитанный блок информации из файла. Соответственно, функция
ничего не возвращает.
inputBox. Функция отображает диалоговое окно с одним полем для ввода
пользователем текстовых данных. В качестве обязательного параметра функции
передается строка текста, которая будет отображена в данном диалоговом окне.
Функция возвращает введенный пользователем текст как строку, т. е.
используется тип string. Естественно, в приложениях ASP.NET данная функция не
понадобится.
inputstring. Функция читает строку из файла, открытого в режиме input или
Binary. В качестве параметров функции передаются целочисленный дескриптор
файла, из которого будет осуществляться чтение, и количество читаемых
символов, тоже представляемое как значение типа integer. Функция возвращает
значение типа string, т. е. прочитанную строку заданной длины.
instr. Функция возвращает целочисленное значение, указывающее, с какой
позиции одна строка входит в качестве подмножества в другую строку. В качестве
первого параметра функции передается целое число, указывающее позицию в
основной строке, откуда следует начинать сравнение, вторым параметром является
та самая строка, в которой мы ищем вхождение подстроки, третьим параметром
передается строка, которую мы ищем в исходной строке.
inStrRev.
Эта функция, как и предыдущая, возвращает позицию, с которой одна строка
входит в другую, но при этом поиск и сравнение производятся с правого конца
искомой строки. Впрочем, в качестве третьего параметра так же можно передать
целое число, устанавливающее позицию, с которой будут производиться поиск и
сравнение. Естественно, позиция в данном случае отсчитывается от правого края
искомой строки.
int. Отбрасывает дробную часть переданного в качестве параметра числа,
приводя его к целому. Сходна с функцией Fix. Разница проявляется в обработке
отрицательных значений. Функция int приводит значение параметра к меньшему
целому числу, а именно, значение —5,5 будет преобразовано данной функцией в
—6.
isArray. Проверяет, является ли переданный ей параметр массивом. Если
параметр действительно является массивом, функция возвращает значение True. В
ином случае функция возвращает значение False.
isDate. Проверяет, может ли переданный функции параметр быть преобразован
в дату. Точнее, в значение типа Date. Функция возвращает логическое значение
типа Boolean.
isError. Функция получает в качестве параметра некое выражение или
переменную с данным выражением. В том случае, если выполнение данного
выражения создаст нештатную ситуацию, ошибку, которая возбудит соответствующее
исключение, функция вернет булево значение True. Во всех иных случаях
возвращается значение False.
isNothing. В качестве параметра функции передается некая переменная. В том
случае, если данной переменной не присвоено какое-либо значение, т. е. она не
инициализирована, функция возвращает логическое значение True. Иначе будет
возвращено значение False.
isNumeric. Функция проверяет, может ли быть переданное в качестве
параметра значение преобразовано к какому-либо числовому типу. В тех случаях,
когда это возможно, функция возвращает значение True. Иначе будет возвращено
значение False.
Join. В качестве обязательного параметра функции передается массив строк.
Сама функция объединяет все строки из массива в одну и возвращает эту большую
строку в качестве результата своей работы. Вторым параметром может быть
передана строка или символ, которые будут разделять строки из отдельных
элементов массива. По умолчанию в качестве разделителя используется обычный
пробел. Однако если принудительно в качестве разделителя задать пустую строку,
то элементы строчного массива не будут отделены друг от друга.
Kin. Функция принудительно удаляет файл, путь к которому передан
функции в качестве параметра, с диска системы пользователя.
Lease. Функция переводит строку или символ, переданные ей в качестве
параметра, в нижний регистр символов.
Left. В качестве параметров функция получает строку и целое число,
обозначающее количество символов. Результатом работы функции будет строка,
содержащая искомое количество символов, которые скопированы у исходной строки,
начиная с ее первого символа, т. е. функция возвращает подстроку первого
параметра, которая начинается с его левого края.
Len. В качестве параметра функция принимает значения всех числовых и
строчных типов. Функцией возвращается длина в символах строчного представления
переданного параметра.
Lineinput. Читает одну строку из файла, открытого для чтения. В качестве
параметра функции передается целочисленный дескриптор файла, из которого будет
производиться чтение. Функция возвращает значение типа String.
loc. Функция возвращает позицию, с которой будет производиться запись или
чтение в открытом файле. Соответственно, возвращаемое значение имеет тип Long.
В качестве параметра функции передается целочисленный дескриптор искомого
файла.
Lock. Закрывает файл для других процессов. Обычно применяется в тех
случаях, когда необходимо произвести запись в файл, и необходимо, чтобы во
время записи иные приложения и процессы не изменяли содержимое файла. После
завершения работы критического участка, блокировка с файла обычно снимается. В
качестве параметра функция принимает целочисленный дескриптор блокируемого
файла.
lof. Функция возвращает значение типа Long, в котором содержится объем
открытого для доступа файла в байтах. Функция может применяться для измерения
длин только открытых файлов. Соответственно, в качестве параметра в функцию
передается целочисленный дескриптор файла.
LSet. Функции передается в качестве параметров строка и целое число.
Функция возвращает строку, которая является подстрокой первого параметра.
Длина подстроки определена вторым параметром-числом. При этом подстрока
составляется начиная с левого края строки-параметра.
LTrim. В качестве параметра функции передается строка. Функция обрезает
пробелы в начале переданной строки, если таковые есть, и возвращает строку без
начальных пробелов.
Mid. В качестве параметра функции передается строка. Функция возвращает
подстроку, опираясь на второй и третий параметры, являющиеся целыми числами.
Второй параметр обозначает позицию символа исходной строки, начиная с которого
будет создаваться возвращаемая строка. Третий параметр является длиной
возвращаемой подстроки.
Minute. Функция выделяет минуты из параметра функции, имеющего тип
DateTime. Возвращаемое значение имеет тип integer и находится в промежутке от
нуля до пятидесяти девяти.
П MkDir. Функция создает каталог, полное наименование которого передается
ей в качестве параметра.
Month. Функция выделяет номер месяца из даты, переданной в качестве
параметра. Параметр, естественно, имеет значение DateTime. Возвращаемое
значение имеет тип integer и находится в промежутке от единицы до двенадцати.
MonthName. Функция возвращает строку с наименованием месяца, порядковый
номер которого передан ей в качестве параметра. Данный параметр должен быть
целочисленным и находится в промежутке от единицы до двенадцати. В ином случае
будет возвращена пустая строка.
MsgBox. Функция отображает диалоговое окно. Текст сообщения диалогового
окна передается в качестве параметра типа string. Естественно, в приложениях
ASP.NET данная функция не используется.
Oct. Возвращает строку, в которой записано представление целого числа в
восьмеричной системе исчисления, переданного функции в качестве параметра.
Параметр может иметь любой целочисленный тип, от Byte до Long. Также может
быть передан параметр типа object, но в этом случае ответственность за
передачу правильного значения перекладывается на разработчика. В том случае,
если передано не целое число, параметр будет округлен до ближайшего целого.
Print. Записывает одну или несколько строк в файл, открытый для записи. В
качестве параметра функции передается целочисленный дескриптор файла и список
записываемых строк, разделенных запятыми.
Printline. Фактически идентична предыдущей функции, но при записи строк в
файл добавляет к каждой строке символы перевода каретки, что позволяет более
корректно отображать записанные ранее строки в текстовых контейнерах.
QBColor. Функция принимает в качестве параметра целочисленное значение от
нуля до пятнадцати, ассоциирует с ним один из шестнадцати стандартных цветов
WWW и возвращает целое число, соответствующее RGB-коду этого цвета.
Rename. Функция переименовывает файл или каталог. В качестве первого
параметра функции передается строка, содержащая текущее имя искомого файла или
каталога, а второй параметр содержит строку с новым именем.
Replace. Функция находит в строке, переданной как параметр, некую
подстроку и меняет ее на другую заданную последовательность символов.
Первым параметром передается
искомая строка, в которой будет производиться поиск и замена. Второй параметр —
подстрока, которую будет необходимо заменить. Третий параметр содержит строку,
которой будет заменяться найденная подстрока.
Reset. Функция закрывает все
файлы, открытые приложением.
rgb. Функция возвращает целочисленное значение, обозначающее некий цвет,
RGB-код которого передан функции в качестве параметра. Точнее, передается три
параметра — насыщенность красного, зеленого и синего цветов соответственно.
Данные параметры являются целыми числами и находятся в промежутке от нуля до
двухсот пятидесяти пяти.
Right. В качестве параметров функция получает строку и целое число,
обозначающее количество символов. Результатом работы функции будет строка,
содержащая искомое количество символов, которые скопированы у исходной строки,
начиная с ее последнего символа, т. е. функция возвращает подстроку первого
параметра, которая начинается с его правого края.
RmDir. Функция удаляет каталог, наименование которого передано ей в
качестве параметра.
Rnd. Возвращает случайное число. Возвращаемое значение имеет тип
Single.
RSet. Фактически идентична функции Right. Но есть одно отличие. Если
указанный размер подстроки больше, чем размер исходной строки, возвращаемая
подстрока будет дополнена до необходимого размера пробелами слева.
RTrim. В качестве параметра функции передается строка. Функция обрезает
пробелы в конце переданной строки, если таковые есть, и возвращает строку без
конечных пробелов.
saveSetting. Функция предназначена для создания записей в реестре
операционной системы Windows. Функции передается четыре параметра типа string.
В качестве первого параметра передается наименование приложения, второй
параметр содержит наименование раздела реестра, третий — наименование
записи-ключа, а четвертый — собственно, значение этого ключа.
Second. Функция выделяет секунды из параметра функции, имеющего тип
DateTime. Возвращаемое значение имеет тип integer и находится в промежутке от
нуля до пятидесяти девяти.
seek. Функция возвращает текущую позицию чтения или записи в открытом
ранее файле. Возвращаемое значение имеет тип Long. В качестве параметра
передается целочисленный дескриптор файла, текущую позицию которого
разработчик желает получить.
Самоучитель
setAttr. Функция устанавливает атрибуты для какого-либо файла. В качестве
параметров передаются строка, содержащая полное наименование файла, включая
путь к нему, а также устанавливаемый атрибут для этого файла.
shell. Запускает приложение как процесс. В качестве обязательного
параметра передается полное наименование исполняемого файла. Очевидно, в
приложениях ASP.NET данная функция не найдет применения.
Space. Функция возвращает строку, состоящую из пробелов. Количество
пробелов задается целочисленным параметром.
spc. Функция используется вместе с функциями печати Print и PrintLine.
Добавляет некоторое количество пробелов перед следующей выводимой строкой.
Количество пробелов определяется целочисленным параметром.
split. Функция получает в качестве параметра строку, разбивает ее на
несколько подстрок и возвращает их в качестве строчного массива. По умолчанию
в качестве разделяющего символа используется пробел, но разработчик может
воспользоваться вторым необязательным параметром, в котором необходимо указать
символ-разделитель.
str. Преобразовывает переданное в качестве параметра числовое значение в
строку.
strComp. Функция сравнивает две строки, переданные ей в качестве
параметров. В том случае, если строки совпадают, возвращается нулевое
значение.
strConv. Функция предназначена для конвертирования строки по установленным
правилам. В качестве первого параметра передается строка, предназначенная для
обработки, а второй параметр устанавливает механизм ее изменения. В качестве
второго параметра используется значение из перечислимого набора
Microsoft.VisualBasic.VbStrConv.
Значение vbstrConv.None указывает, что строка останется без изменений.
Значение vbstrConv. uppercase преобразовывает все символы обрабатываемой
строки в верхний регистр. Для перевода всех символов в нижний регистр
используется значение vbstrConv.Lowercase. А значение vbstrConv.properCase
переводит в верхний регистр только первый символ каждого слова.
strDup. Функция создает и возвращает строку, состоящую из нескольких
повторений одного и того же символа. В качестве первого параметра передается
целое число, указывающее, сколько раз будет повторен символ, по сути, это
длина создаваемой строки. Второй параметр — сам символ, из которого будет
создаваться строка.
strReverse. Функция принимает в качестве параметра строку. В результате
действия функции возвращается строка, которая состоит из символов
строки-параметра в обратном порядке, другими словами, исходная строка просто
прочитывается в обратном порядке, и в таком виде записывается в результирующую
строку.
Tab. Функция используется вместе с функциями печати Print и Printline.
Добавляет некоторое количество символов табуляции перед следующей выводимой
строкой. Количество символов табуляции определяется целочисленным параметром.
Впрочем, параметр не является обязательным, поэтому если использовать функцию
без него, позиция печати просто будет смещена вправо.
TimeSerial. Функция возвращает значение типа Date, для которого явным
образом устанавливается только время. Функции передается три целочисленных
параметра, которые устанавливают для возвращаемого значения часы, минуты и
секунды соответственно.
Timevaiue. Функция возвращает значение типа Date, для которого явным
образом устанавливается только время. При этом в качестве основы для установки
времени используется параметр типа string, в котором записано представление
времени в формате, присущем операционной системе.
Trim. В качестве параметра функции передается строка. Функция обрезает
пробелы в конце и начале переданной строки, если таковые есть, и возвращает
строку без начальных и конечных пробелов.
TypeName. Функция принимает в качестве параметра значение любого
стандартного типа и возвращает наименование типа параметра.
ucase. В качестве параметра функции передается текстовая строка и символ,
а функция переводит все символы в верхний регистр и возвращает результирующую
строку.
Unlock. Снимает блокировку с файла, наложенную перед этим при помощи
функции Lock. В качестве параметра функция получает целочисленный дескриптор
ранее открытого файла.
vai. Функции передается строка в качестве параметра. Функция выделяет из
нее цифры и формирует из них число, которое и возвращает. Возвращаемое
значение может иметь тип Double или Long.
weekDay. Функция работает с параметром типа DateTime и возвращает
целочисленное значение, находящееся в промежутке от единицы до семи,
обозначающее номер дня недели, на который приходится дата, переданная как
параметр.
WeekdayName. Функция обычно применяется в паре с предыдущей. В качестве
параметра ей передается целочисленное значение от единицы до семи,
обозначающее номер дня недели, а в качестве результата возвращается значение
типа string, содержащее наименование этого дня недели. Естественно,
используются стандартные установки операционной системы.
wrj,te. Функция записывает информацию в открытый файл в виде текста. В
качестве параметров передаются целочисленный дескриптор файла и список
записываемых значений, разделенных запятой.
writeLine. Функция фактически идентична только что рассмотренной функции
write, однако при записи строк в файл, она добавляет к каждой строке символ
возврата каретки.
Year. Функция выделяет номер года из параметра функции, имеющего тип
DateTime. Возвращаемое значение имеет тип integer и находится в промежутке от
нуля до девяти тысяч девятьсот девяноста девяти.
И на этом мы заканчиваем список
функций, входящих в состав языка Visual Basic .NET. Некоторые функции мы не
рассмотрели в связи с тем, что в приложениях ASP.NET они не смогут найти
применения. Впрочем, если быть точным, то в разделе, посвященном конструкциям
управляющей логики, мы тоже не рассматривали очень распространенный оператор go
to, который явно устарел и может только повредить создаваемым приложениям. Дело
в том, что язык Visual Basic .NET в целях совместимости унаследовал достаточно
много функций и конструкций от предыдущих версий языка Visual Basic, и
разработчикам совершенно нет нужды использовать устаревшие приемы работы.
На этом мы закончим обзор языка
Visual Basic. Конечно, он далеко не полон, так как мы не рассмотрели вопросы
объявления собственных процедур и функций, объектную модель языка и обработку
исключений, но ведь цель этой книги не полное рассмотрение языка Visual Basic .NET,
а знакомство с технологией ASP.NET. Для того чтобы рассмотреть этот язык
программирования в полном объеме, следует писать отдельную книгу, поэтому
ограничимся его основами и перейдем к рассмотрению ASP.NET.
HTML 5 — это грядущее обновление гипертекстового языка разметки, основного
способа создания контента для размещения его во всемирной паутине. Разработка
HTML остановилась в 1999 году, на версии HTML 4.01 и с тех пор web-содержимое
изменилось так, что текущие спецификации HTML перестали соответствовать
сегодняшним требованиям.
HTML 5 нацелен на то, чтобы увеличить функциональную совместимость HTML и
соответствовать растущим требованиям разнообразного и смешанного web-контента.
HTML 5 так же нацелен на устранение недостатков четвертой версии. В этой статье
мы взглянем на 5 новых интересных вещей в HTML 5.
Элемент управления ListView был представлен в .Net Framework 3.5 как замена
устаревшему GridView. Новый элемент имеет более расширенный функционал, чем его
предшественник, но в тоже время лишен некоторых внутренних механизмов, что
впрочем целиком следствие из расширенной универсальности ListView. Среди отличий
ListView и GridView можно назвать и гибкую настройку разметки, что позволяет
выводить данные не только в табличном виде, но и вообще в любом каком пожелает
программист. Благодаря шаблонам ItemTemplate, EditItemTemplate,
InsertItemTeplate можно настроить внешний вид при любом из состояний ListView:
редактировании или выборе элемента.
Компания Стимулсофт предоставляет для разработчиков мощный набор инструментов
для создания отчетов для Microsoft Visual Studio .Net 2005 и 2008; эти инструменты доступны
как для Windows Forms, так и для Web Forms. Это генератор отчетов Stimulsoft Reports.Net.
Генератор отчетов Stimulsoft Reports.Net имеет ряд особенностей: простая работа с дизайнером
отчетов, полная поддержка экспорта в PDF, Word, Excel и многие другие форматы. Crystal Report
и Microsoft Reporting Service – очень хорошие программные продукты для повседневной работы,
но, если Вам необходимо создать отчеты с поддержкой кросс-табов, drill down, Ajax, штрих-кодов
и возможностью подключения одновременно более одного источника данных, то Stimulsoft Reports.Net поможет Вам
сэкономить массу времени. Также, данный генератор отчетов позволяет пользователям создавать свои собственные
отчеты любой сложности. И все эти особенности делают Stimulsoft Reports.Net хорошим выбором в
сфере программных продуктов для Business Intelligence.