![]() |
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... |
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. |
Re: Problem: Datei mit Zeilenumbruch
Delphi-Quellcode:
Ich habe auch bemerkt, dass eine Stringlist die Zeilenumbrüche aufhebt, aber geht es nicht einfacher, Delphi auf diese Zeilenumbrüche abzustimmen?
AssignFile(xy,'datei.abc');
Reset(xy); ReadLn(xy, String1); // etc... CloseFile(xy); |
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 |
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 |
Re: Problem: Datei mit Zeilenumbruch
Moin Klaus,
Zitat:
Zitat:
In manchen Fällen kann es durchaus erhebliche Performancegewinne geben, wenn Textdateien zeilenweise verarbeitet. |
Re: Problem: Datei mit Zeilenumbruch
Zitat:
danke für den Hinweis, ich verwechsele das immer wieder. Sollte nicht sein. Grüße Klaus |
Re: Problem: Datei mit Zeilenumbruch
Zitat:
Gruss Reinhard |
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? |
AW: Problem: Datei mit Zeilenumbruch
Wie wäre es #10 mit Hilfe von Posex in #13#10 zu ändern?
Gruß K-H |
AW: Problem: Datei mit Zeilenumbruch
Mhh..
Ich lese die Datei X (Textdatei) mit SJMmfFileReader.pas ein. Normalerweise sollte ich diese dann zeielnweise durchgehen können. Es existiert nach dem Einlesen aber nur "eine Zeile" und diese enthält die ganze Datei. Das passiert nur mit Dateien, die offensichtlich unter Linux erstellt wurden. Das Problem ist, wenn ich ganz simpel nach '#10' suche, wird nichts gefunden:
Delphi-Quellcode:
if Pos('#10', zeileninhalt) > 0 then
showmessage('vorhanden'); |
AW: Problem: Datei mit Zeilenumbruch
Nicht
Zitat:
Delphi-Quellcode:
, sonst wird ja nach dem String "#10" gesucht und nicht nach dem Zeichen mit ASCII-Code 10.
Pos(#10...
|
AW: Problem: Datei mit Zeilenumbruch
Mit #10 wird man nicht ganz so weit kommen, zumal in einem #13#10 (Windows Zeilenumbruch) auch das #10 vorkommt.
|
AW: Problem: Datei mit Zeilenumbruch
Ich glaube, es reicht auch schon, wenn man die Datei in eine Stringliste läd und wieder speichert.
|
AW: Problem: Datei mit Zeilenumbruch
Delphi-Quellcode:
Nicht schön, sollte aber zuverlässig funktionieren (wenn auch nicht sonderlich performant).
s := StringReplace(s, sLineBreak, #10, [rfReplaceAll]);
s := StringReplace(s, #10, sLineBreak, [rfReplaceAll]); |
AW: Problem: Datei mit Zeilenumbruch
Wie ich schon sagte, reicht das Laden und Speichern mit einer Stringliste.
|
AW: Problem: Datei mit Zeilenumbruch
Oder einen anderen Editor verwenden.
Notepad kann nunmal nicht mit Linux-#10 umgehn. Wordpad und andere Editoren können es. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 06:42 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