请问 这条错误信息 说明什么?(50分)

  • 主题发起人 主题发起人 Yves
  • 开始时间 开始时间
Y

Yves

Unregistered / Unconfirmed
GUEST, unregistred user!
[Error] Unit1.pas(44): Unsatisfied forward or external declaration: 'TForm1.OnCreate'
我写了个程序,一编译就出现上述的错误信息,双击后跳转到出错的那一行(如下),请问这是错在那里了?这条错误信息可有何玄机?
procedure OnCreate(Sender: TObject);
 
在TForm 的 public 中没有加上以下声明:
procedure OnCreate(Sender: TObject);
你可能加在TForm1定义的外面。
 
这句话在什么位置?interface还是implementation?
 
当然在interface
不是我写上的,
是我在object inspector 的 events 选项卡中添加事件时,delphi自动添加的
 
to jsxjd
我程序中其它的事件 或是 我自己写的函数都声明在 oncreate的前后行,也没有在public后声明
怎么它们没出错?
 
把你在 TForm1.OnCreate 之间的代码剪切掉.
然后,双击你的Form1,delphi会为你自动生成
TForm1.OnCreate 的过程.
你就把刚刚剪切的那段代码放进去就ok了
 
对,先按楼上说的试试,记得剪切掉之后点一下保存,如果正常delphi应该删除InterFace
和implementation中的声明,然后双击、粘贴。
 
to Yves:
这是一个常见的错误,也很简单!就是说你定义一个过程,
但没有给出过程体即过程的实现。你仔细检查一下看看,或者你有实现,
但过程名与上面申明的不同,如果检查不出来,我建议把它们删除,然后
重新申明一次。
 
to 淡淡的笑
不行啊,试过后还是老样子
 
不可能吧,保存了吗?能自动删除吗?要不把代码贴上来看看
 
不行呀,
renew n 回了
不行
 
把implementation 中的procedure OnCreate(Sender: TObject);改成
procedure TForm1.OnCreate(Sender: TObject);就OK了!
 
我是这样做的,
1、将 实现 部分的
procedure TForm1.oncreate(Sender: TObject);
……
end;
剪切掉
2、将 接口 部分的
procedure TForm1.oncreate(Sender: TObject);
删除
3、将object inspector 的 events 选项卡中的OnCreate项内的 oncreat
删除
4、双击窗体(form1),在弹出的code编辑窗口中出现了
procedure TForm1.FormCreate(Sender: TObject);
begin
end;
查看 接口 部分的声明 也 变成了
procedure TForm1.FormCreate(Sender: TObject);
object inspector 的 events 选项卡中的OnCreate项内变成了FormCreate
5、将原来的程序填入procedure TForm1.FormCreate(Sender: TObject);函数中
6、结果出现如下错误
[Error] Unit1.pas(44): Unsatisfied forward or external declaration: 'TForm1.FormCreate'
请大伙在帮帮忙,
出错不怕,就怕出这种没头绪的问题,真是 鬼打墙
 
再试试三点的办法,不行就贴代码上来看看
 
to 三点
不是这样的错误
 
你把你的单元文件和正常的单元文件比较一下,就知道那里出问题了
 
这样啊 那我就 贴相关的一些
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ExtCtrls, jpeg, StdCtrls, ComCtrls, Menus, CustomizeDlg,StrUtils;
const
……
type
bkMap=Array[0..27,0..22] of integer;
Eimg=array[1..6] of Timage;
TForm1 = class(TForm)
Bomber_img: TImage;
bk_img: TImage;
MainMenu1: TMainMenu;
mfile: TMenuItem;
mfopen: TMenuItem;
SBar1: TStatusBar;
OpenDia: TOpenDialog;
Timer1: TTimer;
Enemyimg1: TImage;
Enemyimg2: TImage;
Enemyimg3: TImage;
Enemyimg4: TImage;
Enemyimg5: TImage;
Enemyimg6: TImage;
Picstore: TImage;
N1: TMenuItem;
N2: TMenuItem;
N3: TMenuItem;
procedure OnKeyDown(Sender: TObject;
var Key: Word;
Shift: TShiftState);
procedure onclick(Sender: TObject);
procedure getflag(sx:integer;sy:integer;ox:integer;oy:integer);
procedure Timer1Timer(Sender: TObject);
procedure moveto(sx:integer;sy:integer;px:integer;py:integer;obj:Timage;idd:integer);
procedure FormCreate(Sender: TObject);//这行出错
private
……
public
……
end;
var
Form1: TForm1;
implementation

{$R *.dfm}
procedure TForm1.FormCreate(Sender: TObject);//实现部分的函数定义
var
i:integer;
begin
Form1.timer1.enabled:=false;
bomber_img.Enabled:=false;
Enemyimg[1]:=Enemyimg1;
Enemyimg[2]:=Enemyimg2;
Enemyimg[3]:=Enemyimg3;
Enemyimg[4]:=Enemyimg4;
Enemyimg[5]:=Enemyimg5;
Enemyimg[6]:=Enemyimg6;
for i:=1 to 6 do
Enemyimg.Enabled:=false;
form1.DoubleBuffered:=true;
end;
end.
请诸位大侠快出手啊
鬼打墙了,降妖除魔呀:)
急死我了:(
 
>>>procedure FormCreate(Sender: TObject);//这行出错
建议将此行删除,再将事件代码删除,
按ctrl+F9编译,有提示时单击确定...
双击窗体重新加入...
 
问题原因是声明和实现部分不统一,声明部分应为:
procedure FormCreate(Sender:TObject);
实现部分应为:
procedure TForm1.FormCreate(Sender:TObject);
 
秋风 同志
看看我贴的源代码,
 
后退
顶部