错误"形式参数" G"未被引用"

时间:2012-11-17 11:13:35

标签: parameters ada

我收到错误消息“parsing.adb:22:32:警告:形式参数”G“未被引用” 当我编译我的代码。知道我必须改变什么不得到这个错误信息吗?

这是我的代码:

with Ada.Text_IO, Ada.Integer_Text_IO, Life, parsing;
use Ada.Text_IO, Ada.Integer_Text_IO, Life, parsing;

package body Parsing is

Parsing_Failed : exception;


type New_Grid is record
Hauteur : Natural;
Largeur : Natural;
Tableau : Grid;
end record;

   procedure Grid_Load_LIF(G : out Grid ; File_Name : in String) is
    Fichier:File_Type;
    Ligne:String(1..75);
    Grille : New_Grid;
    Num_Ligne : Positive := 1;
    Lu : Natural:=0;
begin
open(Fichier, In_File, File_Name);

while not End_of_File(Fichier) loop
    get_Line(Fichier, Ligne, Lu);

for i in 1..Lu loop
    if ligne(I) = '*' then
        grille.Tableau(Num_Ligne,I) := True;
    elsif ligne(I)= '.' then
        grille.Tableau(Num_Ligne,I) := False;

    end if;
end loop;
Num_Ligne := Num_Ligne +1;
grille.Largeur := Lu;
grille.Hauteur := Num_Ligne;

end loop;
end Grid_Load_LIF;

end Parsing;

感谢您的帮助!

2 个答案:

答案 0 :(得分:2)

我认为您可能需要将Grid_Load_LIF更改为

procedure Grid_Load_LIF(Grille : out New_Grid ; File_Name : in String)

然后删除该行

Grille : New_Grid;

这样,当你说

grille.Largeur := Lu;
grille.Hauteur := Num_Ligne;

您指的是New_Grid来电者传递的实际Grid_Load_LIF;也就是说,来电者会写

   Gr : New_Grid;
begin
   Grid_Load_LIF (Gr, "data_file.lif");

并在返回Gr时将保存从文件中读取的数据。

答案 1 :(得分:1)

这里的基本问题是您的子例程包含out参数G,您永远不会为其赋值。这意味着它在例程之外的值,如果编译器允许你这样做,将是垃圾(甚至可能导致Contraint_Error)。

您需要为所有out参数提供(在所有非例外代码路径中)