编译错误 - a-textio.ads中的不可见声明

时间:2014-01-02 20:26:17

标签: ada

我是Ada的新手,不幸的是我遇到了问题。这是我的代码:

with Ada.Text_Io;
with Ada.Integer_Text_Io;
--use  Ada.Text_Io;
--use Ada.Integer_Text_Io;


procedure life is
type Plansza is array (Integer range <>, Integer range <>) of Integer;
File : Ada.Text_IO.File_Type;
tab : Plansza(1..4,1..4);
Filename : String := "plansza.txt";

begin
    Ada.Text_IO.Open (File => File, Mode => Ada.Text_IO.In_File, Name => Filename);
    for x in 1..4 loop
        for y in 1..4 loop
            Ada.Text_IO.Get ( File => File, Item => Plansza(x,y) );
        end loop;
    end loop;
    for x in 1..4 loop
        for y in 1..4 loop
            Ada.Text_IO.Put (Item => Plansza(x,y));
        end loop;
        New_Line;
    end loop;

end life;

结束这是我得到的:

life.adb:14:17:“Set_Output”不可见

life.adb:14:17:a-textio.ads:114中的不可见声明

life.adb:18:44:没有候选人的解释符合实际情况:

life.adb:18:73:类型转换的参数必须是单个表达式

life.adb:18:73:==&gt;在a-textio.ads:239打电话给“获取”

life.adb:18:73:==&gt;在a-textio.ads:205打电话给“获取”

life.adb:23:44:没有候选人的解释符合实际情况:

life.adb:23:44:在a-textio.ads:241声明的“put”调用参数“File”时缺少参数

life.adb:23:44:在a-textio.ads:207声明的“put”调用中缺少参数“File”的参数

life.adb:23:58:类型转换的参数必须是单个表达式

life.adb:23:58:==&gt;在a-textio.ads:242致电“Put”。

life.adb:23:58:==&gt;在a-textio.ads:208打电话给“Put”。

life.adb:25:25:“New_Line”不可见

life.adb:25:25:a-textio.ads:166上的不可见声明

life.adb:25:25:a-textio.ads:165上的不可见声明

gnatmake:“life.adb”编译错误

我不知道这些错误来自何处,特别是a-textio.ads中的“不可见的声明”,这些参数也是如此。

1 个答案:

答案 0 :(得分:4)

看起来您发布的文件不是您正在编译的文件(没有Set_Output调用,因此您可以使用该文件)。

...然而

Get和Put超载了不同版本,其中任何版本都与您要求的版本相匹配。

要获取和放置整数,您需要Ada.Integer_Text_Io而不是Ada.Text_Io的获取和结算。你有两个With条款,但是你明确地调用Text_IO个,这些不能对整数进行操作。

你是Get从一个文件和Put到控制台;如果这就是你想要的,那没关系。

要使“New_Line”可见,请取消注释Use子句,或者更好,明确说明所需的WHICH New_Line,例如: Ada.Text_IO.New_Line。 (缺少)Set_Output错误可能类似。一旦看到模式,这些都很容易解决。