gpt4 book ai didi

delphi - Delphi 2010有LoadTextFromFile函数吗?

转载 作者:行者123 更新时间:2023-12-03 15:03:22 30 4
gpt4 key购买 nike

在将一些代码从 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 带来的开销。

问题:Delphi 2010中有标准的LoadTextFromFile函数吗?

最佳答案

是的,Delphi 2010 中存在一个类似的函数,称为 ReadAllText并且是在 IOUtils 单元中声明的 TFile 记录的一部分。

检查此声明

class function ReadAllText(const Path: string): string; overload; inline; static;
class function ReadAllText(const Path: string; const Encoding: TEncoding): string; overload; inline; static;

查看此示例

program Project80;

{$APPTYPE CONSOLE}

uses
IOUtils,
SysUtils;
Var
Content : string;
begin
try
Content:=TFile.ReadAllText('C:\Downloads\test.css'); //load the text of the file in a single line of code
//Content:=TFile.ReadAllText('C:\Downloads\test.css',TEncoding.UTF8); //you can an encoding too.
Writeln(Content);
Readln;
except
on E: Exception do
Writeln(E.ClassName, ': ', E.Message);
end;
end.

关于delphi - Delphi 2010有LoadTextFromFile函数吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3487053/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com