无法在Pascal 1.9.2中读取保存的文件

时间:2019-03-09 16:19:18

标签: pascal

PROGRAM archivosejercic1o;
TYPE
    num = file of integer;
VAR
    arch_num: num;
    name: string[20];
    x: integer;
BEGIN
    writeln('Type the name of the file without extension:');
    readln(name);
    name:=name+'.txt';
    Assign (arch_num,name);
    Rewrite(arch_num);
    writeln('Type in a number to add to the file:');
    readln(x);
    WHILE (x <> 0) DO BEGIN
        write(arch_num,x);
        writeln('Type in another number to add to the file:');
        readln(x);
    END;
    close(arch_num);
END.

我有这段代码可以创建一个由用户提供的一系列数字的文件,在编译并执行该文件后,该文件会出现在Pascal目录中,但是当我打开它时,会得到类似这样的信息:

我刚刚开始与档案馆互动,所以我是新手,如果您能帮助我,我会很感激。

1 个答案:

答案 0 :(得分:2)

二进制与文本

您正在打开file of Integer。这意味着您将整数写入文件,即文件为 binary 格式。

但是您将其命名为name + '.txt',这向我建议您要将文本(而不是二进制值)写入文件。

现在,如果您将其显示为文本,但它不是文本,那么您将无法获得所需的内容。

二进制意味着您例如将一个4字节整数写为12345(或十六进制$3039)作为那4个字节,即字节{{1} },$39$30$00的顺序(或相反的顺序,取决于您计算机的endianness)。

二进制很紧凑,但是很少为人所读。如果将这样的二进制文件显示为 text ,则可能会得到奇怪的输出,甚至根本没有输出(只需尝试在文本编辑器中打开 .exe 文件,然后看你得到什么)。您可能想将数字写为文本。或者,您可以使用十六进制编辑器等工具查看它们(如果您可以阅读十六进制)。

因此,以$00类型打开文件:

text

有关 binary text 的更多信息:https://fileinfo.com/help/binary_vs_text_files。请注意,这还不能解释Unicode文本的不同版本。