AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Object-Pascal / Delphi-Language Textdatei einlesen und bestimmte Zeilen löschen
Thema durchsuchen
Ansicht
Themen-Optionen

Textdatei einlesen und bestimmte Zeilen löschen

Ein Thema von Luckie · begonnen am 26. Apr 2006 · letzter Beitrag vom 27. Apr 2006
Antwort Antwort
Seite 1 von 2  1 2      
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#1

Textdatei einlesen und bestimmte Zeilen löschen

  Alt 26. Apr 2006, 13:56
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
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?
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Benutzerbild von Sharky
Sharky

Registriert seit: 29. Mai 2002
Ort: Frankfurt
8.251 Beiträge
 
Delphi 2006 Professional
 
#2

Re: Textdatei einlesen und bestimmte Zeilen löschen

  Alt 26. Apr 2006, 14:13
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?
Stephan B.
  Mit Zitat antworten Zitat
Daniel G
(Gast)

n/a Beiträge
 
#3

Re: Textdatei einlesen und bestimmte Zeilen löschen

  Alt 26. Apr 2006, 14:14
Hmm... Oder du liest die Daten binär ein.
  Mit Zitat antworten Zitat
Benutzerbild von jim_raynor
jim_raynor

Registriert seit: 17. Okt 2004
Ort: Berlin
1.251 Beiträge
 
Delphi 5 Standard
 
#4

Re: Textdatei einlesen und bestimmte Zeilen löschen

  Alt 26. Apr 2006, 14:42
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)
Christian Reich
Schaut euch mein X-COM Remake X-Force: Fight For Destiny ( http://www.xforce-online.de ) an.
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#5

Re: Textdatei einlesen und bestimmte Zeilen löschen

  Alt 26. Apr 2006, 14:52
Jupp, war ein guter Denk anstoss.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
marlem

Registriert seit: 10. Mär 2006
59 Beiträge
 
Delphi 6 Personal
 
#6

Re: Textdatei einlesen und bestimmte Zeilen löschen

  Alt 26. Apr 2006, 14:57
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);
gruß und danke

Markus
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#7

Re: Textdatei einlesen und bestimmte Zeilen löschen

  Alt 26. Apr 2006, 17:30
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
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#8

Re: Textdatei einlesen und bestimmte Zeilen löschen

  Alt 26. Apr 2006, 23:03
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.)
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Klaus01

Registriert seit: 30. Nov 2005
Ort: München
5.755 Beiträge
 
Delphi 10.4 Sydney
 
#9

Re: Textdatei einlesen und bestimmte Zeilen löschen

  Alt 27. Apr 2006, 06:37
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
Klaus
  Mit Zitat antworten Zitat
Benutzerbild von Sharky
Sharky

Registriert seit: 29. Mai 2002
Ort: Frankfurt
8.251 Beiträge
 
Delphi 2006 Professional
 
#10

Re: Textdatei einlesen und bestimmte Zeilen löschen

  Alt 27. Apr 2006, 06:38
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*
Stephan B.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 18:38 Uhr.
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