TStringList
не поддерживает UTF-16 в D2006, поэтому вам придется вручную загружать и декодировать данные файла перед тем, как поместить вывод в ваш TStringList
. Например:
var
sl: TStringList;
{$IFNDEF D2009_OR_LATER}
ms: TMemoryStream;
ptr: PWideChar;
s: AnsiString;
dlen, slen: Integer;
{$ENDIF}
begin
...
{$IFDEF D2009_OR_LATER}
sl.LoadFromFile('...', TEncoding.Unicode);
{$ELSE}
ms := TMemoryStream.Create;
try
ms.LoadFromFile('...');
ptr := PWideChar(ms.Memory);
dlen := ms.Size div SizeOf(WideChar);
if (dlen >= 1) and (PWord(ptr)^ = $FEFF) then
begin
Inc(ptr);
Dec(dlen);
end;
slen := WideCharToMultiByte(0, 0, ptr, dlen, nil, 0, nil, nil);
if slen > 0 then begin
SetLength(s, slen);
WideCharToMultiByte(0, 0, ptr, dlen, PAnsiChar(s), slen, nil, nil));
end;
sl.Text := s;
finally
ms.Free;
end;
{$ENDIF}
...
end;