[英]E2003 Undeclared identifier: 'ITestInterfataUnit'
這看起來是一個愚蠢的問題,但我已經為此苦苦掙扎了一段時間。 我有兩個單位。 一個是帶有聲明接口的單元,另一個是我想實現該接口的表單。 代碼:
unit ITestInterfata;
interface
implementation
type
ITestInterfataUnit = interface
['{A0CD69F8-C919-4D2D-9922-A7A38A6C841C}']
procedure Intrare(s : string);
end;
end.
主要形式單位:
unit frameTestInterfata;
interface
uses
Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants,
System.Classes, Vcl.Graphics,
Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls, ITestInterfata;
type
TformaTestInterfata = class(TForm, ITestInterfataUnit)
Button1: TButton;
private
{ Private declarations }
public
{ Public declarations }
procedure Intrare(s: string);
end;
var
formaTestInterfata: TformaTestInterfata;
implementation
{$R *.dfm}
{ TformaTestInterfata }
procedure TformaTestInterfata.Intrare(s: string);
begin
ShowMessage('asdf');
end;
end.
如果我在ITestInterfataUnit
上使用 CTRL+單擊,它會將我帶到正確位置的正確單元。 我已經看到這里討論過這樣的問題,我已經嘗試了所有我認為的解決方案。
uses
只有在單元的接口部分中定義的符號才會被導出並在其他單元中可見。 您在實現部分定義了符號ITestInterfataUnit
,因此ITestInterfataUnit
在其他單元中不可見。
文檔說:
接口部分聲明了客戶端可用的常量、類型、變量、過程和函數。 也就是說,對於希望使用該單元中的元素的其他單元或程序。 這些實體被稱為公共實體,因為其他單元中的代碼可以訪問它們,就像它們在單元本身中聲明一樣。
....
除了公共過程和函數的定義之外,實現部分還可以聲明單元私有的常量、類型(包括類)、變量、過程和函數。 也就是說,與接口部分不同,其他單元無法訪問在實現部分中聲明的實體。
您必須在接口部分定義ITestInterfataUnit
。
unit ITestInterfata;
interface
type
ITestInterfataUnit = interface
['{A0CD69F8-C919-4D2D-9922-A7A38A6C841C}']
procedure Intrare(s : string);
end;
implementation
end.
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.