如何从 Pascal 中的文本文件中读取特定行

How to read a specific line from a text file in Pascal

所以我正在制作一个程序,用户输入一些行并将它们保存在一个文件中,然后我们让他选择他写的哪一行来加密它。 意味着他将输入一个数字,假设 2 指的是文本文件中的第 2 行。 问题是,如何从文本文件中获取特定行? Seek 显然不适用于文本文件!

Procedure cryptProcess( Var msgFile, cryptFile : Text; N : Integer);
Var
  pNumber : Integer;
Begin
  Writeln('Select a phrase to crypt [Number : ',N,'] : ');
  Readln( pNumber );
  Reset( msgFile );
  For i:= 1 To N Do
    Begin
      If ( i = pNumber ) Then
        Begin
          Readln( msgFile, tempVar2 );
          Writeln( i );
          Writeln( tempVar2 );
        End;
    End;
  Close( msgFile );
End;

Pascal 只能按顺序处理文本文件 - 为了从文本文件中读取和使用行 n,您必须 读取 (并可能丢弃)第 1 行到 n - 1. 除非用户碰巧请求第一行,否则您现有的代码实际上从未从文件中读取文本。

你要做的是替换

  For i:= 1 To N Do
    Begin
      If ( i = pNumber ) Then
        Begin
          Readln( msgFile, tempVar2 );
          Writeln( i );
          Writeln( tempVar2 );
        End;
    End;

    For i:= 1 To pNumber Do
      ReadLn(msgFile, tempVar2);
    WriteLn(pNumber);
    WriteLn(tempVar2);

这会从文件中读取前 pNumber 行 - 也就是说,它会读取到您想要的行,不再读取 - 然后打印数字和行。