将文本文件读入数组

cod*_*101 3 delphi

我如何将文件从磁盘上的文件读入内存中的数组?

另外,我注意到使用ReadLn只显示了第一行(看起来很明显,因为它是ReadLn,但我将如何阅读整个文本文档?)

Dav*_*nan 8

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

这将文件的内容返回到可以编入索引的字符串中,因此可以认为是一个数组.

或许你想要一个字符串数组而不是一个字符数组,在这种情况下,最简单的方法就是直接使用字符串列表:

var
  Strings: TStringList;    
...
  Strings := TStringList.Create;
  try
    Strings.LoadFromFile(FileName);
    //can now access Strings[0], Strings[1], ..., Strings[Strings.Count-1]
  finally
    Strings.Free;
  end;
Run Code Online (Sandbox Code Playgroud)

  • 但是文件并不是一个好名字,因为这是Delphi中的保留字.<G> (3认同)

RRU*_*RUZ 7

从Delphi XE 2010 开始, 您可以使用该IOUtils.TFile.ReadAllLines函数在一行代码中读取文本文件的内容.

class function ReadAllLines(const Path: string): TStringDynArray;
class function ReadAllLines(const Path: string;  const Encoding: TEncoding): TStringDynArray; overload; static;
Run Code Online (Sandbox Code Playgroud)

  • 这也出现在D2010中.令人惊讶的是,它将文本加载到字符串列表中,然后使用SetLength(结果,长度(结果+ 1))在循环中填充动态数组! (3认同)