直接从过程/函数获取TAdvEdit.Text

时间:2012-11-26 14:28:54

标签: delphi delphi-xe2

你好我得到错误E2197: [DCC错误] proj1.pas(34):E2197常量对象不能作为var参数传递

unit proj1;

interface

uses
  Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
  Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls, AdvEdit;

type
  TForm1 = class(TForm)
    AdvEdit1: TAdvEdit;
    Button1: TButton;
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure SetEditText(const instr: string; out outstr: string);
begin
  outstr := instr;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
  SetEditText('Pippo', AdvEdit1.Text);
end;

end.

当然,我可以解决写作问题:

procedure TForm1.Button1Click(Sender: TObject);
var sText: string
begin
  SetEditText('Pippo', sText);
  AdvEdit1.Text := sText;
end;

但是当我有很多AdvEdit时,那很难。然后我问,是否有可能在某些模式下解决问题,直接将TAdvEdit.Text作为参数在我的程序中? 非常感谢。

1 个答案:

答案 0 :(得分:4)

我认为Text是属性。并且您无法将属性传递给varout参数。您只能将变量传递给这些类型的参数。

您需要找到一种不同的方式来编写代码。你提出了一个这样的想法,但对我来说似乎不必要的复杂。我看不到比简单更简单的东西:

AdvEdit1.Text := 'Pippo';

怎么会有比这更简单的代码?您需要至少指定以下内容:

  • 目标控制。
  • 我们正在处理Text财产。
  • 我们正在分配的事实。
  • 新值。

上面的代码就是这样,仅此而已。