Не используйте AssignFile. Это устаревший код, и он не работает с UnicodeStrings. Вместо этого используйте TStringList или TFileStream для чтения файла.
[непроверенная]
procedure ReadFile;
var
vFileReader : TstringList;
begin
vFileReader := TStringList.Create;
try
vFileReader.LoadFromFile('nomes_tst_0001.txt');
mmEntrada.Lines.Assign(vFileReader);
finally
vFileReader.Free;
end;
end;
EDITED
Другим хорошим решением является функция follow, которую я написал очень давно:
[испытания]
function GetFileAsString(aFileName: string; aOffSet : Integer = 0; aChunkSize: Integer = -1): string;
var
vStream: TFileStream;
vBuffer: TBytes;
vCurEncoding, vDefEncoding: TEncoding;
vOffSet: Integer;
vFileSize: Int64;
begin
vCurEncoding := nil;
vDefEncoding := TEncoding.Default;
vStream := TFileStream.Create(aFileName, fmOpenRead + fmShareDenyNone);
try
if aChunkSize > 0 then begin
vFileSize := aChunkSize;
end
else begin
vFileSize := vStream.Size;
end;
vStream.Position := aOffSet;
SetLength(vBuffer, vFileSize);
vStream.ReadBuffer(Pointer(vBuffer)^, vFileSize);
vOffSet := TEncoding.GetBufferEncoding(vBuffer, vCurEncoding);
if (vCurEncoding <> vDefEncoding) then begin
vBuffer := TEncoding.Convert(vCurEncoding, vDefEncoding, vBuffer, vOffSet, vFileSize - vOffSet);
end;
Result := vDefEncoding.GetString(vBuffer);
finally
vStream.Free;
end;
end;
Эта функция может обрабатывать Unicode-строки (с спецификацией), а также отменять строки. На самом деле, он может читать все виды текстовых файлов, которые у вас есть.