AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren

WideStringlist in UTF-8 mit Delphi 2007 speichern

Ein Thema von ioster · begonnen am 30. Aug 2023 · letzter Beitrag vom 31. Aug 2023
 
Benutzerbild von himitsu
himitsu
Online

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.476 Beiträge
 
Delphi 12 Athens
 
#15

AW: WideStringlist in UTF-8 mit Delphi 2007 speichern

  Alt 31. Aug 2023, 15:35
Wie gesagt, Arrayzugriffe auf leere Strings/Arrays, knallen gern mal, daher
Delphi-Quellcode:
if Zeile <> 'then
  Stream.WriteBuffer(Zeile[1], Length(Zeile)*Sizeof(WideChar));

// oder

Stream.WriteBuffer(PWideChar(Zeile)^, Length(Zeile)*Sizeof(WideChar));
Wenn man das BOM vorher als CHAR in den String einfügt, ist es egal, da dann der String nie leer ist.




PS: die TWideStrings und TWideStringList der Unit Delphi-Referenz durchsuchenWideStrings speichern auch das BOM.
Weiß nicht ob und wie vor Delphi XE das gemacht wurde, aber diese Unit gab es auch schon in Delphi 7, wenn ich mich nicht total irre.

Delphi-Quellcode:
procedure TWideStrings.SaveToStream(Stream: TStream; Encoding: TEncoding);
var
  Buffer, Preamble: TBytes;
begin
  if Encoding = nil then
    Encoding := TEncoding.Unicode; // The default encoding is UTF-16

  Buffer := Encoding.GetBytes(string(GetTextStr));
  Preamble := Encoding.GetPreamble;

  if Length(Preamble) > 0 then
    Stream.WriteBuffer(Preamble[0], Length(Preamble));

  Stream.WriteBuffer(Buffer[0], Length(Buffer));
end;
Ein Therapeut entspricht 1024 Gigapeut.

Geändert von himitsu (31. Aug 2023 um 15:53 Uhr)
  Mit Zitat antworten Zitat
 

 
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

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 13:17 Uhr.
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