我收到错误消息“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;
感谢您的帮助!
答案 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
参数提供(在所有非例外代码路径中)。