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/)
-   -   String ohne CR/LF am Ende in Datei schreiben (https://www.delphipraxis.net/165899-string-ohne-cr-lf-am-ende-datei-schreiben.html)

Delix 20. Jan 2012 12:12

String ohne CR/LF am Ende in Datei schreiben
 
Hallo zusammen,

ich suche nach einer Möglichkeit, einen String in eine Datei zu schreiben, ohne das am Ende der Datei ein Carriage return Linefeed angehängt wird. Die üblichen Verdächtigen wie ..savetofile order TextFile.write hängen immer diese Zeichen an.

Schönen Gruss

Bernhard Geyer 20. Jan 2012 12:15

AW: String ohne CR/LF am Ende in Datei schreiben
 
Am einfachsten dürfte das über eine TStringList gehen.

Klaus01 20. Jan 2012 12:18

AW: String ohne CR/LF am Ende in Datei schreiben
 
Hallo,

die könntest die Datei mit TFileStream öffnen.
Delphi-Quellcode:
fstream := TFileStream.create(fName, fmOpenWrite);
try
  fstream.seek(0,soFromEnd);
  fstream.writeBuffer();
finally
  fstream.free;
end;
Wobei im Buffer dann Deine Daten stehen sollten.

Grüße
Klaus

gammatester 20. Jan 2012 12:27

AW: String ohne CR/LF am Ende in Datei schreiben
 
Zitat:

Zitat von Delix (Beitrag 1146857)
TextFile.write hängen immer diese Zeichen an.

Das wäre aber ziemlich ungewöhnlich, weil write genau gefür gedacht ist. Bis Delphi 12 schreibt zB
Delphi-Quellcode:
var
  f: textfile;
begin
  assign(f,'tst');
  rewrite(f);
  write(f,'1');
  close(f);
end.
genau 1 Zeichen und nicht 3.

p80286 20. Jan 2012 12:31

AW: String ohne CR/LF am Ende in Datei schreiben
 
Zitat:

Zitat von Delix (Beitrag 1146857)
Hallo zusammen,

ich suche nach einer Möglichkeit, einen String in eine Datei zu schreiben, ohne das am Ende der Datei ein Carriage return Linefeed angehängt wird. Die üblichen Verdächtigen wie ..savetofile order TextFile.write hängen immer diese Zeichen an.

Bei
Delphi-Quellcode:
Writeln
kann ich das nachvollziehen, bei
Delphi-Quellcode:
Write
habe ich da so meine Zweifel.
Was willst Du damit erreichen?
Ein String ohne CRLF klingt für mich wie
Delphi-Quellcode:
Ofenrohr-Blech =Loch
Gruß
K-H

shmia 20. Jan 2012 13:21

AW: String ohne CR/LF am Ende in Datei schreiben
 
Ist doch ganz einfach:
StringToFile() und FileToString()

DeddyH 20. Jan 2012 13:57

AW: String ohne CR/LF am Ende in Datei schreiben
 
Mit einem TStringStream wäre das IMO noch einfacher und nicht auf Ansi beschränkt.

Delix 20. Jan 2012 14:11

AW: String ohne CR/LF am Ende in Datei schreiben
 
also bis jetzt funktionieren alle Varianten nicht. Ich schreibe einen String von 1000 Zeichen und bekomme eine Datei mit 1002 Zeichen. Immer schön mit CR/LF hinten dran.

himitsu 20. Jan 2012 14:23

AW: String ohne CR/LF am Ende in Datei schreiben
 
Alle?

Mit Write kann kein CRLF entstehen (es sei denn man hat es in den zu schreibenden String reingemacht).



Tipp: Man kann im Profil angeben welche Delphi-Version man nutzt.
Für neuere Delphiversionen (hätte ich da womöglich was) ... für ältere müßte man es anpassen.

DeddyH 20. Jan 2012 14:24

AW: String ohne CR/LF am Ende in Datei schreiben
 
Mit Delphi 2007 ausprobiert:
Delphi-Quellcode:
procedure SaveStringToFile(const Filename: TFilename; const InputString: string);
var
  SStream: TStringStream;
  FStream: TFileStream;
begin
  SStream := TStringStream.Create(InputString);
  try
    FStream := TFileStream.Create(Filename, fmCreate or fmShareDenyWrite);
    try
      FStream.CopyFrom(SStream, 0);
    finally
      FStream.Free;
    end;
  finally
    SStream.Free;
  end;
end;
"Hallo Welt" ergibt damit bei mir eine Datei von 10 Byte, passt also.


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