AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Code-Bibliothek Library: Dateien / Laufwerke Delphi Unicodedateien (UTF-16) laden und speichern
Thema durchsuchen
Ansicht
Themen-Optionen

Unicodedateien (UTF-16) laden und speichern

Ein Thema von shmia · begonnen am 28. Jul 2005
Antwort Antwort
shmia

Registriert seit: 2. Mär 2004
5.508 Beiträge
 
Delphi 5 Professional
 
#1

Unicodedateien (UTF-16) laden und speichern

  Alt 28. Jul 2005, 15:53
Mit folgenden Funktionen kann man Dateien im UTF-16 Format laden und speichern.

Delphi-Quellcode:
// Hilfsfunktion zum vertauschen der Byteorder in einem WideString
procedure SwapWideString(var ws:WideString);
var
   i : Integer;
begin
   for i := 1 to length(ws) do
      ws[i] := WideChar(Swap(Ord(ws[i])));
end;



procedure SaveWideStringToFile(const filename:string; const ws:WideString);
var
   fs : TFileStream;
   data : WideString;
begin
   data := ' '+ws;
   data[1] := Widechar($FEFF); // BOM = Byte Order Mark

// SwapWideString(data);
   fs := TFileStream.Create(filename, fmCreate);
   try
      fs.WriteBuffer(data[1], Length(data)*sizeof(Widechar));
   finally
      fs.Free;
   end;
end;


function LoadWideStringFromFile(const filename:string):WideString;
var
   fs : TFileStream;
   bom : WideChar;
begin
   fs := TFileStream.Create(filename, fmOpenRead and fmShareDenyWrite);
   try
      fs.ReadBuffer(bom, sizeof(bom));
      SetLength(Result, (fs.Size div sizeof(widechar))-1);
      fs.ReadBuffer(Result[1], fs.Size-sizeof(bom));

      if bom = Widechar($FEFF) then
      else if bom = Widechar($FFFE) then
         SwapWideString(Result)
      else
         raise EConvertError.Create('unsupported Byte Order Mark in file '+filename);
   finally
      fs.Free;
   end;
end;
Andreas
  Mit Zitat antworten Zitat
Antwort Antwort

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 00:47 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