Pascal 文件读取问题,运行时无法输出

Pascal 文件读取问题,运行时无法输出,pascal,Pascal,我试着做一个程序,从一个文件中读取数字,输出到一个向量中,然后写入它们。代码编译得很好,但在运行时,它只需要一个提示,而不提供任何输出 节目讲演 type Arreglo = array [1..30] of integer; var //Arch:text; Prom:byte; i:integer; ArregloA:Arreglo; Procedure CargadorVectorialdeArchivo (var ArregloA:Arre

我试着做一个程序,从一个文件中读取数字,输出到一个向量中,然后写入它们。代码编译得很好,但在运行时,它只需要一个提示,而不提供任何输出

节目讲演

type 
    Arreglo = array [1..30] of integer;
var  
    //Arch:text;
    Prom:byte;
    i:integer;
    ArregloA:Arreglo;

Procedure CargadorVectorialdeArchivo (var ArregloA:Arreglo);
    var 
        Arch:text;
        i:integer;

Begin 
    assign (Arch,'Numeros.txt');
    reset (Arch);   

    i := 1;
    while not eof(Arch) do
        Write(Arch);Read(ArregloA[i]);
        i := i + 1;
End;

Begin 

    CargadorVectorialdeArchivo(ArregloA);


    for i := 1 to 14 do 
        WriteLn(ArregloA[i]:3);

End.

正如我所说,没有错误消息,只有提示,没有输出。我必须按住CTRL-Z键才能使它脱离这个“循环”。预期的输出将是数组的编号,每行一个。

将过程重写为:

Procedure CargadorVectorialdeArchivo (var ArregloA:Arreglo);
    var 
        Arch:text;
        i:integer;

Begin 
    assign (Arch,'Numeros.txt');
    reset (Arch);   

    i := 1;
    while not eof(Arch) do
       begin 
        Read(Arch,ArregloA[i]); 
        i := i + 1;
       end;
End;

Arch
放在文件前面会告诉编译器您要从该文件而不是从键盘读取内容。

将过程重写为:

Procedure CargadorVectorialdeArchivo (var ArregloA:Arreglo);
    var 
        Arch:text;
        i:integer;

Begin 
    assign (Arch,'Numeros.txt');
    reset (Arch);   

    i := 1;
    while not eof(Arch) do
       begin 
        Read(Arch,ArregloA[i]); 
        i := i + 1;
       end;
End;

Arch
放在文件前面会告诉编译器您想从该文件中读取内容,而不是从键盘。

1)在文件打开以供输出的情况下,您无法测试
Eof(Arch)
,因为您正在向该文件写入内容。2) 您没有使用
write(Arch)
编写任何内容,因为您没有提供任何要编写的数据。3) 在将内容传递给functino之前,您不会将任何内容放入
Arregoa
。4) 您不会像在代码中那样读取数组。你需要备份并重新开始。考虑一下将多个值放入一个数组(项目列表)并将该列表写入文件所需的步骤。此外,i+1在while循环之外。你必须使用适当的缩进来注意这些错误。谢谢你们!还有,什么是适当的缩进呢?该语句(i:=i+1)应该缩进到与“while”相同的级别,因为没有封闭的开始/结束。然后您会注意到错误,这意味着您没有纠正将值实际放入数组的问题。随机数字串是由于使用未初始化的变量而导致的随机内存内容。在您更改代码后,我无法告诉您当前版本的代码有什么问题,因为我无法从这里看到您的屏幕。我建议您学习使用调试器逐步检查代码以查看发生了什么。1)在文件打开以供输出的情况下,您不能测试
Eof(Arch)
,因为您正在向文件写入。2) 您没有使用
write(Arch)
编写任何内容,因为您没有提供任何要编写的数据。3) 在将内容传递给functino之前,您不会将任何内容放入
Arregoa
。4) 您不会像在代码中那样读取数组。你需要备份并重新开始。考虑一下将多个值放入一个数组(项目列表)并将该列表写入文件所需的步骤。此外,i+1在while循环之外。你必须使用适当的缩进来注意这些错误。谢谢你们!还有,什么是适当的缩进呢?该语句(i:=i+1)应该缩进到与“while”相同的级别,因为没有封闭的开始/结束。然后您会注意到错误,这意味着您没有纠正将值实际放入数组的问题。随机数字串是由于使用未初始化的变量而导致的随机内存内容。在您更改代码后,我无法告诉您当前版本的代码有什么问题,因为我无法从这里看到您的屏幕。我建议您学习使用调试器逐步检查代码以查看发生了什么。