从TextFile中读取特定行

时间:2016-05-21 16:50:05

标签: delphi pascal

假设我有一个文本文件并且在里面(中间或其他)有以下几行:

  

我的名字:某人

     

我的年龄:17岁

     

我的学校:哈佛

他们没有特定的行号(随机)而且没有重复("我的名字"只显示一次,我的年龄等等......)

这不是我正在寻找的内容,但我认为它应该读取该特定行,但它不是(它正在读取整个文件):

AssignFile(myFile, 'C:\Users\boss\Desktop\dude.txt');
myWord := 'My name : Someone';
Reset(myFile);

while not Eof(myFile) do
begin
  readln(myFile, myWord);
  writeln(myWord);
end;

CloseFile(myFile);

正如我所说,这是阅读整个文本文件,我只是试图让某些东西能够操作它,但我无法做到。

我想在"我的名字"之后阅读整行。这意味着名称每次都不会相同。

2 个答案:

答案 0 :(得分:3)

如果我遵循你想要做的事情,它实际上很简单。

假设你有

var
  ALine,
  StartOfLineToFind,
  AValue : String;
  P : Integer;

  [...]
  StartOfLineToFind := 'My name :';

然后在你的循环中做

    readln(myFile, ALine);
    if Pos(StartOfLineToFind, ALine) = 1 then begin  // see if the line starts with the label you're looking for
      AValue := Copy(ALine, Length(StartOfLineToFind), Length(ALine) - Length(StartOfLineToFind);  //  Copy the rest of the line after the label
      AValue := Trim(AValue);  //  remove the leading and trailing spaces
      writeln(AValue);
    end;

答案 1 :(得分:3)

清洁我的水晶球...... 可能你需要这样的代码:

readln(myFile, myWord);
if Pos('My name:', myWord) = 1 then
  Writeln(myWord);