为什么函数在传递参数的时候,数值总是不对?
代码如下,在一个过程里面得到了一组数据,用一个数值保存的,然后调用两个过程把这个数值作为参数,但是在调用的过程里面得到的数组中的数值不对,不知怎么搞,小弟初学,大侠路过指点一二,谢谢了。程序是想把EDIT1中输入的用空格隔开的数字,在EDIT2中排列好,待用。(小甲鱼视频冒泡排序的部分)implementation
{$R *.dfm}
procedure TForm1.btn1Click(Sender: TObject);
var
str,tmp: string;
i,t: Integer;
zhengli: Array of Integer;
n: Integer;
begin
str:=Trim(edt1.Text);
SetLength(zhengli,Length(str));
t:=0;
i:=0;
while (i<=Length(str)) do
begin
while ((str<>#32 ) and (str<>#0)) do
begin
tmp:= tmp+str;
inc(i);
end;
if (tmp<>'') then
begin
zhengli:= StrToInt(tmp);
inc(t);
tmp:='';
end;
inc(i);
end;
// for n:=0 to (t-1) do
//edt2.Text:= edt2.Text + IntToStr(zhengli) + ' '; //在这里显示出来的数值就完全正确
paixu(zhengli);//传递这个数组,调用这个过程后得到的数值就变了
end;
procedure TForm1.paixu(shuzu: array of Integer);
var
n: Integer;
begin //到这里后传递过的数组里面多了组0,不知是从哪里来的?
edt2.Text:='';
for n:=0 to High(shuzu) do
edt2.Text:= edt2.Text + IntToStr(shuzu) + ' '; //显示出来的数值 多了很多组0
end;
end.
这个程序编译后杀毒软件也报有病毒,是啥原因啊?
工程下载
SetLength(zhengli,Length(str)); 这句你再看下。例:3 2 1 通过这句就定义了5个数组,加上了中间的空格在内的。 {:2_27:}记得当时我做这题时,是在zhengli:= StrToInt(tmp);之前加多句SetLength(zhengli,Length(zheng) + 1);
.. 谢谢老大帮忙!在没有调用 paixu(zhengli) 这个过程前数组里面的数据是正确的,就是调用这个过程后,得到的数组里面的数据才改变的,是怎么回事啊 ? 应该是数组长度设置的不对,
在zhengli:= StrToInt(tmp);之前加多句SetLength(zhengli,Length(zhengli) + 1);
就正常了。
我的杀毒软件是avast ,上面的工程编译后老是报有病毒,自动删除生成的exe文件,我要把杀毒软件关闭才行,如何可以解决这个问题啊 看贴不回贴 都什么习惯呀? http://pimg.163.com/club/newclub/images/PP0.gif
http://qb.lqualyn.com/images/sigline.gif
夏季穿什么防辐射服好
页:
[1]