pascal - 如何从 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
行 - 也就是说,它会读取到您想要的行,而不是进一步 - 然后打印数字和行。
推荐阅读
- node.js - 很长的sql请求nodejs
- java - C 与 Java 中的堆栈使用情况
- python - Pandas 在不改变数据框顺序的情况下设置索引或重新索引
- c# - 将用户的名字和姓氏添加到 ASP.NET Core 3 Razor 页面中的每个页面
- react-native - 如何在 React-Native 项目中更改 Realm 数据库的默认路径?
- c# - 关于视觉工作室参考的新手问题
- r - R:使用 for 循环创建一个权重为 1/n 的向量
- sql - 从查询中删除匹配的行对
- javascript - 从 Date 中提取月份和年份并显示为 MMM-YY
- maven - 如何获取所有依赖 jar 进行部署