【发布时间】:2016-01-29 03:33:08
【问题描述】:
问题:我最近购买了一台 1989 年的 IBM PS2,我正在尝试通过软盘将大型文件从基于 UNIX 的新机器移动到这台 IBM。我有一个 bash 脚本,可以将我的文件分成 ~2MB 块,现在我正在尝试编写一个 pascal 程序来在这些文件被传输后重建它们。
我无法在这台计算机上找到正确的文件读/写方法。我尝试过各种 Pascal 教程网站,但它们都是针对较新版本的(我使用 File Handling In Pascal 关注的网站)。我能够创建一个空文件(如下所述),但我无法写入它。有谁知道这种计算机的正确帕斯卡读写方法?
我知道这是一个晦涩难懂的问题,所以提前感谢您能给我的任何帮助!
详情:
当前正确创建文件的测试代码是这样的:
program testingFiles;
uses Crt, Win;
const FILE_NAME = 'testFile.txt';
var outFile : File;
begin
writeln('creating file ...');
Assign(outFile, FILE_NAME);
rewrite(outFile);
end.
这是一些不起作用的测试代码,方法的append()和close()找不到:
program testingFiles;
uses Crt, Win;
const FILE_NAME = 'testFile.txt';
var outFile : File;
begin
writeln('creating file ...');
Assign(outFile, FILE_NAME);
append(outFile);
writeln('this should be in the file');
close(outFile);
end.
这是一个同样不起作用的替代方法,writeln() 方法只会打印到终端。但除此之外,这确实可以编译。
program testingFiles;
uses Crt, Win;
const FILE_NAME = 'testFile.txt';
var outFile : File;
begin
writeln('creating file ...');
Assign(outFile, FILE_NAME);
rewrite(outFile);
writeln('this should be in the file');
close(outFile);
end.
系统:如前所述,这是一个 1989 年的IBM PS2。
- 它安装了Windows 3.0,也可以运行DOS和MS-DOS终端。
- 它具有 Microsoft SMARTDrive 磁盘缓存版本 3.06
- 它安装了 Turbo Pascal 5.5,我使用
turbo作为我的命令行 pascal 编辑器。 (自述文件最后一次更新是在 1989 年) - 它已安装 Turbo 调试器 1.5。
再一次,我知道这是一个晦涩难懂的问题,所以提前感谢您能给我的任何帮助!
【问题讨论】:
-
这个问题并没有那么晦涩难懂。基本 Pascal 文件 I/O 已经很长时间没有改变了。你只是把它当作一个练习吗?你知道 DOS
COPY可以连接文件,甚至是使用/B选项的二进制文件。 例如,COPY File1/B + File2/B File3。但如果你想在 Pascal 中执行此操作,你是否查找过 file handling in Pascal? -
@lurker 感谢
COPY的知识,我实际上并不知道,我会试一试(我是 linux 人)!但我已经阅读了该页面,它是问题中的第一个链接。我将更改链接标题,使其更明显,谢谢。 -
如果您在整个过程中保持输出文件打开,我认为您不需要
append来连接文件。您最初只需要rewrite来打开新的输出文件进行写入。在您编译的第二个示例中,您为什么不使用链接到页面中描述的writeln(outFile, ...)?即使是最古老的 Pascal 编译器也应该可以工作(可以追溯到 Niklaus Wirth 1974)。您的第二个示例如何使用close编译但您的第一个示例找不到close? -
你为什么要导入unit win?这只会造成麻烦,因为我假设你没有使用一些 win3.x
-
我做了一些研究,
append函数应该至少可以追溯到 Turbo Pascal 3.0。所以当你说append和close找不到时,还有其他问题。编译器支持它们。
标签: pascal dos turbo-pascal