你好我得到错误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作为参数在我的程序中? 非常感谢。
答案 0 :(得分:4)
我认为Text
是属性。并且您无法将属性传递给var
或out
参数。您只能将变量传递给这些类型的参数。
您需要找到一种不同的方式来编写代码。你提出了一个这样的想法,但对我来说似乎不必要的复杂。我看不到比简单更简单的东西:
AdvEdit1.Text := 'Pippo';
怎么会有比这更简单的代码?您需要至少指定以下内容:
Text
财产。上面的代码就是这样,仅此而已。