procedure TForm1.Button1Click(Sender: TObject);
var
  MyNode: TMyNode;
  i: Integer;
begin
//问题在这里
 Randomize;{这个过程来自System单元我看了帮助(英文不太好不知道理解的是否问题有)说是用在一个随机值,可1没参数2没返回值实在不明白它到底做了什么}
  for i := 1 to 5 do
  begin
    CurrentNodeClass := TMyNode;
    MyNode := TreeView1.Items.AddChild (nil,
      'item' + IntToStr (i)) as TMyNode;
    MyNode.ExtraCode := i;
    AddChildNodes(MyNode, Random (5));
  end;
end;

解决方案 »

  1.   

    因为随机函数有一个算法如果不通过Randomize来初始化每次运行程序取得随机数序列都是相同的。用了randomize随机数才具有正真意思的随机
      

  2.   

    你的意思是说它是和后面的
    AddChildNodes(MyNode, Random (5));
    Random(5)配合使用?
      

  3.   

    可以这么说,Randomize是在取随机数的预备工作。
      

  4.   

    Randomize 与 Random(5)配合使用 取 5 到 1
    中得某个数
      

  5.   

    但是Randomize与Random(5)并不在一个循环里呀这样循环里的5次随机不就都一样了(我是这么理解的可能有问题)Marco Cantu不可能犯这种错误,而实际运行后并没有如我所想的那样5次随机内容一样,请指出我先前理解的问题,我想理解的更彻底些谢谢了
      

  6.   

    Ctrl+鼠标左键 在Randomize上点一下
      

  7.   

    Randomize取随机数的预备工作
    Random(5) 取 5 到 1 中得某个数
      

  8.   

    看到了Randomize的代码吗?前面的汇编代码是先取得当前时间,然后通过一定算法得到一个值,并保存到EDX寄存器中!ADD     EAX,EDX 
    MOV     RandSeed,EAX然后通过上面的代码把值传给RandSeed,也就是所谓的随机种子!To initialize the random number generator, add a single call Randomize or assign a value to the RandSeed variable before making any calls to Random.这是Random的帮助,可见Random就是根据随机种子RandSeed获得随数!由此可知Randomize只要在获得随机数前执行就可以了!
      

  9.   

    我没学过汇编,但非常谢谢ehom的讲解你讲的很清楚我已经明白了谢谢大家