我的自定义过程说明错在那里?(80分)

  • 主题发起人 主题发起人 xinjia
  • 开始时间 开始时间
X

xinjia

Unregistered / Unconfirmed
GUEST, unregistred user!
过程说明:
type
procedure addrec(var str1,str2,str3,str4,str5:string);
var
edt1,edt2,edt3,edt4,edt5:string;
函数调用
edt1:=edit1.text;
:
:
edt5:=edit5.text;
addrec(edt1,edt2,edt3,edt4,edt5);
过程声明
procdure addrec(str1,str2,str3,str4,str5:string);
begin
:
:
end;
执行时说:Unsatisfied forward or external declaration 'jhdj.addrec'
不满足前部或外部变量说明
 
你前面声明部分用了var,实现部分却没用,当然不一致了!
 
1.函数/过程怎能从Type中定义?
2.若使用前调用过程,应使用前置说明。
 
丢了声明 var procdure addrec( var str1,str2,str3,str4,str5:string);
如 type 前面 的类说明应加在 addrec 前面
例如: type tform1=class(tformt);
procedure addrec(var str1,str2,str3,str4,str5:string);
var
edt1,edt2,edt3,edt4,edt5:string;
调用这个函数是最好加上 form1。addrec(。。。);
这在有许多类时尤其重要。可能不同的类有相同的过程。就是 d4 不同于 d3 之处
 
Delphi有一点很有趣,类型要一致,连变量名都必须一致(这一点跟C不一样)。
 
过程声明错了,应该为
过程声明
procdure addrec(var str1,str2,str3,str4,str5:string);
begin
:
:
end;
 
过程声明应写为:
procedure Tform1.addrec(var str1,str2,str3,str4,str5:string);
 
var
edt1,edt2,edt3,edt4,edt5:string;

函数声明
procedure addrec(var str1,str2,str3,str4,str5:string); forward;

函数调用
edt1:=edit1.text; : :
edt5:=edit5.text; addrec(edt1,edt2,edt3,edt4,edt5);过程声明
procdure addrec(str1,str2,str3,str4,str5:string);
begin
:
:
end;

函数实现
procedure addrec(var str1,str2,str3,str4,str5:string);
begin
:
:
end;
 
声明部分与实现部分必须完全一致,
声明部分:
procedure addrec(var str1,str2,str3,str4,str5:string);
实现部分:
procedure TForm1.addrec(var str1,str2,str3,str4,str5:string);
必须是这样。
 
各位大侠所举办法,一一实验还是报错,我的问题再重述一遍,在程序声明,
...
type
Tjhlr = class(TForm)
...
procedure addrec(var str1,str2,str3,str4,str5:string);
//与其他同一窗体的过程procedure 在一起。
var
edt1,edt2,edt3,edt4,edt5:string;
程序部分
edit1.text:=edt1...
addrec(edt1,edt2,edt3,edt4,edt5);

procedure addrec(var str1,str2,str3,str4,str5:string);
begin
....
end;
如果程序中有其他错误,则报其他错误,排除,则报
Unsatisfied forward or external declaration 'jhdj.addrec'
 
...
type
Tjhlr = class(TForm)
...
procedure addrec(var str1,str2,str3,str4,str5:string);
end;

var
edt1,edt2,edt3,edt4,edt5:string;

程序部分
edit1.text:=edt1
...
addrec(edt1,edt2,edt3,edt4,edt5);
...

procedure Tjhlr.addrec(var str1,str2,str3,str4,str5:string);
begin
....
end;
 
出错的原因是我在程序当中的函数体的函数头前未加窗体名
 
可以结束了!
 
其实,在过程声明后,然后用 Ctrl+Shift+C 就可以生成过程实现的框架(Delphi 4)。这样就不会出现类似的错误。
 
多人接受答案了。
 
后退
顶部