Entwickler-Ecke
Datenbanken - Textfile mit problematischem Zeichen
crncpz - Do 06.09.07 22:54
Titel: Textfile mit problematischem Zeichen
Ich bekomme von einer Datenbank
einen bestimmten Datensatz als Textfile geliefert und möchte diesen
in meinem Programm weiter verarbeiten.
Wenn ich mir nun besagtes Textfile im notepad ansehe stelle ich fest
das an diversen stellen rechteckige Symbole zu sehen sind.
Diese stehen stellvertretend für ein "Enter" bei einer Eingabe in der Datenbank.
Mein Problem ist nun folgendes:
wenn ich in meinem Programm dieses Textfile einlese,
dabei ist es egal ob ich das mit einem TMemo oder mit
assign-reset-read tue,
rutscht der Teil der Zeile, der sich hinter diesem Zeichen befindet
in die nächste Zeile.
Wodurch ich natürlich ein bedingtes Problem bekomme.
Ich hab dieses Problem schon gelöst in dem ich definiert habe mit was eine Zeile anfangen darf.
Wenn das nicht der Fall ist wird die Zeile an das Ende der letzten Zeile angehangen.
Das funktioniert auch super.
Nun möchte ich gern wissen ob man sowas auch anders lösen kann?
Und warum bzw wie kann notepad genau das verhindern das eine weitere
Zeile vorhanden ist?
danke für die Hilfe
Moderiert von
AXMD: Topic aus Internet / Netzwerk verschoben am Fr 07.09.2007 um 14:11
BenBE - Fr 07.09.07 01:03
Notepad kommt mit Unix-Zeilenumbrüchen nicht klar; TMemo aber schon (bzw. besser gesagt, die VCL). D.h. die VCL macht beim Einlesen des Strings automatisch aus dem #13 ein Windows-konformes #13#10 und bricht dann die Zeile um.
Reinhard Kern - Fr 07.09.07 05:59
Titel: Re: Textfile mit problematischem Zeichen
crncpz hat folgendes geschrieben: |
Ich bekomme von einer Datenbank
einen bestimmten Datensatz als Textfile geliefert und möchte diesen
in meinem Programm weiter verarbeiten.
Wenn ich mir nun besagtes Textfile im notepad ansehe stelle ich fest
das an diversen stellen rechteckige Symbole zu sehen sind.
Diese stehen stellvertretend für ein "Enter" bei einer Eingabe in der Datenbank.
|
Hallo,
bevor du weiter planst, solltest du erstmal klären was das für ein ASCII-Zeichen ist (da kommen mehrere in Frage) und ob es wirklich nur ein Trennzeichen ist, dann kannst du das Zeichen rausfiltern oder mit einem Komma ersetzen oder was immer du willst. Im übrigen ist es ja von Vorteil, wenn die Felder der Datenbank durch ein Trennzeichen voneinander zu unterscheiden sind.
Gruss Reinhard
crncpz - Fr 07.09.07 08:25
Es ist ja kein Trennzeichen zwischen 2 Angaben.
Es tritt genau an der Stelle im Datensatz wo es laut Hilfe zu erwarten ist,
wenn man im dem Memo in der Datenbank Oberfläche mehrere Zeilen ein trägt.
Wie ist es möglich ein solches Zeichen selbst zu schreiben.
Die Datenbank kann es ja auch irgendwie. :P
mfg
Reinhard Kern - Fr 07.09.07 18:09
crncpz hat folgendes geschrieben: |
Es ist ja kein Trennzeichen zwischen 2 Angaben.
Es tritt genau an der Stelle im Datensatz wo es laut Hilfe zu erwarten ist,
wenn man im dem Memo in der Datenbank Oberfläche mehrere Zeilen ein trägt.
Wie ist es möglich ein solches Zeichen selbst zu schreiben.
Die Datenbank kann es ja auch irgendwie. :P
mfg |
Verstehe ich richtig: das Zeichen trennt die Zeilen innerhalb des Memos? Das hat hier schon jemand wenigstens zum Teil beantwortet, der Text enthält nicht die windows-übliche CR-LF-Sequenz, sondern z.B. unix-üblich nur LF. Die must du halt gleich beim Einlesen zu CR-LF ergänzen.
Um herauszufinden, was wirklich in der Datei steht, kannst du sie mit jedem Hexeditor betrachten oder du lässt dir den String vom Delphi-Debugger anzeigen, da steht dann für LF hex 0A (= dezimal 10). Das Zeichen LF kannst du definieren mit chr(10) oder innerhalb einer Stringkonstante, aber ausserhalb der Anführungszeichen mit #10. Ein 2zeiliger String sieht dann so aus:
MyString2 := 'hello world'#13#10'how are you?'#13#10;
Umgekehrt bekommst du die ASCII-Nummer eines Zeichens mit ord, also
MyASCII := ord (MyString[12]); liefert 13.
Gruss Reinhard
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2026 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!