Rubrik: Dateisystem · Dateien lesen/schreiben | VB-Versionen: VB6 | 15.02.01 |
Ersetzen von nicht druckbaren Zeichen Eine Universalroutine, um nicht druckbare Zeichen (z.B. CarriageReturn, Tabulator, ...) in einem Textstring zu ersetzen. | ||
Autor: Matthias Kozlowski | Bewertung: | Views: 37.821 |
ohne Homepage | System: Win9x, WinNT, Win2k, WinXP, Win7, Win8, Win10, Win11 | Beispielprojekt auf CD |
Ist es Ihnen nicht auch schon einmal passiert, daß beim Einlesen gespeicherter Zeichenketten aus einer Textdatei, diese entweder nicht korrekt oder nicht vollständig eingelesen wurde? Wenn ja, lag das vielleicht daran, daß die Zeichenkette nicht druckbare Zeichen enthielt, z.B. Zeilenumbrüche, Tabulatoren oder Anführungsstriche. Die VB-Funktionen Input# oder Line Input# verwenden diese Zeichen nämlich selbst als Steuerzeichen. Deswegen sollten solche Zeichen vor dem Speichern in eine Datei ersetzt werden.
Unser nachfolgender Tipp zeigt Ihnen, wie's geht: Die Funktion ReplaceForSaving ersetzt alle vorhandenen Steuerzeichen (nicht druckbare Zeichen) durch bestimmte Zeichenkombinationen. Die Umkehrfunktion hierzu (das Entschlüsseln), welche nach dem Einlesen die ursprünglichen Zeichen wieder einsetzt heißt ReplaceForShowing.
Public Function ReplaceForSaving(psText As String) As String ' Ersetzt in der übergebenen Zeichenkette nicht ' druckbare Zeichen, wie Zeilenumbruch oder Tabulator ' durch druckbare Zeichen wie /n ' Umkehrfunktion ReplaceForShowing ' ' Ersetzungstabelle: ' Wagenrücklauf (vbCr) -> /c ' Zeilenumbruch (vbLf) -> /l ' Tabulator (vbTab) -> /t ' Anführungszeichen (") -> /q Dim sText As String sText = psText ' Zuerst vorhandene Slash-Zeichen durch ' /s ersetzen sText = Replace(sText, "/", "/s") ' dann eigentliche Ersetzung sText = Replace(sText, vbCr, "/c") sText = Replace(sText, vbLf, "/l") sText = Replace(sText, vbTab, "/t") sText = Replace(sText, Chr(34), "/q") ReplaceForSaving = sText End Function Public Function ReplaceForShowing(psText As String) As String ' Ersetzt in der übergebenen Zeichenkette nicht ' druckbare Zeichen, wie Zeilenumbruch und Tabulator ' durch druckbare Zeichen wie /n ' Umkehrfunktion ReplaceForSaving ' ' Ersetzungstabelle: ' /c -> Wagenrücklauf (vbCr) ' /l -> Zeilenumbruch (vbLf) ' /t -> Tabulator (vbTab) ' /q -> Anführungszeichen (") Dim sText As String sText = psText sText = Replace(sText, "/c", vbCr) sText = Replace(sText, "/l", vbLf) sText = Replace(sText, "/t", vbTab) sText = Replace(sText, "/q", Chr(34)) ' Jetzt wieder ursprünglich vorhandene Slashes einsetzen sText = Replace(sText, "/s", "/") ReplaceForShowing = sText End Function
Beispiel:
sText = "a" & vbCr & "b" & vbTab & "/c" ReplaceForSaving(sText) ' Ausgabe: a/cb/t/sc sText = "a/cb/t/sc" ReplaceForShowing(sText) ' Ausgabe: a b /c -> a<Wagenrücklauf>b<Tabulator>/c