来自delphi中另一个单元的程序显示未声明的标识符

时间:2014-04-06 17:27:20

标签: delphi

我似乎无法将其他单位的程序与主要单位的形式联系起来。我尝试在接口下面添加过程声明,如本问题How to run procedure from another unit?中所述,但它没有用。它一直显示 [DCC错误] Main.pas(27):E2003未声明的标识符:' sayHi' 以下是两个单位的代码: Main.pas:

unit Main;

interface

uses
  Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
  Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Unit2;

type
  TForm1 = class(TForm)
    procedure FormCreate(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);
begin
sayHi();
end;

end.

和Unit2.pas

unit Unit2;

interface uses Dialogs;

procedure sayHi();

implementation

procedure sayHi();
begin
  ShowMessage('hi');
end;

end.

这是项目的dpr文件:

program gl;

uses
  Vcl.Forms,
  Main in 'Main.pas' {Form1},
  Unit2 in 'Unit2.pas';

{$R *.res}

begin
  Application.Initialize;
  Application.MainFormOnTaskbar := True;
  Application.CreateForm(TForm1, Form1);
  Application.Run;
end.

这是main.dfm文件:

object Form1: TForm1
  Left = 0
  Top = 0
  Caption = 'Form1'
  ClientHeight = 444
  ClientWidth = 621
  Color = clBtnFace
  Font.Charset = DEFAULT_CHARSET
  Font.Color = clWindowText
  Font.Height = -11
  Font.Name = 'Tahoma'
  Font.Style = []
  OldCreateOrder = False
  OnCreate = FormCreate
  PixelsPerInch = 96
  TextHeight = 13
end

2 个答案:

答案 0 :(得分:9)

我以前见过这个,而且总是先找到不同版本的“Unit2”。

您的机器上有多个Unit2.dcu或pas 首先找到没有“SayHi”的Unit2。

请检查您的项目和Delphi全局库路径。

答案 1 :(得分:0)

如果您忘记在页面顶部的界面部分中定义过程,也会发生这种情况。