我在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中运行?
如果你的Delphi不太旧,你可以这样做:
uses IOUtils;
...
S := TFile.ReadAllText('MyFileName.txt');
Run Code Online (Sandbox Code Playgroud)
当 RTL 提供的东西已经足够好时,不要发明自己的解决方案!
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, TMemo和TButton你的表格上,双击该按钮创建一个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)