При переносе некоторого кода из Delphi 7 в Delphi 2010 я переписывал свою функцию LoadTextFromFile ().
function LoadTextFromFile(const aFullFileName: string): string;
var
lBuffer: TBytes;
lEncoding: TEncoding;
lFileStream: TFileStream;
lSize: Integer;
begin
if not FileExists(aFullFileName) then
begin
raise Exception.Create('File "' + aFullFileName + '" not found.');
end;
lFileStream := TFileStream.Create(aFullFileName, fmOpenRead + fmShareDenyNone);
try
if lFileStream.Size <= 0 then
begin
Result := '';
end
else
begin
lSize := lFileStream.Size - lFileStream.Position;
SetLength(lBuffer, lSize);
// Read file into TBytes buffer
lFileStream.Read(lBuffer[0], lSize);
// Read encoding from buffer
TEncoding.GetBufferEncoding(lBuffer, lEncoding);
// Get string from buffer
Result := lEncoding.GetString(lBuffer);
end;
finally
lFileStream.Free;
end;
end;
Когда мысль била меня по голове: в стандартной библиотеке должно быть что-то подобное. Многие пользователи хотят прочитать текстовый файл в строку, но я не смог найти такую стандартную функцию. Самое близкое, что я нашел, - это использование TStringlist для загрузки текста. Но A) создание списка TStringlist выглядит ненужным, и B) я не хочу переносить накладные расходы из TStringlist.
Вопрос: есть ли стандартная функция LoadTextFromFile в Delphi 2010?