Delphi-PRAXiS
Seite 2 von 2     12   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Delphi UTF-8 in Datei schreiben (https://www.delphipraxis.net/202565-utf-8-datei-schreiben.html)

Moombas 19. Nov 2019 07:28

AW: UTF-8 in Datei schreiben
 
Prüfe mal vorher ob die Datei auch als UTF8 eingestellt ist. Ich habe da sProblem auch mal gehabt, da war die Ausgabe zwar richtig, dadurch das die Datei selber aber Unicode und nicht UTF8 war, hat er es entsprechend falsch umgesetzt.
Einmal die Datei neu als UTF8 gespeichert und nochmal getestet - Einwandfrei.

Vielleicht ist es bei dir ja ähnlich.

H.Bothur 20. Nov 2019 09:19

AW: UTF-8 in Datei schreiben
 
Zitat:

Zitat von Bbommel (Beitrag 1451490)
Eine moderne Alternative ist aber auch nicht viel schwerer in der Umsetzung, gibt es für die Streams auch diverse Klassen, die einem die Arbeit erleichtern. Besonders einfach finde ich den Streamwriter. Eine etwas neuere Log-Variante sieht etwa so aus:

Delphi-Quellcode:
begin
  logFile:=TStreamWriter.Create(filename,true,TEncoding.UTF8);
  try
    logFile.WriteLine(prefix+' ['+DateTimeToStr(now)+'] '+logMessage);
  finally
    logFile.Free;
  end;
end;
Hier wird der Zeichensatz einfach beim Erstellen des Objekts angegeben und gut ist.

Sorry wenn ich da noch einmal so blöde nachfrage ... dann kann ich also Write komplett durch diese Variante ersetzen und bin damit wieder einigermaßen "State of the Art" ? :-)

Gruß
Hans

DieDolly 20. Nov 2019 09:25

AW: UTF-8 in Datei schreiben
 
Du kannst auch einfach die Funktionen TFile.WriteAllLines() und TFile.WriteAllText() aus System.IOUtils nutzen.
Damit spart man sich viele Zeilen.

Bbommel 20. Nov 2019 12:51

AW: UTF-8 in Datei schreiben
 
Zitat:

Zitat von H.Bothur (Beitrag 1451613)
Sorry wenn ich da noch einmal so blöde nachfrage ... dann kann ich also Write komplett durch diese Variante ersetzen und bin damit wieder einigermaßen "State of the Art" ? :-)

Korrekt. Ich finde den TStreamWriter eine wunderbar einfach zu benutzende Klasse, wenn es darum geht, zeilenweise etwas in eine Datei zu schreiben oder an eine existierende Datei dranzuhängen. Also das, was man früher klassisch mit einem "writeln(fileHandle,...)" gemacht hat.

Andere Varianten wurden ja hier schon genannt: eine TStringList eignet sich dann als angenehme Art, mittels StringList.SaveToFile, wenn es darum geht, eine ganze Datei in einem Rutsch zu schreiben, die du vorher im Speicher zusammensetzt. Und dann gibt es ja noch die von DieDolly gerade genannte Methode mit TFIle... Und wenn dir langweilig ist, kannst du natürlich auch "von Hand" in den TFileStream schreiben - aber da finde ich die obigen Methoden die angenehmere Variante.

H.Bothur 20. Nov 2019 16:01

AW: UTF-8 in Datei schreiben
 
Da es ja keinen Danke-Button gibt ... Danke !!

Hans


Alle Zeitangaben in WEZ +1. Es ist jetzt 19:07 Uhr.
Seite 2 von 2     12   

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