无法赋值

Cannot Assign value

我有点卡住了。我想在 TRec 中检查并验证我的变量,其中任何一个都是空的或其他东西。主要问题是在我验证记录后它没有改变。不知道是什么问题

如有任何帮助或建议,我们将不胜感激。

这是我的例子:

  TRec = record
    Name: string;
    Age: string;
    etc...
  end;  

  TParameterRec = record
  private
    fRec: TRec;
    procedure SetRec(Value: TRec);
  public
    property Rec: TRec read fRec write SetRec;
  end;

  TSampleClass = class
  private 
    fParameters: TParameterRec;
  protected
    ValidateParameters; 
    ValidateParameters_Record(aRec: TRec);    
  public
    property Parameters: TParameterRec read fParameters write   SetParameters;
  end;

  procedure TSampleClass.SetParameters(Value: TParameterRec);
  begin
    fParameters := Value;
    ValidateParameters;
  end;

  procedure TSampleClass.ValidateParameters;
  begin
    ValidateParameters_Record(fParameters.Rec);
  end; 

 procedure TSampleClass.ValidateParameters_Record(
   aRec: TRec);
 begin
   if aRec.Name = '' then
    aRec.Name := 'something';  //Here nothing happens, outside name will be empty 
 end;

procedure TParameterRec.SetRec(Value: TRec);
begin
  fRec := Value;
end;

....
var
  SampleClass: TSampleClass;
  ParamRec: TParameterRec;
begin
  SampleClass := TSampleClass.Create;
  try
    ParamRec.Rec := SomeRec; //It has default values, Name is empty
    SampleClass.Parameters := ParamRec;
    ....  

  end;

记录通常按值传递到 function/procedure,因此您必须使用 var 参数按引用传递,因此将 ValidateParameters_Record 更改为

procedure ValidateParameters_Record(var aRec: TRec)

然后在 ValidateParameters 中您需要创建一个临时记录,因为记录属性不能作为 var 参数传递,例如

procedure TSampleClass.ValidateParameters;
var
  Rec: TRec;
begin
  Rec := fParameters.Rec;
  ValidateParameters_Record(Rec);
  fParameters.Rec := Rec;
end;