一个很菜得问题,在delphi中得过程得怎么写?我在开始得时候声明了,但是报错?谢了。(50分)

  • 主题发起人 主题发起人 小小白
  • 开始时间 开始时间

小小白

Unregistered / Unconfirmed
GUEST, unregistred user!
一个很菜得问题,在delphi中得过程得怎么写?我在开始得时候声明了,但是报错?谢了。
 
够菜!因为我不知你在问什么!
 
呵呵,问问题最好有下面的东西

1。你的代码。
2。Delphi 报告的错误信息
3。你想实现的目的
 
接口部分声明
procedure 过程名(参数);

程序部分声明
procedure 过程名(参数);
begin
...
...
end;

 
如果在一个过程中引用另一个过程,被引用的过程必须在引用过程的前面声明
 
举个例子:
……
type
TForm1 = class(TForm)
……
procedure SaveFile(); //这里是声明
private
{ Private declarations }
……

procedure TForm1.SaveFile; //然后定义(注意这个TForm1.)
begin
……
end;
……
 
也可以不用声明。
直接写过程。
procedure SaveFile;
begin
……
end;
 
……
type
TForm1 = class(TForm)
……
procedure SaveFile(S:string); //这里是声明
private
{ Private declarations }
……

procedure TForm1.SaveFile(S:String); //然后定义(注意这个TForm1.)别忘了参数呀
begin
……
end;
……
 
倒,,把你的代码贴上来给大家看看,,几句话不能说明问题,
 
DELPHI 6.0 中,有个快捷方式,我没记住!你可以查一下。
 
一,有参数 接口处声明 procedure 过程(参数);
程序部分 procedure tform1.过程(参数);
二,无参数 接口处不需要声明
程序部分 procedure 过程();
注意 没有tform1
 
报错的时候提示的意思是要在过程前要加tform。
‘unit1.pas(50):unsatisfied forward or extemal declaration:'Tform1.panduan'’
那么如果我要在另一个过程中引用这个过程,是不是也要在过程名前加tform呢?
 
>>unsatisfied forward...
在出错的那一行按Ctrl+Shift+C,Delphi就会自动生成类过程的框架。

>>是不是也要在过程名前加tform呢
如果“另一个过程”本身就是TForm1的方法,可以不加;否则就一定要加。
 
如果我没有理解错的话,你的问题可以这样回答:

1。对于一个类中定义的过程或函数在定义和引用时应该加上该类的类名
2。如果两个过程或函数属于同一个类,则调用时可以省略该类的类名
 
你定义的类如果属于tform,那么就要再前面加类名tform,
否则,不需要在接口处声明.因为他不属于那个类.
 
type
TForm1 = class(TForm)
.......
procedure panduan(var prtflag,prthave,frnum:boolean; var n: integer);
///判断的函数,prtflag为printflag,prthave为printhave,frtnum为fristnum
///n为按键数字
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;
tempnum,temp:string;
///tempnum为在edit1和edit2之间传递数据,temp1储存运算之前的值
printflag,zfflag,fristnum,printhave:boolean;
///printflag为判断是否是小数,zffalg判断符号,fristnum判断第一的字母是否为数字
///printhave为判断是否已经有小数点
num1:real;
num2:integer;
flag:integer;

implementation

{$R *.dfm}

procedure TForm1.panduan(printflag,printhave,fristnum,num2);
begin
if printflag=false then///判断是否有小数点。
begin ///没有
tempnum:=tempnum+floattostr(num2);
Tform1.edit1.Text:=tempnum;
tempnum:=edit1.text;
end
else if printhave=false then ///判断是否已经为小数
begin
if fristnum=false then///判断是否为第一个数
begin
tempnum:='0.';
edit1.Text:=tempnum;
tempnum:=edit1.text;
fristnum:=true;
printhave:=true;
end
else
begin
tempnum:=tempnum+'.';
tempnum:=tempnum+floattostr(num2);
edit1.Text:=tempnum;
tempnum:=edit1.text;
printhave:=true;
end;
end
else
begin
tempnum:=tempnum+floattostr(num2);
edit1.Text:=tempnum;
tempnum:=edit1.text;
end;
end;
这个是我写的过程,我想用它来判断输入的数是否是小数,然后根据情况把结果输出到edit控件
里。
但是在运行的时候delphi说“missing parameter type”但是所有的参数我都声明了呀?
谢了。
 
实现部分应该定义为:
procedure TForm1.panduan(prtflag, prthave, frnum: boolean; n: integer);
begin
......
end;

调用应为: panduan(printflag,printhave,fristnum,num2);
 
多人接受答案了。
 
后退
顶部