2014-12-01 11 views
26

ho usato come costanti vbLf, vbCrLf & vbCr in MsgBox; produce stesso output in un MsgBox (Testo "Hai" appare in un primo paragrafo e una parola "benvenuto" appare in un paragrafo successivo)Differenze tra vbLf, vbCrLf & vbCr costanti

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

So vbLf, vbCrLf & vbCr vengono utilizzati per le funzioni di stampa e visualizzazione .

Desidero conoscere la differenza tra le costanti vbLf, vbCrLf & vbCr.

risposta

33
Constant Value    Description 
---------------------------------------------------------------- 
vbCr  Chr(13)    Carriage return 
vbCrLf  Chr(13) & Chr(10) Carriage return–linefeed combination 
vbLf  Chr(10)    Line feed 
  • vbCr: - ritorno alla linea che inizia
    Rappresenta un ritorno a capo caratteri per le funzioni di stampa e visualizzazione.

  • vbCrLf: - simile a premere Invio
    rappresenta un ritorno a capo carattere combinato con un carattere di avanzamento riga per la stampa e la visualizzazione funzioni.

  • vbLf: - passare alla riga successiva
    rappresenta un carattere di avanzamento riga per le funzioni di stampa e visualizzazione.


saperne di più da Constants Class

21

Le tre costanti hanno funzioni simili al giorno d'oggi, ma diverse origini storiche, e molto di tanto in tanto si può essere richiesto di utilizzare uno o l'altro.

È necessario ripensare ai giorni delle vecchie macchine da scrivere manuali per ottenere le origini di questo. Esistono due azioni distinte necessarie per iniziare una nuova riga di testo:

  1. spostare indietro la testa di battitura a sinistra. In pratica, in una macchina da scrivere, ciò avviene spostando il rotolo che porta la carta (il "carrello") completamente verso destra - la testina di scrittura è fissa. Questo è un ritorno a capo .
  2. sposta la carta verso l'alto della larghezza di una riga. Questo è un feed di linea .

Nel computer, queste due azioni sono rappresentati da due personaggi diversi - ritorno a capo è CR, carattere ASCII 13, vbCr; l'avanzamento riga è LF, carattere ASCII 10, vbLf. Ai vecchi tempi dei teletipi e delle stampanti di linea, alla stampante dovevano essere inviati questi due caratteri - tradizionalmente nella sequenza CRLF - per iniziare una nuova riga, e quindi la combinazione CRLF - vbCrLf - diventava una sequenza di fine linea tradizionale , in alcuni ambienti di calcolo.

Il problema era, naturalmente, che era altrettanto logico utilizzare un solo carattere per contrassegnare la fine della linea e fare in modo che il terminale o la stampante eseguissero automaticamente le azioni di ritorno a capo e avanzamento riga. E così prima che tu lo sapessi, avevamo 3 diverse terminazioni di linea valide: solo LF (usato in Unix e Macintoshes), CR da solo (apparentemente usato nei vecchi Mac) e la combinazione CRLF (usata in DOS, e quindi in Windows). Questo a sua volta ha portato alle complicazioni dei programmi DOS/Windows che hanno la possibilità di aprire file in text mode, dove ogni coppia CRLF letta dal file è stata convertita in un singolo CR (e viceversa durante la scrittura).

Quindi - per tagliare una (troppo) lunga storia breve - ci sono ragioni storiche per l'esistenza dei tre separatori di riga separati, che ora sono spesso irrilevanti: e forse la migliore linea d'azione in .NET è quella di usare Environment.NewLine che significa che qualcun altro ha deciso per te quale usare e che i futuri problemi di portabilità dovrebbero essere ridotti.

+3

Un'aggiunta a questo ... dai vecchi tempi ... era normale usare il ritorno a capo su se stesso in modo da poter SOVRINARE il testo che avevi già stampato. Questo è stato spesso usato per aggiungere evidenziazioni o altri segni, ad esempio ---- i caratteri sono stati sovrascritti per indicare una parola barrata. Quando è uscito il carattere modificabile "Ball", si potrebbe persino cambiare il carattere di parole specifiche in una frase in questo modo. –

+3

Ciò porta anche a un'altra differenza storica. Backspace VS Delete. Sui computer Backspace su un computer sposta il cursore indietro di una posizione e cancella il carattere precedente. Questo è diverso dal ruolo tradizionale che era quello di tornare indietro di uno spazio e NON cancellare, ma sovrascrivere. –