Lazarus:在另一个程序中打开 "output" 程序时出现致命错误

Lazarus: fatal error when opening an "output" procedure in another procedure

所以我刚刚为学校开发了一个使用排序算法的通用程序。老师总是喜欢把所有东西都放在不同的单元中,所以我决定创建一个 "output" 过程,它给出排序数组的输出。

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 是德语输出)

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.

粗体部分(调用过程 ausgabe 时)是我收到错误的地方:致命:语法错误,“。”预期但找到“(”。我知道我可以删除过程 "Ausgabe" 并在排序过程中进行输出,但我想这样做。

由于过程 ausgabe 和单元具有相同的名称(这是可能的,因为它们在不同的范围内),编译器假定所谓的 "qualified identifier":unitname.procedurename .如果多个单元具有相同名称的标识符,则需要这样做。要克服错误:重命名单元或过程,或者使用其限定名称调用过程(第一个 ausgabe 是编译器应在其中搜索符号的单元的名称,第二个 ausgabe 是实际的过程名称):

ausgabe.ausgabe(FeldS);