将值分配给变量参数

| 我在Delphi XE中得到了这样的代码
function DoSomething(MyVar : Variant) : boolean;
begin
  MyVar := \'Bar\';
  Result := true;
end;

procedure TForm1.Button1Click(Sender: TObject);
var
  foo : string;
begin
  foo := \'\';
  showmessage(foo); // shows blank ofc
  DoSomething(foo);
  showmessage(foo); // still blank
end;
我正在尝试做的事情,使其可以设置foo的参数。我尝试使用var关键字,例如
DoSomething(var MyVar : Variant)....
但这不会编译。 这样做的原因是,DoSomething可以为MyVar分配一个字符串或整数,这就是为什么它是一个变体...     
已邀请:
当我做
function Foo(var Bar: variant): boolean;
begin
  Bar := \'beta\';
end;

procedure TForm1.FormCreate(Sender: TObject);
var
  a: variant;
begin
  a := \'alpha\';
  Foo(a);
  caption := a;
end;
表格的标题为
beta
。所以它为我编译... 您尝试发送
string
作为
var variant
参数。就像编译器说的那样(need8ѭ),您需要将
variant
作为
var variant
参数发送! 但是,变体通常不是最好的选择(性能欠佳,仅是一件事)。 你可以做一些简单的事情
type
  TValType = (vtString, vtInteger);
  TData = record
    ValType: TValType;
    ValStr: string;
    ValInt: integer;
  end;
并做
function Foo(var Data: TData): boolean;
    

要回复问题请先登录注册