如何从 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
行 - 也就是说,它会读取到您想要的行,不再读取 - 然后打印数字和行。
所以我正在制作一个程序,用户输入一些行并将它们保存在一个文件中,然后我们让他选择他写的哪一行来加密它。 意味着他将输入一个数字,假设 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
行 - 也就是说,它会读取到您想要的行,不再读取 - 然后打印数字和行。