Смекни!
smekni.com

Основы Visual Basic 50 (стр. 2 из 4)

Встроенные функции

Особое значение имеют строковые функции, т.к. в полях ввода информация хранится в текстовом формате или в формате ariant. Использование же неявных преобразований типов из Variant часто приводит к проблемам и является более медленным.

Строковые функции:

= Space (число пробелов) - выдает строку, состоящую из одних пробелов, причем число символов в строке определяется параметром в скобках.

= String (число, строковое выражение $) - формирует строку, содержащую одинаковые символы.

Например, X$=String (10, “z”) - 10z

= Len (строковое выражение) - длина текущей строки с проблемами и напечатанными символами.

= Mid (строка, начало [, длина])

Mid (“Visual Basic”, 1,6) = “Visual”

Mid (“Visual Basic”, 8,6) = “Basic”

Mid (“Visual Basic”, 8) = “Basic”

Пример. Подсчет числа точек в строке

Points % = 0

Length % = Len (Text $)

For I% = 1 to Length %

If Mid (Text $, I%, 1) = “.” then

Points $ = Points $ + 1

End If

Next I%

= Left (cтрока, № до позиции)

= Right (строка, с № позиции)

Функцию Mid можно использовать для изменения содержания внутри текущей строки. Например

X $ = “Best Basic”

Mid (X $,1,5) = “Quick”

какое количество символов

с какого символа будет взято из новой строки

вставляется новая

строка поверх части старой

= Insert ([начальная позиция], строка для поиска, подстрока)

является ли данная строка частью другой строки, выдает номер позиции, с которой начинается подстрока.

Text $ = “QuickBasic”

X $ = Instr (1, Text $, “Basic”)=6.

Если подстрока не найдена Instr возвращает нулевое значение (False).

Пример.

If Instr (Text $, “?”) then

Print “символ найден”

Else

Print “Не найден”

End If

= LСase, = UСase - преобразует все символы строки в нижний (верхний) регистр

Вместо Lcase $ Ucase$

= Str lomp - для сравнения строк

Пусть X = StrComp (A$, B$) =

Если A$ или B$ пуста, то х=NULL

Если использовать StrComp (A$,B$,1) - регистр не учитывается, а если StrComp (A$,B$,0) - регистр учитывается.

= Trim (строка $) - уничтожает пробелы начале и конце строки

LTrim (строка $) - уничтожает пробелы в левой части строки

RTrim(строка $) - уничтожает пробелы в правой части

Все строковые функции, за исключением Mid, не изменяют строку, а создают ее копию и потом с ней работают.

Управляющие структуры в программе

Определенные циклы

For ___ Next

For I% = 1 to 10 (% - целочисленный тип для ускорения работы цикла)

Print I%

Next I%

Цикл завершается, не в тот момент, когда значение счетчика равняется конечному, а когда оно превышает его.

Пример. Печать всеми доступными шрифтами экрана.

Private Sub Form_Click()

Dim I As Integer

For I=0 to Screen.FontCount - 1

FontName = Screen.Fonts (I)

Print “Это шрифт”; Screen.Fonts (I)

Next I

End Sub

Неопределенные циклы

Не выполняются фиксированное число раз. Цикл может выполняться или нет в зависимости от результата, вычисляемого внутри цикла

Do

Выражение

Loop Until выполняется условие

Пример. Проверка пароля

Private Sub Form_Load ()

Do

X$ = InputBox$ (“Пароль ?”)

Loop Until X$ = “VB”

End Sub

Для остановки бесконечного процесса используют клавиши “Break” или Run|End или закрыть приложение. В программе можно использовать оператор Exit Do (или Exit For), которые переводят программу к оператору следующему после цикла.

Сложные неопределенные циклы

В неопределенных циклах проверка происходит в конце цикла и счетчика увеличивается еще на 1. Иногда это вызывает лишнее обновление счетчика. Можно передвинуть проверку условия на начало цикла:

Do Until условие

Тело цикла Выражение

Loop

Do While

Do

Loop Until аналогичен

Do

Loop While условие

Пример.

Do Do

Loop Until N>5 ? Loop While N <=5

Do While

Do

Выражение

Loop While условие

или

Do While условие

Выражение

Loop

В таких циклах можно объединять несколько условий, например

Do While X<=0 and txtDisplay.Text=“ “

?

?

Loop

Цикл While /Wend

While условие

. . . . .

Wend

Например, While x>0

S = S+x

Wend

Может быть несколько вложенных циклов. Любой Wend относится к ближайшему While. Do __ Loop дает структуру и гибкость цикла.

Условные операторы

If условие Then оператор

Например, If N>=0 and N<=9 Then Print “Ok”

Оператор Select Case

Позволяет обрабатывать несколько вариантов выбора.

Select Case переменная или выражение

Case оператор проверки условия

действие 1

.

.

.

Case . . . . . .

действие n-1

End Select

Пример:

Select Case Ball

Case Is < 13 позволяет проверить значение переменной

Grade = 2

Case Is < 18

Grade = 3

Case Is < 22

Grade = 4

Case Else

Grade = 5

End Select

Пример 1. If ThenElse

Private Sub Form_QueryUnload(Cansel As Integer, UnloadMode As Integer)

X % = MgBox(“Вы уверены?”, VbYesNo)

If X % = VbNo Then

Cancel = True

Else

Cancel = False

End IF

End Sub

Пример 2.

If optColor1.Value Then

Color$ = “Красный”

Else If optColor2.Value Then

Color$ = “Зеленый”

Else If optColor3.Value Then

Color$ = “Синий”

Else

Color$ = “Белый”

End If

Пример:

Select Case Den

Case 1

Print “Пн”

Case 2

Print “Вт”

.

.

.

Case 7

Print “Вс”

End Select

В фразе Case можно задавать значения переменной в виде диапазона

Select Case Den

Case 1 to 5

Print “Рабочий день”

Case Else

Print “Выходной”

End Select

либо перечислением возможных значений

Select Case Den

Case 6,7

Print “Выходной”

Case Else

Print “Рабочий день”

End Select

Массивы

2 вида массивы: управляющие и массивы переменных (обычные массивы или списки).

Управляющие массивы состоят из нескольких однотипных элементов управления, использующих общие свойства, по отличающимся порядковым номерам или индексам. Может быть не более 255 элементов в таком массиве. При этом новые элементы на форме помещаются на место исходных элементов управляющего массива. Поэтому при размещении на форме их следует позиционировать и двигать, чтобы они не перекрывали друг друга. Например, можно создать на форме матрицу надписей или текстовых полей.

Одномерные массивы или списки определяются именем и положением элемента в списке. Например данные о выпуске продукции за 12 месяцев.

Могут быть фиксированные и динамические списки. Размеры их могут быть велики и определяются объемом свободной памяти.

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

Динамические списки более гибки в работе.

Списки могут быть видимыми всему приложению, данной форме (модулю) или только одной процедуре.

Создание фиксированного списка:

а) в форме (модуле). Описание помещается в разделе деклараций формы (модуля)

Dim Massiv$(20)

доступен любой процедуре модуля или формы;

б) в пределах всего проекта (глобальный)

Public Massiv(20) As String - 21 элемент от 0 до 20

или Global

в) локальный массив, который сохраняется до следующего вызова процедуры

Private Sub ...........

Static Massiv A(20)

Создание динамических массивов.

а) в форме

В размере декларации формы Dim DYNMAS() As String

А внутри процедуры выделяем нужный размер

Private Sub ...........

Dim N %

ReDim DYNMAS(N) As String

При работе команды ReDim информация в массиве теряется.

Для сохранения информации при изменении размера массива

ReDim Preserve DYNMAS(N+1) As String

или (N-1) удалит последний элемент

б) Глобальный динамический список, видимого в пределах всего проекта

Public DYNMAS() As String

или Global

Далее можно использовать ReDIM в любой процедуре всего проекта.

Ввести данные в массив можно с помощью INPUT BOX, текстового поля.

Для изменения нумерации в массиве не с 0, а с 1 - оператор Option Base 1 в разделе деклараций формы (модуля).

Можно задавать массив диапазоном значений

вместоDim A(19)

Dim A (1980 TO 2000)

Освобождение ОП от динамический массивов Erase DYNMAS/ Для фиксированных списков Erase только очищает массив.

Окна ввода

Окна ввода- это другая возможность, помимо текстовых полей, для ввода информации. Функция InputBox$ выводит на экран модальную диалоговую панель, которая в отличие от текстовых полей имеет фиксированный размер окна. У окна ввода есто строка заголовка и 4 элемента: подсказка, командные кнопки OK и Cancel и поле ввода. Синтаксис функции: Строковая переменная=

InputBox(“подсказка”[,заголовок][поумолчанию][,X][,Y][,файл справки, контекст])

где подсказка- текстовая строка или строковая переменная (1024 символа),

заголовок -содержание строки заголовка окна,

по умолчанию - начальное содержимое окна ввода,

X,Y- расстояние между левым (верхним) краями экрана и окна ввода. Если параметры не заданы, то окно располагается по центру на 1/3 высоты экрана.

Например, MyInput$=InputBox(“Введи число”, “Запрос”,”0”,100,200)

Вывод информации

Для вывода информации непосредственно на форме используется метод Print. Его синтаксис:

Имя формы.Print выражение

Например: frmHello.Print “Привет !”

VB5 выводит информацию, начиная с того места, которое определяют свойства CurrentX и CurrentY- горизонтальная и вертикальная позиции. При использовании метода Cls для очистки содержимого формы CurrentX и CurrentY=0 и метод Print выводит информацию, начиная с левого верхнего угла.

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

ИмяОбъекта-контейнера.Font.свойство=значение

?Например, frmHello.Font.Name=“Arial”

frmHello.Font.Size =20

frmHello.Font.Bold=True и т.д.

В качнстве объекта- контейнера могут быть командная кнопка, форма, надпись, поле ввода. Но только формы и графические окна могут работать одновременно с несколькими шрифтами. В остальных элементах управления изменение шрифта влияет на весь текст.

Печать табличных данных

В VB5 печать текста можно осуществлять в заданном формате. Зона имеет размер в 14 символов. В основном зоны используются при печати непропорциональными шрифтами типа Courier, т.к. каждая колонка по ширине равна среднему значению ширины символа. Если параметры в методе Print разделены запятыми, то данные выводятся в нескольких зонах. Например: