| Autor |
Beitrag |
Krischa
      
Beiträge: 118
Windows 7 64 Bit
Delphi 2007
|
Verfasst: Mi 03.06.09 08:25
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
      
Beiträge: 660
Erhaltene Danke: 21
Win XP, Win7, Win 8
D7 Enterprise, Delphi XE, Interbase (5 - XE)
|
Verfasst: Mi 03.06.09 08:29
prüfe "nachricht", ob da nicht ein Steuerzeichen bzw. eine Leerzeile am ende steht
_________________ Ich habe nichts gegen Fremde. Aber diese Fremden sind nicht von hier! (Methusalix)
Warum sich Sorgen ums Leben machen? Keiner überlebts!
|
|
Krischa 
      
Beiträge: 118
Windows 7 64 Bit
Delphi 2007
|
Verfasst: Mi 03.06.09 08:36
Letzte Ziele von Nachricht ist:
Delphi-Quelltext 1:
| nachricht := nachricht + slinebreak + 'UNZ+'+inttostr(ni-1)+'+'+nrn + #39; |
|
|
thepaine91
      
Beiträge: 763
Erhaltene Danke: 27
Win XP, Windows 7, (Linux)
D6, D2010, C#, PHP, Java(Android), HTML/Js
|
Verfasst: Mi 03.06.09 08:46
Oder die unschöne Version einfach die letzte Zeile löschen  obwohl das wie gesagt nicht wirklich toll ist.
|
|
zuma
      
Beiträge: 660
Erhaltene Danke: 21
Win XP, Win7, Win 8
D7 Enterprise, Delphi XE, Interbase (5 - XE)
|
Verfasst: 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
_________________ Ich habe nichts gegen Fremde. Aber diese Fremden sind nicht von hier! (Methusalix)
Warum sich Sorgen ums Leben machen? Keiner überlebts!
|
|
Krischa 
      
Beiträge: 118
Windows 7 64 Bit
Delphi 2007
|
Verfasst: 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 Narses: 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
      
Beiträge: 763
Erhaltene Danke: 27
Win XP, Windows 7, (Linux)
D6, D2010, C#, PHP, Java(Android), HTML/Js
|
Verfasst: 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
      
Beiträge: 1581
Erhaltene Danke: 279
Delphi 10 Seattle Prof.
|
Verfasst: 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...
_________________ Gruß, Jens
Zuerst ignorieren sie dich, dann lachen sie über dich, dann bekämpfen sie dich und dann gewinnst du. (Mahatma Gandhi)
|
|
Krischa 
      
Beiträge: 118
Windows 7 64 Bit
Delphi 2007
|
Verfasst: 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 
|
|