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);
所以我刚刚为学校开发了一个使用排序算法的通用程序。老师总是喜欢把所有东西都放在不同的单元中,所以我决定创建一个 "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);