Различия между константами vbLf, vbCrLf и vbCr

Я использовал такие константы, как vbLf, vbCrLf & vbCr в MsgBox; он производит такой же вывод в MsgBox (текст «Hai» появляется в первом абзаце, а слово «добро пожаловать» появляется в следующем абзаце)

MsgBox("Hai" & vbLf & "Welcome")
MsgBox ("Hai" & vbCrLf & "Welcome")
MsgBox("Hai" & vbCr & "Welcome")

Я знаю, что vbLf, vbCrLf & vbCr используются для функций печати и отображения.

Я хочу узнать разницу между константами vbLf, vbCrLf и vbCr.


person Lawrance    schedule 01.12.2014    source источник


Ответы (2)


 Constant   Value               Description
 ----------------------------------------------------------------
 vbCr       Chr(13)             Carriage return
 vbCrLf     Chr(13) & Chr(10)   Carriage return–linefeed combination
 vbLf       Chr(10)             Line feed
  • vbCr: - возврат к началу строки
    Представляет символ возврата каретки для функций печати и отображения.

  • vbCrLf: - аналогично нажатию Enter
    представляет символ возврата каретки в сочетании с символ перевода строки для функций печати и отображения.

  • vbLf: - перейти к следующей строке
    Представляет символ перевода строки для функций печати и отображения.


Дополнительные сведения см. В Класс констант

person Vivek S.    schedule 01.12.2014
comment
Является ли vbNewLine простым псевдонимом для CRLF или нечетким устаревшим зависящим от платформы символом новой строки? - person dakab; 17.12.2019
comment
+ 1для простейшего раскрытия концепции CRLF: аналогично нажатию Enter. - person dakab; 17.12.2019

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

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

  1. переместите печатающую головку обратно влево. На практике в пишущей машинке это делается путем перемещения рулона, несущего бумагу («каретку»), полностью вправо - печатающая головка зафиксирована. Это возврат каретки.
  2. переместите бумагу вверх на ширину одной линии. Это перевод строки.

В компьютерах эти два действия представлены двумя разными символами: возврат каретки - CR, символ ASCII 13, vbCr; перевод строки - LF, символ ASCII 10, vbLf. В старые времена телетайпов и строчных принтеров принтеру необходимо было отправлять эти два символа - традиционно в последовательности CRLF - для начала новой строки, и поэтому комбинация CRLF - vbCrLf - стала традиционной последовательностью окончания строки в некоторых вычислительных средах.

Проблема, конечно, заключалась в том, что было столь же разумно использовать только один символ для обозначения конца строки и чтобы терминал или принтер выполняли действия как возврата каретки, так и перевода строки автоматически. И поэтому, прежде чем вы это узнали, у нас было 3 разных допустимых окончания строк: только LF (используется в Unix и Macintosh), только CR (очевидно, используется в старых Mac OS) и комбинация CRLF (используется в DOS и, следовательно, в Windows). Это, в свою очередь, привело к осложнениям программ DOS / Windows, имеющих возможность открывать файлы в text mode, где любая пара CRLF, считанная из файла, преобразовывалась в одну CR (и наоборот при записи).

Итак - чтобы сократить (слишком) длинный рассказ - существуют исторические причины существования трех отдельных разделителей строк, которые сейчас часто не имеют значения: и, возможно, лучший способ действий в .NET - использовать Environment.NewLine, что означает, что кто-то else решил за вас, что использовать, и в будущем следует уменьшить проблемы с переносимостью.

person AAT    schedule 01.12.2014
comment
Одно дополнение к этому ... с давних времен ... было обычным использовать возврат каретки сам по себе, чтобы вы могли НАБИРАТЬ НАБОР для текста, который вы уже напечатали. Это часто использовалось для добавления выделения или других пометок, например, для обозначения зачеркнутого слова набирались избыточные символы ----. Когда появилась пишущая машинка Ball с изменяемым шрифтом, вы даже могли изменить шрифт определенных слов в предложении таким образом. - person Trevor_G; 20.02.2017
comment
Это также вызывает еще одно историческое различие. Backspace VS Delete. На компьютерах. Backspace на компьютере перемещает курсор на одну позицию назад и удаляет предыдущий символ. Это отличается от традиционной роли, которая заключалась в том, чтобы переместиться на одну позицию назад и НЕ удалить, а перепечатать. - person Trevor_G; 20.02.2017