Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
VB.doc
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
7.65 Mб
Скачать

0.7.Строковые переменные

Строковые переменные очень важны. Без них, например, невозможен разговор с компьютером. Да и вообще, значительная часть информации, с которой работает компьютер, текстовая (то есть строковая).

Создайте двухкнопочный проект с такой программой:

Dim a As Integer

Dim b As String

_____________________________

Private Sub Command1_Click()

a = 98

Debug.Print a

End Sub

_____________________________

Private Sub Command2_Click()

b = "Привет всем!"

Debug.Print b

End Sub

Сравним две процедуры.

Объявление Dim a As Integer говорит о том, что переменная a обязана иметь числовое значение, и поэтому в первой процедуре оператор a=98 записывает в ячейку a число 98.

Объявление Dim b As String говорит о том, что переменная b обязана иметь строковое (текстовое) значение, то есть ее значением будет не число, а произвольная цепочка символов, например, Привет всем! или рпН2Н(*fD6:u . Поэтому во второй процедуре оператор b ="Привет всем!" записывает в ячейку b строку Привет всем! . Оператор Debug.Print b, поскольку он обязан всегда выводить на экран содержимое ячейки b, выведет на экран текст Привет всем!

Обратите внимание, что в программе текст должен браться в двойные кавычки, а в памяти он хранится без кавычек и на экран выводится без кавычек.

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

a="Минуточку!" : Debug.Print a : a="Здравствуйте!" : a="До свидания!" : Debug.Print a

в ячейке a будут по очереди появляться строки

Минуточку! Здравствуйте! До свидания!

а на экран будут выведены строки:

Минуточку!

До свидания!

Еще пример:

a="Цикл" : Debug.Print a : a=a+a : Debug.Print a+a+a +"Конец цикла"

Поскольку знак + по отношению к строкам есть знак соединения, то a+a будет равняться "ЦиклЦикл" и это же - новое значение a. Поэтому здесь на экран будут выведены строки:

Цикл

ЦиклЦиклЦиклЦиклЦиклЦиклКонец цикла

Выражения a+a и a+a+a +"Конец цикла" в последнем примере являются ни чем иным, как строковыми выражениями, по той простой причине, что в них производятся действия, результатом которых является строка.

Строковую переменную можно задавать не только оператором присваивания, но и функцией InputBox. При вводе ставить кавычки тоже не надо. Пример:

Dim a As String

Private Sub Command1_Click()

a = InputBox("Введите какое-нибудь слово")

Debug.Print "Вы ввели слово "; a

End Sub

Обратите внимание на пробел перед второй кавычкой в операторе Debug.Print. Он нужен для того, чтобы слова при выводе не сливались.

Прежде, чем идти дальше, нужно, конечно, разобраться с хитросплетениями запятых, точек с запятыми, кавычек и пробелов в операторе Print:

0.8.Как выводить информацию оператором Print

Будем пробовать, вы тоже пробуйте:

Фрагмент программы

Результат на экране

Print

Печатается пустая строка

Print 1

1

Print 1; 66

1 66

Print 1; -2; 3.14

1 -2 3.14

Print 1, -2, 3.14

1 -2 3.14

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

Print 12345, 4, 67824, 240

Print 345, -94, 67, 240456

Print 45, 45678, 67, 0

12345 4 67824 240

345 -94 67 240456

45 45678 67 0

Еще:

Print 45; 45678, 67; 0

45 45678 67 0

Что такое элемент? Мы видели, что это может быть число. А еще что? Выражение. Проверим:

Print 1+2

3

a = 88 : Print a

88

a = 88 : Print a+1

89

a = 88 : Print a+1, а -1

89 87

В последнем операторе - два элемента.

До сих пор мы печатали только числовые переменные и выражения. Но элемент может быть и строкой:

Print "Кошка"

Кошка

Print "Кошка", "Собака"

Кошка Собака

Как видите, строку мы обязаны брать в двойные кавычки.

Print "Кошка"; "Собака"

КошкаСобака

Как видите, если между строками стоит точка с запятой, они печатается вплотную друг к другу. Числа же в этом случае все-таки разделяются пробелами.

Как все же отодвинуть собаку от кошки на пару пробелов? Очень просто - поставьте эти два пробела внутри "собачьих" кавычек перед буквой С:

Print "Кошка"; " Собака"

Кошка Собака

А можно внутри "кошачьих" после буквы а.

Visual Basic не обращает внимания, что написано внутри кавычек, и ничего там не вычисляет. Он просто копирует это на экран, включая пробелы, цифры, знаки арифметических действий и любую ерунду:

Print "№??:?№()*):%*%;*_?::"

№??:?№()*):%*%;*_?::

Print "3+2"

3+2

Print "3+2="; 3+2

3+2=5

Элемент может быть строковой переменной или выражением:

a = "Кошка" : Print a

Кошка

a = "Кошка" : Print a+а

КошкаКошка

Итак, элемент оператора Print может быть числом, числовой переменной и числовым выражением, а также строкой, строковой переменной и строковым выражением. Есть и другие типы, о них мы пока не говорим.

Вообще, в будущем, объясняя какой-нибудь новый оператор, я часто буду для простоты ограничиваться коротенькими примерами его записи, например, Print 66 или Print "Кошка". Вы должны знать, что почти везде на месте числа может стоять числовая переменная или арифметическое выражение, а на месте строки - строковая переменная или строковое выражение. И вообще, вместо константы данного типа может стоять переменная или выражение этого типа.

Обычно в операторе Print используют вперемешку строковые и числовые данные. Пусть вес поросенка хранится в памяти, в переменной Ves. Тогда распечатать его можно таким оператором:

Print "Вес поросенка =" ; Ves ; "килограммов"

Вес поросенка = 35 килограммов

Здесь вы видите три элемента, разделенные точками с запятой.

Пусть название месяца года хранится в памяти, в переменной Mes. Пусть вы хотите напечатать, что именно этот месяц у вас отпускной. Распечатать это можно таким оператором:

Print "Месяц " ; Mes ; " для меня отпускной."

Месяц май для меня отпускной.

Обратили внимание на пробелы внутри кавычек? Если бы их не было, было бы вот что:

Print "Месяц" ; Mes ; "для меня отпускной."

Месяцмайдля меня отпускной.

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

Print 1; 66,

Print 2;

Print 3

Print 4;

1 66 2 3

4

Проверьте этот пример, запустив его один раз, затем еще раз. Объясните увиденное.

Все, что здесь было сказано, относится и к оператору Debug.Print.

То, что печатать, указывается в самом операторе Print, а вот как печатать и с какого места, зависит от свойств объекта, на котором ведется печать (в нашем случае объект - форма):

Form1.CurrentX = 1000

Form1.CurrentY = 3000

Print 99

Число 99 будет напечатано на 1000 твипов правее и на 3000 твипов ниже левого верхнего угла формы.

Form1.CurrentX = 1000

Print 99

Form1.CurrentX = 1000

Print 44

Числа 99 и 44 будут напечатаны в одном месте. Получится мазня.

Form1.FontSize = 20

Размер шрифта

Form1.FontName = "Arial"

Название (начертание) шрифта

Form1.FontBold = True

Полужирный шрифт (True - назначить, False - отменить)

Form1.FontItalic = True

Курсив (наклонный шрифт)

Form1.ForeColor = vbBlue

Цвет шрифта

Form1.FontUnderline = True

Подчеркнутый шрифт

Form1.FontStrikethru = True

Перечеркнутый шрифт

Если вы установите в окне свойств формы свойство FontTransparent равным False, то через пространство между буквами не будет просвечивать поверхность формы.

У оператора Print есть еще кое-какие возможности, но, пожалуй, хватит.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]