Как загрузить юникоды в мемо?

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);
Взято с Delphi Knowledge Base: http://www.baltsoft.com/

Отправить комментарий

Проверка
Антиспам проверка
Image CAPTCHA
...