声明中的var和const && 形式参数中的var和const

时间:2021-07-30
本文章向大家介绍声明中的var和const && 形式参数中的var和const,主要包括声明中的var和const && 形式参数中的var和const使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。

记得把声明中的var和const与形式参数中的var和const区分开来!!

procedure TForm2.Button1Click(Sender: TObject);
  procedure TestVarOutConst(var sStr01: string; out sStr02: string ; const sStr03: string ; sStr04:string );
  const  //只是定义常量而已
    cHjp='ZXL';
  var //这里声明了一个变量
    vZXL:string ;
  begin
    //sStr02的值为空
    ShowMessage('sStr01: '+sStr01+'/sStr02: '+sStr02+'/sStr03: '+sStr03+'/sStr04: '+sStr04);
    {这里show值时由于形参参数2是out,故形参参数2的实参的值会被忽略,即为空。
    待下面代码执行之后,参数2的值就变成了‘sStr02’。}
    sStr01:='sStr01';
    sStr02:='sStr02';
    //sStr03:='sStr03';//这个也算一个常量,因为没有引用计数,所以不能修改,这样写编译不过去
    //方法中的const形式参数有时也相当于一个常数,不能在方法中给此形式参数赋值;
    {字符串和动态数组比较特殊,有引用计数一说,动态数组有引用计数,静态数组没有引用计数,
    这些比较复杂,,,先把声明中的var和const与形式参数中的var和const区分开来就好了,后续
    再深入了解。}

    sStr04:='sStr04';
  end;
  var
    vStr01,vStr02,vStr03,vStr04:string;
begin
  {注意形参
  var sStr01: string   //传地址
  out sStr02: string   //这个也是传地址,但是忽略实参的值
  const sStr03: string //const的意思 不做引用计数
  }
  //形参都是字符串类型,只是为了好测试
  vStr01:='vStr01';
  vStr02:='vStr02';
  vStr03:='vStr03';
  vStr04:='vStr04';
  TestVarOutConst(vStr01,vStr02,vStr03,vStr04);
  //这里可以看出vStr01,vStr02的值改变了
  ShowMessage('vStr01: '+vStr01+'/vStr02: '+vStr02+'/vStr03: '+vStr03+'/vStr04: '+vStr04);

end;

原文地址:https://www.cnblogs.com/168-h/p/15078194.html