如何从Delphi中的文件加载文本?

Cam*_*ila -1 delphi vb6

我在Visual Basic中有这个代码从文件加载文本.我需要将它翻译成Delphi,但无法弄清楚如何.

Open txtFile.Text For Binary As #1
file = Space(LOF(1))
Get #1, , file
Close #1
Run Code Online (Sandbox Code Playgroud)

如何让这段代码在Delphi中运行?

Wou*_*ick 7

如果你的Delphi不太旧,你可以这样做:

uses IOUtils;
...
S := TFile.ReadAllText('MyFileName.txt');
Run Code Online (Sandbox Code Playgroud)

当 RTL 提供的东西已经足够好时,不要发明自己的解决方案!


Ken*_*ite 6

VB LOF()返回一个表示文件长度的长整数.在这种情况下,它用于分配LOF大小为空格的字符串,并LOF()返回任何文件名所在的长度txtFile.Text(可能是编辑控件).

Delphi不需要这样的技术来简单地将文本文件加载到内存中.如果您只是想将文件内容放入字符串中,那么Delphi中大致相当的代码:

function LoadTextFromFile(const FileName: string): string;
var
  SL: TStringList;
begin
  Result := '';
  SL := TStringList.Create;
  try
    SL.LoadFromFile(FileName);
    Result := SL.Text;
  finally
    SL.Free;
  end;
end;
Run Code Online (Sandbox Code Playgroud)

使用它:

var
  MyText: string;
begin
  MyText := LoadTextFromFile('C:\Temp\MyFile.txt');
  // Do something with text
end;
Run Code Online (Sandbox Code Playgroud)

如果你想为用户显示文本那就更简单了-刚落一个TEdit, TMemoTButton你的表格上,双击该按钮创建一个OnClick事件,并使用这样的代码:

procedure TForm1.Button1Click(Sender: TObject);
begin
  Memo1.Lines.LoadFromFile(Edit1.Text);
end;
Run Code Online (Sandbox Code Playgroud)

对于那里的纯粹主义者来说,这是一个近似的文字等价物:

function GetStringFromFile(const FileName: string): AnsiString;
var
  MS: TMemoryStream;
begin
  Result := '';
  MS := TMemoryStream.Create;
  try
    MS.LoadFromFile('D:\Temp\TestText.txt');
    SetString(Result, PAnsiChar(MS.Memory), MS.Size);
  finally
    MS.Free;
  end;
end;
Run Code Online (Sandbox Code Playgroud)