Entwickler-Ecke

Dateizugriff - Letzte Zeile einer .txt löschen


Krischa - Mi 03.06.09 08:25
Titel: Letzte Zeile einer .txt löschen
Hi,
ich schreibe ein Memo in eine *.txt Datei aber er fügt mir immer am Schluß eine leere Zeile ein. Wie bekomme ich die weg?

Delphi-Quelltext
1:
2:
3:
memo1.Lines.Clear;                                            
memo1.Lines.Add(nachricht);                                         
memo1.Lines.SaveToFile(npfad);


zuma - Mi 03.06.09 08:29

prüfe "nachricht", ob da nicht ein Steuerzeichen bzw. eine Leerzeile am ende steht


Krischa - Mi 03.06.09 08:36

Letzte Ziele von Nachricht ist:

Delphi-Quelltext
1:
nachricht := nachricht + slinebreak + 'UNZ+'+inttostr(ni-1)+'+'+nrn + #39;                    


thepaine91 - Mi 03.06.09 08:46

Oder die unschöne Version einfach die letzte Zeile löschen :D obwohl das wie gesagt nicht wirklich toll ist.


zuma - Mi 03.06.09 08:47

du zeigst den code zum befüllen, nicht den Inhalt der 'Nachricht'.

bau dir mal ein showmessage(nachricht) ein oder

zeig mal die ganze procedure/function


Krischa - Mi 03.06.09 08:48

Und wie kommt es das da eine Leerzeile auftaucht. Und wie geht die Funktion zum Löschen der Zeile?

---Moderiert von user profile iconNarses: Beiträge zusammengefasst---

Die Nachricht geht über mehrere tausend Zeilen. Das wird kritisch mit showmessage.
Du willst also einfach nur den Text der letzten Zeile?

Vorletzte Zeile in der *.txt: UNZ+22+19'

die Letzte ist ja halt einfach nur leer.


thepaine91 - Mi 03.06.09 08:50

Krischa ich sage immer (Press F1) ^^ muss i-was mit Delete gewesen sein weis es aber nicht ausm kopf wie genau.

z.B. .lines.delete(1) z.b. sowas in der Art. Aber einfach mal auf Richedit/ Memo klicken F1 drücken und du findest sicher was du suchst.

Edit: hört sich nach edifact an. ;)


Nersgatt - Mi 03.06.09 08:59

Die von TStrings abgeleiteten Klassen fügen bei SaveToFile immer ein #13#10 an, wenn ich den Quellcode richtig sehe (es wird der Text gespeichert, der von TStrings.GetTextStr ermittelt wird).
Du solltest vielleicht den Text selbst mit einem TSTream oder ähnliches speichern. Oder gar komplett selbst mit Assign, Rewrite, etc...


Krischa - Mi 03.06.09 09:07

Danke ich mache es jetzt so:


Delphi-Quelltext
1:
2:
3:
4:
5:
npfad:=savedialog1.FileName+'.txt';
AssignFile(Datei, npfad);
Rewrite(Datei);
Write(Datei, nachricht);
Close(Datei);



Edit: Nachricht ist in EANCOM geschrieben :)