![]() |
Textdatei einlesen und bestimmte Zeilen löschen
Ich muss eine Textdatei bearbeiten. Dabei müssen Zeilen, die mit zwei Leerzeichen und einem Zeilenumbruch (#13#10) enden, gelöscht werden. Ich habe es schon mit einer StringListe probiert, aber das geht ja nicht, weil ich da nicht auf
Delphi-Quellcode:
..prüfen kann, da ja der Zeilenumbruch nicht im String steht.
if s = ' '+#13#10 then
Ja, wie mache ich das jetzt am geschicktesten? Hat da jemand eine Idee? |
Re: Textdatei einlesen und bestimmte Zeilen löschen
Hai Luckie,
Du musst doch nur prüfen ob eine Zeile der StingList mit zwei Leerzeichen endet und es noch nicht die letzte Zeile ist. Dann ist deine Bedingung ' ' + #13#10 per definition gegeben. Oder sehe ich das jetzt falsch? |
Re: Textdatei einlesen und bestimmte Zeilen löschen
Hmm... Oder du liest die Daten binär ein.
|
Re: Textdatei einlesen und bestimmte Zeilen löschen
Der Zeilenumbruch wird ja durch die TStringList weggeschnitten. wenn man die Datei wieder speicherst werden sie wieder hinzugefügt. Also sollte die Prüfung auf 2 Leerzeichen ausreichen (so wie unser Hai geschrieben hat)
|
Re: Textdatei einlesen und bestimmte Zeilen löschen
Jupp, war ein guter Denk anstoss. ;)
|
Re: Textdatei einlesen und bestimmte Zeilen löschen
kannst aber auch mitreadln die textdatei lesen und überprüfen!
Delphi-Quellcode:
AssignFile(DateiFile,DateiPfad);
Reset(DateiFile); while not eof(DateiFile) do begin Readln(DateiFile,Zeile); if .... end; CloseFile(DateiFile); |
Re: Textdatei einlesen und bestimmte Zeilen löschen
Und noch ein Denkanstoß:
Delphi-Quellcode:
Grüße vom marabu
type
TLuckieList = class(TStringList) public function Add(const S: string): Integer; override; end; function TLuckieList.Add(const S: string): Integer; begin if Copy(S, Pred(Length(S)), 2) = ' ' then Result := -1 else Result := inherited Add(S); end; |
Re: Textdatei einlesen und bestimmte Zeilen löschen
Ich habe die Lösung nach dem Denkanstoss von Sharky genommen. Hat wunderbar geklappt.
Ich habe blos noch ein Problem: Eine Zeile hört zwar mit zwei Leerzeichen auf, aber mitten drinne seht noch etwas, so dass ich diese Zeile nicht löschen darf:
Code:
Es ist die erste Zeile. Zur Erklärung: Die Datei wird von einem Drucker erstellt un dich muss sie erstmal so aufbereiten, dass man sie wieder gescheit drucken kann und dann noch in ein DMS importieren kann. (Die komischen Zeichen ergeben einen Kasten aus Plus- und Minuszeichen und senkrechten Strichen.)
(s5HLIEFERSCHEIN (s12H)s12H
Firma ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿ ³ ³ ³ ELODRIVE GmbH ³Diese Daten ³Kunden-Nr. 14028³ ³ ³ ³ Stellantriebstechnik ³stets angeben ³Lieferschein 1/1 61960³ ³ ³ ³ Potsdamer Strasse 12 ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ |
Re: Textdatei einlesen und bestimmte Zeilen löschen
wenn es immer nur die erste Zeile betrifft ist das "Problem" doch leicht
zu umgehen. Wenn es auch in anderen Zeilen auftreten kann, dann solltest Du die Bedingung die zum Löschen der Zeile führt erweitern/ändern. Grüße Klaus |
Re: Textdatei einlesen und bestimmte Zeilen löschen
Zitat:
wenn es auch die erste Zeile in der Datei ist dann lasse diese doch bei deiner Operation einfach aus ;-) Wenn nicht musst Du halt genauer definieren wann eine Zeile gelöscht werden darf. Zum Beispiel wenn sie mit zwei Leerzeichen aufhört aber nicht wenn die Zeichenfolge "Lieferschein" darin vorkommt. Da hat sich Klaus vorgemogelt *g* |
Alle Zeitangaben in WEZ +1. Es ist jetzt 18:28 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz