AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

TStringList ohne BOM speichern?

Ein Thema von fillibuster · begonnen am 2. Jan 2014 · letzter Beitrag vom 2. Jan 2014
Antwort Antwort
Seite 1 von 3  1 23      
fillibuster

Registriert seit: 3. Nov 2010
Ort: Coesfeld
245 Beiträge
 
Delphi 2010 Professional
 
#1

TStringList ohne BOM speichern?

  Alt 2. Jan 2014, 09:26
Delphi-Version: 2010
Hi,

gibt es eine einfache Möglichkeit (D2010) das BOM nicht mitzuschreiben? Meine erstellten StringListen speichere ich so:
sl.SaveToFile(savepath + 'muster.txt',TEncoding.UTF8);
Vielen Dank!
  Mit Zitat antworten Zitat
Furtbichler
(Gast)

n/a Beiträge
 
#2

AW: TStringList ohne BOM speichern?

  Alt 2. Jan 2014, 09:40
Wer sollte das dann wieder einlesen können? Der BOM für UTF-8 hat schon seinen Sinn. Was stört dich daran?
  Mit Zitat antworten Zitat
Perlsau
(Gast)

n/a Beiträge
 
#3

AW: TStringList ohne BOM speichern?

  Alt 2. Jan 2014, 09:51
Moin Furtbichler, ein gutes Neues wünsche ich.

Z.B. meckert der Firebird-Script-Editor, wenn ich ein mittels StringListe erstelltes SQL-Script einlesen will, dem ein BOM vorangestellt ist. Liegt vielleicht aber auch an den Einschränkungen der Personal-Version
  Mit Zitat antworten Zitat
fillibuster

Registriert seit: 3. Nov 2010
Ort: Coesfeld
245 Beiträge
 
Delphi 2010 Professional
 
#4

AW: TStringList ohne BOM speichern?

  Alt 2. Jan 2014, 09:53
Hallo - äh genau und frohes neues Jahr,

ich schreibe damit PHP Scripte und PHP hat die unschöne Eigenart bei einem Script mit BOM einen headers already sent Fehler zu produzieren.

Viele Grüße ...
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.202 Beiträge
 
Delphi 10.4 Sydney
 
#5

AW: TStringList ohne BOM speichern?

  Alt 2. Jan 2014, 09:55
Wenn unbedingt sein muss bastel dir eine Hilfsfunktion indem du die Stringlist erst in einen stream Speicherst und dann die ersten 3 Byte beim Speichern weg lässt.

@Furtbichler: Ich kenne öfter den Fall das "Hochqualifizierte" ERP bzw. PLM-Entwickler es nicht schaffen in Exportdateien solch einen BOM zu schreiben (Man muss öfter schon froh sein das Sonderzeichen korrekt geschrieben werden). Dann haben Sie auch vermutlich oft das Problem so einen BOM lesen und korrekt interpretieren zu können.
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.475 Beiträge
 
Delphi 12 Athens
 
#6

AW: TStringList ohne BOM speichern?

  Alt 2. Jan 2014, 10:17
gibt es eine einfache Möglichkeit (D2010) das BOM nicht mitzuschreiben?
  1. Update auf XE oder höher
  2. sl.WriteBOM := false;
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
Perlsau
(Gast)

n/a Beiträge
 
#7

AW: TStringList ohne BOM speichern?

  Alt 2. Jan 2014, 10:18
Hab eben mal zum Testen zwei Textdateien erstellt, einmal via Liste.SaveToFile(Datei) und einmal via Liste.SaveToFile(Datei,TEncoding.UTF8). Wenn ich die mit PsPad öffne, wird mir dort für beide Dateien das Format UTF8 angezeigt.

Gehe ich recht in der Annahme, daß ab Delphi 2009 standardmäßig im UTF8-Format gespeichert wird, wenn nichts anderes angegeben wurde? Die Datei mit dem Bom ist nur unerheblich größer als die andere.

Geändert von Perlsau ( 2. Jan 2014 um 10:21 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.475 Beiträge
 
Delphi 12 Athens
 
#8

AW: TStringList ohne BOM speichern?

  Alt 2. Jan 2014, 10:21
gibt es eine einfache Möglichkeit (D2010) das BOM nicht mitzuschreiben?
  1. Update auf XE oder höher
  2. sl.WriteBOM := false;
OK, sollte Punkt 1 zu große Schwierigkeiten bereiten, kannst du auch eine eigene Klasse von TUTF8Encoding ableiten, dort GetPreamble überschreiben und ein leeres TBytes zurückgeben. Du musst dich dann bloß selbst um Instanziierung und Freigabe des Encoding-Objekts kümmern.
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
fillibuster

Registriert seit: 3. Nov 2010
Ort: Coesfeld
245 Beiträge
 
Delphi 2010 Professional
 
#9

AW: TStringList ohne BOM speichern?

  Alt 2. Jan 2014, 10:29
Hallo,

danke für die Antworten. Werde ich dann wohl selbst Hand anlegen. Eine Sache noch in diesem Zusammenhang. In den gespeicherten Dateien ist immer eine (Leer)Zeile mehr drin als eigentlich geschrieben wird. Liegt das auch am BOM?

Viele Grüße ...
  Mit Zitat antworten Zitat
Benutzerbild von MaBuSE
MaBuSE

Registriert seit: 23. Sep 2002
Ort: Frankfurt am Main (in der Nähe)
1.840 Beiträge
 
Delphi 10 Seattle Enterprise
 
#10

AW: TStringList ohne BOM speichern?

  Alt 2. Jan 2014, 10:37
gibt es eine einfache Möglichkeit (D2010) das BOM nicht mitzuschreiben? Meine erstellten StringListen speichere ich so:
sl.SaveToFile(savepath + 'muster.txt',TEncoding.UTF8);
TStrings hat eine Eigenschaft WriteBOM.

Per Default ist die auf True.

Beisp:
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
begin
  Memo1.Lines.WriteBOM := True;
  memo1.Lines.SaveToFile('z:\temp\1.txt', TEncoding.UTF8);
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
  Memo1.Lines.WriteBOM := False;
  Memo1.Lines.SaveToFile('z:\temp\2.txt', TEncoding.UTF8);
end;
(°¿°) MaBuSE - proud to be a DP member
(°¿°) MaBuSE - proud to be a "Rüsselmops" ;-)
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 3  1 23      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:59 Uhr.
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