函数的嵌套问题! (50分)

  • 主题发起人 主题发起人 山木人
  • 开始时间 开始时间

山木人

Unregistered / Unconfirmed
GUEST, unregistred user!
如下过程嵌套如何定义和调用?
procedure TForm1.Button3Click(Sender: TObject);
var
d:array[1..6] of single;
lb,lc:single;
k,k1,k2:byte;

function ResultLC:single
[red]//嵌套函数怎样定义?[/red]
begin
for k:=k1 to k2 do LC:=LC+power(2,d[k])
[red]//已定义的LC变量如何返回值?[/red]
end;

begin //主过程
......
k1:=......

k2:=......
//在值已经赋值
ResultLC
[red]//怎样调用所嵌套的函数?[/red]
lb:=lc+.....
//需要使用
edn;
 
不是已经写的很好了么?
 
可是在for语句出现如下错误:
For loop control variable must be simple local variable

还请指点,希望详细点。
 
应该这样,k在这里定义,去掉上面的定义:
function ResultLC:single
//嵌套函数怎样定义?
var
k :Byte;
begin
for k:=k1 to k2 do LC:=LC+power(2,d[k])
//已定义的LC变量如何返回值?
end;
 
把LC放到ResultLC中定义,返回用Result := LC;
 
可是k在主程序里已经定义了。
 
循环语句的循环变量不能象你那样定义,应该在函数本身定义;
改改吧。
 
如果k只是个循环控制用的变量,再定义一下也无防,
或为代码易读,你换个变量名就行了,
 
真的?那我去试试。
另外我以前在for循环中用Inc()也不行,有没有象Basic中的step语句?
 
Pascal中的循环变量不能在循环体中被改变,并且必须是本地变量。
 
呵呵,我来收点劳务费。

procedure TForm1.Button3Click(Sender: TObject);
var
d:array[1..6] of single;
lb,lc:single;
k,k1,k2:byte;

function ResultLC:single
[red]//嵌套函数怎样定义?[/red]
begin
for k:=k1 to k2 do result:=power(2,d[k])
[red]//已定义的LC变量如何返回值?[/red]
end;

begin //主过程
......
k1:=......

k2:=......
//在值已经赋值
lc:=lc+ResultLC
[red]//怎样调用所嵌套的函数?[/red]
lb:=lc+.....
//需要使用
edn;
 
哦,不好意思,搞错了,没看青你那是个循环
procedure TForm1.Button3Click(Sender: TObject);
var
d:array[1..6] of single;
lb,lc:single;
k,k1,k2:byte;

function ResultLC:single
[red]//嵌套函数怎样定义?[/red]
begin
result:=0;
for k:=k1 to k2 do result:=result+power(2,d[k])
[red]//已定义的LC变量如何返回值?[/red]
end;

begin //主过程
......
k1:=......

k2:=......
//在值已经赋值
lc:=lc+ResultLC
[red]//怎样调用所嵌套的函数?[/red]//这里的lc是否要加,你看着办了,我的意思你明就行。
lb:=lc+.....
//需要使用
edn;

还可以当它是个普通函数,可以以变参的形式把lc传进去。呵呵
 
谢谢大家,
 

Similar threads

S
回复
0
查看
1K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
900
SUNSTONE的Delphi笔记
S
S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
I
回复
0
查看
711
import
I
后退
顶部