Как загрузить юникоды в мемо?
Материал из DRKB
Как загрузить юникоды в мемо?[править | править код]
procedure LoadUnicodeFile(const filename: string; strings: TStrings);
procedure SwapWideChars(p: PWideChar);
begin
while p^ <> #0000 do
begin
p^ := WideChar(Swap(Word(p^)));
Inc(p);
end;
end;
var
ms: TMemoryStream;
wc: WideChar;
pWc: PWideChar;
begin
ms := TMemoryStream.Create;
try
ms.LoadFromFile(filename);
ms.Seek(0, soFromend);
wc := #0000;
ms.Write(wc, SizeOf(wc));
pWC := ms.Memory;
if pWc^ = #$FEFF then { normal byte order mark }
Inc(pWc)
else if pWc^ = #$FFFE then
begin { byte order is big-endian }
SwapWideChars(pWc);
Inc(pWc);
end
else
; { no byte order mark }
strings.Text := WideChartoString(pWc);
finally
ms.free;
end;
end;
Использовать
LoadUnicodeFile(filename, memo1.lines);
Source: Взято с Delphi Knowledge Base: http://www.baltsoft.com/
ID: 00555