ReadProjectToTreeView(var trvProject:TTreeView)与ReadProjectToTreeView(trvProject:TTreeView)的效果一样吗

解决方案 »

  1.   

    这里是一样的,var是传指针,不用是传值,你将控件传过去了等于是传了指针,只有传指针才能修改,传值的话只能读取,不能修改
      

  2.   

    在object pascal 中如果参数是对象,是不是传值和传引用一样
      

  3.   

    这就是区别procedure aaa(var i:integer);
    begin
     i:=100;
    end;
    procedure bbb(i:integer);
    begin
      i:=100;
    end;调用:
    procedure ccc;
    var x:integer;
    begin
      x:=50;
      bbb(x);//这和bbb(50)一样,现在x=50
      aaa(x);//现在x=100
    end;
      

  4.   

    如果你传递的是一个对象呀不是数据类型
    那么加var 与不加 var 都是一样的
      

  5.   

    加了var可以作为参数输出就象是一个指针一样可以改变结果,但是没有var是不能修改值的
      

  6.   

    效果不一样,
      加了 var 是引用传递,相当于指针,在函数/过程内部修改了参数,退出函数后也会改变。
      没加 var 是值传递,只在函数/过程内部使用,退出函数后不改变参数的值。1:在 ReadProjectToTreeView(..) 中
       如果对 trvProject 访问、增加、修改节点...这是一样的。   2:在 ReadProjectToTreeView(..) 中
       将 trvProject 指向了另外一个指针,比如 trvProject := nil;
       这是不同的,
        A 对于ReadProjectToTreeView(var trvProject: TTreeView)
          函数调用完了之后 trvProject 变了,trvProject = nil;
        B 对于ReadProjectToTreeView(trvProject: TTreeView)
          函数调用完了之后 trvProject 没变,还是原来的。