首页 > 解决方案 > 如何从 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

解决方案


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行 - 也就是说,它会读取到您想要的行,而不是进一步 - 然后打印数字和行。


推荐阅读