![]() |
abspeichern einer textdatei ohne lästigen Zeilenumbruch
Hallo
ich habe folgendes Problem: ich programmiere grade an einem System das uA. auf zeilenweiser ein und auslese von Textdateien basiert. Dafür ist es immens wichtig, dass nur so viel Zeilen in der txt existieren, wie auch beschrieben sind! wenn ich jetzt einen text aus einem RichEdit in eine Textdatei speichere
Delphi-Quellcode:
dann habe ich dass Problem, dass immer ein Zeilenumbruch mit angehängt wird!!
sl:=TStringlist.Create;
sl.text:=Richedit1.Text; sl.SaveToFile('pfad'); Ich hab schon fast alles probiert. Vorher den Richedit zu trimmen bringt zB. schlicht gar nichts. könnt ihr mir da helfen? das wäre klasse! |
Re: abspeichern einer textdatei ohne lästigen Zeilenumbruch
Warum muss es unbedingt ein RichEdit sein?
Wenn du keine Textformatierung benötigst, dann reicht doch ein Memo völlig aus. Dann kannst du einfach folgendes schreiben...
Delphi-Quellcode:
Memo.Lines.SaveToFile('<FILE>');
|
Re: abspeichern einer textdatei ohne lästigen Zeilenumbruch
Moin,
der Thread ![]() Einen ungewollten Zeilenumbruch am Ende kann man bei Verwendung von strings.SaveToFile() oder strings.SaveToStream() nicht vermeiden, aber im Nachgang so beseitigen:
Delphi-Quellcode:
Grüße vom marabu
begin
// ... strings.SaveToStream(stream); stream.Size := stream.size - Length(sLineBreak); // ... end; |
Re: abspeichern einer textdatei ohne lästigen Zeilenumbruch
Zitat:
so?
Delphi-Quellcode:
oder wie? SLineBreak ist ein Zeilenumbruch..
sl:=TStringlist.Create;
sl.text:=Richedit1.Text; sl.Text:=sl.text-Length(sLineBreak); sl.Savetofile(''); etwas wie size beim stream fällt mir bei einer stringlist nicht ein.. |
Re: abspeichern einer textdatei ohne lästigen Zeilenumbruch
so wie du es machst geht es nicht. Entweder du schreibst die Zeilen einzeln in eine Datei oder verwendest SaveToStream und änderst dann dei Streamgröße.
|
Re: abspeichern einer textdatei ohne lästigen Zeilenumbruch
wie säh es denn aus, wenn ich es einzeln einspeichere?
Wenn ich wieder string.savetofile mache, kommt doch immer ein Zeilenumbruch.. Wenn ich das zeilenweise mache, hab ich doch nachher so viele Zeilenumbrüche wie Zeilen? oder verstehe ich dich falsch? |
DP-Maintenance
Dieses Thema wurde von "Matze" von "Programmieren allgemein" nach "Sonstige Fragen zu Delphi" verschoben.
Delphi-Frage |
Re: abspeichern einer textdatei ohne lästigen Zeilenumbruch
also, bitte korrigiert mich
ich mache das jetzt anders.. Mit einem Zeilenumbruch am Ende muss ich leben, nur wenn Zeilenumbrüche in der Mitte sind möchte ich diese "leeren" Zeilen löschen. Ich hätte das jetzt so gemacht, "???????" ist der platzhalter für das "erkennungszeichen" von einem Zeilenumbruch
Delphi-Quellcode:
bitte helft mir, ich bin ech schon verzweifelt....
for i2:=0 to Richedit1.Lines.Count do
if Richedit1.Lines[i2]= ?????????? then Richedit1.Lines.Delete(i2); |
Re: abspeichern einer textdatei ohne lästigen Zeilenumbruch
Hallo crayzo,
leider hab ich nicht so recht verstanden,worum es Dir geht,darum ein paar Basics. Unter Dos wird jede Zeile in ener Textdatei durch CRLF (#13+#10) begrenzt. das ist so! Wenn Du mit .lines arbeitest, sind diese Zeilenbregenzer nicht sichtbar (unter normalen Umständen). Wenn Du Leerzeilen löschen willst, dann mach es ungefähr so:
Delphi-Quellcode:
Wenn Du unbedingt an die CRLF heran willst, solltest du mit xxx.Text arbeiten.
if trim(length(xxx.lines[i]))=0 then xxx.delete(i);
In Deinem Eingangsstatemet Schreibst Du: Zitat:
Oder sollte es sein daß Du dich mit einer CSV-Datei herumschlägst, bei der die Anzahl der Phys. Datensätze nicht mit der Anzahl der log. Datensätze übereinstimmt? Übrigens ist Zeilenumbruch ein Begriff aus der Textbearbeitung, der die phys. Formatierung eines logischen Satzes beschreibt. Zeig dochmal ein Beispiel von Deinen Daten. Vielleicht gibt es ja auch eine ganz andere Möglichkeit der Lösung. Gruß K-H |
Re: abspeichern einer textdatei ohne lästigen Zeilenumbruch
Zusammenfassend gesagt ist was er will:
-Den Absatz am Ende entfernen -Leere Zeilen entfernen das wars denke ich schon... xD Ich würds so probieren:
Delphi-Quellcode:
for i2:=0 to Richedit1.Lines.Count do
if Richedit1.Lines[i2]= '' then Richedit1.Lines.Delete(i2); |
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:30 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