Поскольку информация в полях ввода Visual Basic всегда хранится в текстовом формате, работа со строками представляется здесь более важной, чем в обычном BASIC. Для того чтобы сложить две строки вместе (т. н. конкатенация), можно использовать операторы & или +. Например:
Titles = "Queen "
Name$ = "Elizabeth "
Numeral$ = "I"
Title$ & Name$ &. Numeral$ = "Queen Elizabeth
I"
Title$ 6 Name$ & Numeral$ & Numeral$
= "Queen Elizabeth II"
Оператор & объединяет строки в том порядке, как они представлены. Поэтому, в отличие от суммирования чисел, для слияния строк важен их порядок следования. С помощью & можно складывать сколько угодно строковых значении. Ниже приведен пример с использованием уже объявленных выше переменных:
CurrentQueen$ = Title$ & Name$ & Numeral$ & Numeral$
У компьютера нет отдельного участка памяти для хранения текста, а еще одного - для чисел. Все, что поступает в память компьютера, преобразуется в числовой формат (реально - в двоичное представление). В программе помечается только, что данный участок оперативной памяти содержит закодированный текст. Обычно формат для преобразования текстовой информации в цифровую называется ASCII (American Standard Code for Information Interchange). Данный формат присваивает каждому символу соответствующее число в диапазоне от 0 до 255, хотя Windows не может вывести на экран все 255 символов и использует более ограниченный их набор ANSI (American National Standards Institute). Управляющие символы, а также специальные типа табуляции или перевода строки -имеют номера до 32. Значением функции Chr(n) является символ, соответствующий числу п из формата ASCII. Оператор
Print Chr(n)
либо выводит на экран символ, соответствующий коду ASCII, текущим шрифтом, либо имеет место особый эффект в зависимости от типа управляющего символа. Например, оператор
Print Chr(227)
выводит греческую букву "пи" на экране, если перед
этим значение FontType было установлено как MS LineDraw при помощи окна
Propoties или через Code.
Следующий пример использует
код символа кавычек ("), 34, для вывода на экран фразы, заключенной в кавычки
с обеих сторон:
Print Chr (34) ;
Print "Quoth the raven, nevermore." ;
Print Chr (34)
На экране будет выведено
"Quoth the raven, nevermore."
Print "'"'Quoth the raven, nevermore.""" ;
так как Visual Basic, в отличие от многих версий
BASIC, воспринимает два символа кавычек как один и выводит его на экран
в выражениях с оператором Print или при работе со строковыми значениями.
В Visual Basic существует функция
Asc, параметром которой является строковое значение, а результат равняется
коду ASCII для первого символа. Если строка пустая, функция выдаст ошибку
во время выполнения (run time error).
Порядок ASCII/ANSI используется
по умолчанию Visual Basic при сравнении различных строк с помощью операторов
сравнения, таких как > и <. Наиболее важным местом для применения кодировки
ASCII/ANSI является процедура обработки событий KeyPress.
В ранних версиях Visual Basic одним из основных способов использования функции Chr является формирование управляющих символов для перехода к новой строке в программах. Переход к новой строке используется при работе с многостроковыми полями ввода или при добавлении информации в информационной панели. Как и в старых печатных машинках, для перехода на новую строку необходимо проделать две операции: перевод каретки (carriage return) для возврата к первому символу строки, а затем перевод строки для перехода на следующую строку. При использовании функции Chr переход на новую строку выглядит так:
vbCrLf = Chr (13) + Chr (10)
Но теперь имеется возможность
использовать встроенную константу vbCrLf.
Например, необходимо разорвать строку в информационной
панели или в многостроковом поле ввода. Быстрее всего это реализовать с
использованием vbCrLf:
TextString$ = "Visual Basic
For Windows" + vbCrLf
TextString$ = TextString$ +
"Osborne McGraw-Hill" + vbCrLf
TextString$ = TextString$ +
"Berkeley, CA"
Textl.Text = TextString$
Кстати, может возникнуть вопрос:
почему строковые значения сначала "накапливаются", а только затем выводятся
на экран. Ответ прост: это один из основных способов ускорения работы программ
на Visual Basic.
Аналогичным образом можно ускорить формирование информационной панели, если в ней необходимо вывести несколько строк:
Message$ = "This will be on line 1."
Message = Message$ + vbCrLf + "This will be on
line 2."
MsgBox Message$
Другие полезные строковые константы
Кроме константы vbcrLf, существует
еще ряд других, не менее полезных встроенных констант (см. таблицу далее).
Все эти константы можно использовать в программах на Visual Basic вместо
соответствующих значений функций Chr$ или Chr. Однако для Microsoft Windows
применение найдут только коды для carriage return, line feed, tab и backspace.
Строки фиксированной длины представляют собой специальный тип строки, в дальнейшем часто используемый. Подобные переменные создаются при помощи оператора Dim. Вот пример:
Dim ShortString As String * 10
Dim strShort As String * 10
Дело в том, что в его постановке и выводах произведена подмена, аналогичная подмене в школьной шуточной задачке на сообразительность, в которой спрашивается:
- Cколько яблок на березе, если на одной ветке их 5, на другой ветке - 10 и так далее
При этом внимание учеников намеренно отвлекается от того основополагающего факта, что на березе яблоки не растут, в принципе.
В эксперименте Майкельсона ставится вопрос о движении эфира относительно покоящегося в лабораторной системе интерферометра. Однако, если мы ищем эфир, как базовую материю, из которой состоит всё вещество интерферометра, лаборатории, да и Земли в целом, то, естественно, эфир тоже будет неподвижен, так как земное вещество есть всего навсего определенным образом структурированный эфир, и никак не может двигаться относительно самого себя.
Удивительно, что этот цирковой трюк овладел на 120 лет умами физиков на полном серьезе, хотя его прототипы есть в сказках-небылицах всех народов всех времен, включая барона Мюнхаузена, вытащившего себя за волосы из болота, и призванных показать детям возможные жульничества и тем защитить их во взрослой жизни. Подробнее читайте в FAQ по эфирной физике.