什么破delphi啊,搞得我无所适从了都!各位大侠帮忙看看,这是怎么回事?(20分)

  • 主题发起人 主题发起人 峻祁连
  • 开始时间 开始时间

峻祁连

Unregistered / Unconfirmed
GUEST, unregistred user!
下面是快速排序的代码,可就是编译不过去,说是变量i没有定义。
过程说明里不是定义了吗?如果我重新定义,又告诉我redeclare。

各位大侠帮忙看看,我动了什么机关?还是我真的写的不对?我用delphi时间还不长,
当我实在没看出来,这么写有什么没定义的。怪!

procedure TfrmMain.qkPass(var r: array of integer
s, t: integer
Var i: integer);
//快速排序
//对r[s..t]中的记录进行一趟快速排序,执行后求得i (s<=i<=t)
//若s<i则r[s..i-1]中的关键字均不大于r的关键字,若i<t则r[i+1..t]
//中记录的关键字均不小于r中的关键字
var
rp: integer;
begin
i :=s
//出错信息定义在这一行,但是不固定,因为我把这句和其它的语句换
j :=t
//后,出错信息就不一定指到那行去了,甚至会在begin行上。
rp:=r;
x:= r
//选r为轴枢记录
while i<j do
begin
while (i<j) and (r>=x) do j := j-1;
r := r[j];
while (i<j) and (r<=x) do i := i+1;
r[j] := r;
end;
r := rp;
end;
 
它是说你的 j 没有定义.
 
嘿,老哥你就是高!你怎么猜到的,你和delphi是不是有心电感应,可以通灵了啊![:D]
我细看了一下还是i,大概是字体的缘故了。
我照你说的一改,果然好了![:D][:D][:D][:D][:D]
顺便问一句,在哪儿能该message提示窗口的字体,下次不要再发生这样的事了啊!!
 
大家知道的赶紧告诉我一下,这个帖子要尽早结束才好啊。
题目太招人了,我怕贴的久了会有一大帮delphi的忠实信徒合伙来扁我啊[:D][:D]
 
直接改不了,使用 AHMExpert 专家就可以。着急结束干什么,也让我们欣赏欣赏代码。
本来要分段帽泡的代码,你一笔就写下来了。不错。
 
delphi并不破!!!
要改message的字体,只能改系统字体!!!
 
delphi显示出错信息不一定是这行,可能是临近的。
你看看原码,是j没有定义。
 
脚不正别说鞋歪
 
我给你改好了

procedure TfrmMain.qkPass(var r: array of integer
s, t: integer
Var i: integer);
//快速排序
//对r[s..t]中的记录进行一趟快速排序,执行后求得i (s<=i<=t)
//若s<i则r[s..i-1]中的关键字均不大于r的关键字,若i<t则r[i+1..t]
//中记录的关键字均不小于r中的关键字
var
rp: integer;
j, x: Integer;
begin
i :=s
//出错信息定义在这一行,但是不固定,因为我把这句和其它的语句换
j :=t
//后,出错信息就不一定指到那行去了,甚至会在begin行上。
rp:=r;
x:= r
//选r为轴枢记录
while i<j do
begin
while (i<j) and (r>=x) do j := j-1;
r := r[j];
while (i<j) and (r<=x) do i := i+1;
r[j] := r;
end;
r := rp;
end;
 
就知道会有人和我打架,呵呵,[:D]
message的那一行太窄了,把J下面的钩给截掉了,所以我就一直以为是I,可I的确没问题
所以就受蒙蔽了,当然,我把代码贴在这里,大家很容易就看出来了,他提示的是J。
 
顺便问一下,我对1000条左右的记录排序就出现堆栈溢出错误,怎么改进,
1000条数据量并不是很大吧
 
多人接受答案了。
 
后退
顶部