Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Problem: Datei mit Zeilenumbruch (https://www.delphipraxis.net/99149-problem-datei-mit-zeilenumbruch.html)

qb-tim 7. Sep 2007 14:27


Problem: Datei mit Zeilenumbruch
 
Hi,

ich habe ein kleine Problem:

Eine Datei, die ich Zeile für Zeile auswerten will, lädt Delphi aber als eine gesamte Zeile ohne Zeilenumbrüchen. Ist es möglich die Datei richtig mit Zeilenumbrüchen zu laden, ohne die Datei verändern zu müssen?

Danke im Voraus,

TIM

PS: Im Notepad sehe ich, wie die Zeilenumbrüche als Kästchen interpretiert werden, aber in WordPad ist es richtig...

Christian Seehase 7. Sep 2007 14:30

Re: Problem: Datei mit Zeilenumbruch
 
Moin Tim,

wie versuchst Du denn die Datei zu laden?
Deiner Beschreibung nach, wird sie nur ein #10 als Zeilenendekennung enthalten, was allerdings beim Laden in eine TStringList automatisch korrigiert werden sollte.

qb-tim 7. Sep 2007 14:32

Re: Problem: Datei mit Zeilenumbruch
 
Delphi-Quellcode:
AssignFile(xy,'datei.abc');
Reset(xy);
ReadLn(xy, String1);

// etc...

CloseFile(xy);
Ich habe auch bemerkt, dass eine Stringlist die Zeilenumbrüche aufhebt, aber geht es nicht einfacher, Delphi auf diese Zeilenumbrüche abzustimmen?

Klaus01 7. Sep 2007 14:36

Re: Problem: Datei mit Zeilenumbruch
 
Nun, readLn sucht als Zeileende #10#13 und nicht nur #10.

Kommt die Datei von einem Linux/Unixsystem?
Wie wird die Datei übertragen. Wenn FTP dann sollte es im Ascii Format sein
dann geschieht die Anpassung der verschiedenen Zeilenendezeichen automatisch.
Sonst gibt es da auf den Linux/Unixsystemen noch ein Tool das nennt sich unix2dos.

Was spricht dagegen mit Stringlisten zu arbeiten?

Grüße
Klaus

qb-tim 7. Sep 2007 14:37

Re: Problem: Datei mit Zeilenumbruch
 
OK, ich habe es jetzt mit einer StringList gemacht:

Delphi-Quellcode:
sl := TStringList.Create;
sl.LoadFromFile('datei.abc');
for i := 0 to sl.Count - 1 do
begin
  // etc...
end;
sl.Free

Christian Seehase 7. Sep 2007 15:07

Re: Problem: Datei mit Zeilenumbruch
 
Moin Klaus,

Zitat:

Zitat von Klaus01
Nun, readLn sucht als Zeileende #10#13 und nicht nur #10.

Nein. Zeilenende ist #13#10 ;-)

Zitat:

Zitat von Klaus01
Was spricht dagegen mit Stringlisten zu arbeiten?

Ich denke, dass hängt auch von der Dateigrösse ab.
In manchen Fällen kann es durchaus erhebliche Performancegewinne geben, wenn Textdateien zeilenweise verarbeitet.

Klaus01 7. Sep 2007 17:46

Re: Problem: Datei mit Zeilenumbruch
 
Zitat:

Zitat von Christian Seehase
Moin Klaus,

Zitat:

Zitat von Klaus01
Nun, readLn sucht als Zeileende #10#13 und nicht nur #10.

Nein. Zeilenende ist #13#10 ;-)

Hallo Christian,

danke für den Hinweis, ich verwechsele das immer wieder. Sollte nicht sein.

Grüße
Klaus

Reinhard Kern 8. Sep 2007 08:40

Re: Problem: Datei mit Zeilenumbruch
 
Zitat:

Zitat von qb-tim
OK, ich habe es jetzt mit einer StringList gemacht:

Delphi-Quellcode:
sl := TStringList.Create;
sl.LoadFromFile('datei.abc');
for i := 0 to sl.Count - 1 do
begin
  // etc...
end;
sl.Free

Back to the roots: ich baue mir in so einem Fall ein ReadLn_Spezial (bzw. hole es aus dem Schrank, das Problem kommt ja öfter vor), das bereits beim Einlesen LF durch CR-LF ersetzt. So macht das auch Wordpad. VCL ist überflüssig.

Gruss Reinhard

Micha88 18. Dez 2011 16:10

AW: Problem: Datei mit Zeilenumbruch
 
Selbiges Problem habe ich nun auch zum ersten Mal.

Lese ich eine in Windows geschriebene Textdatei in eine StringList ein und gehe sie mit einer Schleife durch, kein Problem.

Gehe ich eine in Linux (denke ich) erstellte Textdatei (vielleicht auch durch PHP erstellt) durch, scheint "alles in einer Zeile" zu sein.
In Notepad sieht es etwa so aus:
aaa bbb ccc ddd
in WordPad so:
aaa
bbb
ccc
ddd


Wie geht man hier am besten vor?

p80286 18. Dez 2011 16:18

AW: Problem: Datei mit Zeilenumbruch
 
Wie wäre es #10 mit Hilfe von Posex in #13#10 zu ändern?

Gruß
K-H


Alle Zeitangaben in WEZ +1. Es ist jetzt 11:57 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