Can';t读取Pascal 1.9.2中保存的文件 程序架构; 类型 num=整数的文件; 变量 arch_num:num; 名称:字符串[20]; x:整数; 开始 writeln('键入不带扩展名的文件名:'); readln(姓名); 名称:=名称+'.txt'; 分配(拱门编号、名称); 重写(arch_num); writeln('键入要添加到文件中的数字:'); readln(x); 当(x0)开始时 写入(arch_num,x); writeln('键入要添加到文件中的另一个数字:'); readln(x); 结束; 关闭(拱门数量); 结束。

Can';t读取Pascal 1.9.2中保存的文件 程序架构; 类型 num=整数的文件; 变量 arch_num:num; 名称:字符串[20]; x:整数; 开始 writeln('键入不带扩展名的文件名:'); readln(姓名); 名称:=名称+'.txt'; 分配(拱门编号、名称); 重写(arch_num); writeln('键入要添加到文件中的数字:'); readln(x); 当(x0)开始时 写入(arch_num,x); writeln('键入要添加到文件中的另一个数字:'); readln(x); 结束; 关闭(拱门数量); 结束。,pascal,Pascal,我有一段代码,它创建了一个带有用户提供的一系列数字的文件,在编译和执行该文件后,该文件出现在Pascal目录中,但当我打开它时,我得到如下结果: 我刚刚开始与档案互动,所以我在这方面是全新的,如果您能帮助我,我将非常感激。二进制与文本 您正在打开一个整数文件。这意味着您将整数写入文件,即该文件采用二进制格式 但是您将其命名为name+'.txt',这向我建议您要向文件中写入文本,而不是二进制值 现在,如果您将其显示为文本,但它不是文本,则无法获得所需内容 二进制意味着,例如,您可以将一个4字节的

我有一段代码,它创建了一个带有用户提供的一系列数字的文件,在编译和执行该文件后,该文件出现在Pascal目录中,但当我打开它时,我得到如下结果:

我刚刚开始与档案互动,所以我在这方面是全新的,如果您能帮助我,我将非常感激。

二进制与文本 您正在打开一个整数文件。这意味着您将整数写入文件,即该文件采用二进制格式

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

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

二进制意味着,例如,您可以将一个4字节的整数,如
12345
(或十六进制
$3039
)写入这4个字节,即字节
$39
$30
$00
$00
,按该顺序(或相反顺序,取决于您的计算机)

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

因此,请按类型
text
打开文件:

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.


有关二进制文件与文本文件的更多信息:。请注意,这还不能解释Unicode文本的不同版本。

您的“类似这样的东西”是空的。将
write(arch\u num,x)
更改为
writeln(arch\u num,x)
,以便
x
值位于单独的行上。。然后将
while
循环替换为
重复。。。直到
循环包含一个
如果x 0,那么…
因此您只能在循环内的一个地方调用
readln(x)
。我不会告诉你确切的代码,因为你什么也学不到。如果你在做这件事时遇到了困难,问另一个问题。帕斯卡到底是什么?注意,帕斯卡语有很多方言。最受欢迎的是Delphi和FreePascal,但也有其他的,比如GNU Pascal(它模仿了其他一些语言),等等。请说明您使用的方言。FPC 1.9.2在2004年失去了支持。请至少升级到fpc2.0(2005)@Marco:我想这是,目前的版本是1.9.2,是用Delphi编写的IDE,使用FreePascal或gnupascal(AFAIK)。我假设它使用的是最新版本。Dev Pascal获得了版本号“1.9.2”,因为它打包了FPC 1.9.2(这是一个测试版,但非常有用),版本控制是同步的(在它出现1.9之前)。GPC更像是一个重新包装,只是在几年后(iirc由相关小组负责?),IDE项目已经停滞了多年。一些有教育意义的人喜欢设置的简单性,并且在那些日子里喜欢它而不是lazarus。很好地发现OP使用的是一个整数的
文件,我在我的评论中没有提到,但你太客气了,没有指出。
PROGRAM archivosejercic1o;
TYPE
    num = text;
VAR
    arch_num: num;
    name: string[20];
    x: integer;
BEGIN
  ...
    writeln(arch_num, x);
  ...
END.