zoukankan      html  css  js  c++  java
  • Delphi 函数传Const 参数的坑

    原文见https://blog.marcocantu.com/blog/2020-december-Delphi-const-string-params.html。

    大概的意思看以下代码

      TForm1 = class(TForm)
        SpeedButton1: TSpeedButton;
        procedure SpeedButton1Click(Sender: TObject);
      private
       s1: string;
        procedure Test(const Value: string);
        { Private declarations }
      public
        { Public declarations }
      end;
    
    var
      Form1: TForm1;
    
    implementation
    
    {$R *.dfm}
    procedure TForm1.Test(const Value: string);
    begin
    //如果是修改Value,IDE自然是不给你修改的。但是S1是全局变量,你可以访问,可以修改
       s1 := '456';
    
       ShowMessage(Value);
    end;
    procedure TForm1.SpeedButton1Click(Sender: TObject);
    
    begin
    
      s1 := Copy('123', 1);
    //这里入,S1就不可以修改了 Test(s1);
    end; end.

    然后就

    参数以Const 传入是有优化作用的,不用可惜了那如何避免。上面的链接了说了解决方案,在修改S1的时候,将传入的Value放入一个变量里就可以了

    procedure TForm1.Test(const Value: string);
    begin
       var s2:=Value;
       s1 := '456';
    
       ShowMessage(Value);
    end;
    procedure TForm1.SpeedButton1Click(Sender: TObject);
    
    begin
    
      s1 := Copy('123', 1);
      Test(s1);
    end;
    
    end.

    这样就可以解决了!!记住一定要在修改s1之前

  • 相关阅读:
    python day05
    python day04
    python day03
    python day02
    计算机基本了解
    流程控制
    MFC程序中创建文件夹(文件路径)
    svn移动目录并且保存历史日志
    C++单例模式的问题
    PtInRect 的详细范围
  • 原文地址:https://www.cnblogs.com/wuxi15/p/14186711.html
Copyright © 2011-2022 走看看