2016-12-18 3 views
2

Je viens donc de travailler sur un programme générique pour l'école qui utilise les algorithmes de tri. L'enseignant aime toujours tout mettre dans des unités différentes, j'ai donc décidé de créer une procédure de "sortie" qui donne une sortie du tableau trié.Lazarus: erreur fatale lors de l'ouverture d'une procédure "output" dans une autre procédure

unit selectionsort; 

{$mode objfpc}{$H+} 

interface 

uses 
    Classes, SysUtils, typen, ausgabe; 
procedure SSort (FeldS: t_Feld); 

implementation 
procedure SSort (FeldS: t_Feld); 
var h,j,min,hilf: integer; 
begin 
    for h:= 1 to c-1 do 
     begin 
     ## all the sorting stuff 
     end; 
    **ausgabe(FeldS);** 
end; 
end. 

(Ausgabe est allemand pour la sortie)

unit ausgabe; 

{$mode objfpc}{$H+} 

interface 

uses 
    Classes, SysUtils, typen; 
procedure ausgabe(FeldA: t_feld); 

implementation 
procedure ausgabe(FeldA: t_feld); 
begin 
    for i:= 1 to c do 
     begin 
     write(FeldA[i], ' '); 
     end; 

    readln(); 
end; 

end. 

La partie en gras (lors de l'appel de la procédure Ausgabe) est l'endroit où je reçois l'erreur: fatale: Erreur de syntaxe "" "mais je sais que je pourrais simplement supprimer la procédure" Ausgabe "et faire la sortie dans les procédures de tri mais je voudrais le faire de cette façon

Répondre

2

Comme la procédure ausgabe et l'unité ont le même name (ceci est possible car ils sont dans des portées différentes), le compilateur suppose un "identificateur qualifié": unitname.procedurename Ceci est nécessaire si plusieurs unités ont des identifiants avec le même nom Pour surmonter l'erreur: Soit vous renommez l'unité ou la procédure ou que vous appelez la procédure en utilisant son nom qualifié (le premier ausgabe est le nom de l'unité où le compilateur doit rechercher le symbole, le deuxième ausgabe est le nom de la procédure actuelle):

ausgabe.ausgabe(FeldS);

+0

Merci! A beaucoup aidé. –