无法赋值
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;
我有点卡住了。我想在 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;