Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Textdatei einlesen und bestimmte Zeilen löschen (https://www.delphipraxis.net/68220-textdatei-einlesen-und-bestimmte-zeilen-loeschen.html)

Luckie 26. Apr 2006 13:56


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:
if s = ' '+#13#10 then
..prüfen kann, da ja der Zeilenumbruch nicht im String steht.

Ja, wie mache ich das jetzt am geschicktesten? Hat da jemand eine Idee?

Sharky 26. Apr 2006 14:13

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?

Daniel G 26. Apr 2006 14:14

Re: Textdatei einlesen und bestimmte Zeilen löschen
 
Hmm... Oder du liest die Daten binär ein.

jim_raynor 26. Apr 2006 14:42

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)

Luckie 26. Apr 2006 14:52

Re: Textdatei einlesen und bestimmte Zeilen löschen
 
Jupp, war ein guter Denk anstoss. ;)

marlem 26. Apr 2006 14:57

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);

marabu 26. Apr 2006 17:30

Re: Textdatei einlesen und bestimmte Zeilen löschen
 
Und noch ein Denkanstoß:

Delphi-Quellcode:
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;
Grüße vom marabu

Luckie 26. Apr 2006 23:03

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:
                                                    (s5HLIEFERSCHEIN                            (s12H)s12H

       

        Firma                                      ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿ 

                                                    ³              ³                        ³ 

        ELODRIVE GmbH                              ³Diese Daten  ³Kunden-Nr.        14028³ 

                                                    ³              ³                        ³ 

        Stellantriebstechnik                       ³stets angeben ³Lieferschein 1/1  61960³ 

                                                    ³              ³                        ³ 

        Potsdamer Strasse 12                        ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ
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.)

Klaus01 27. Apr 2006 06:37

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

Sharky 27. Apr 2006 06:38

Re: Textdatei einlesen und bestimmte Zeilen löschen
 
Zitat:

Zitat von Luckie
... Es ist die erste Zeile.

Hai Michael,

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:18 Uhr.
Seite 1 von 2  1 2      

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz