Delphi(-XE):使用隐式转换转换为记录类型

时间:2011-10-05 19:41:37

标签: delphi casting delphi-xe record implicit

我有一个带有方法的记录类型,代表一种特定的硬件测量类型,从一个字符串中读取。该记录包含对字符串的隐式转换(以及来自)。如果我把一个字符串作为记录类型,它似乎工作,但这样安全吗?也就是说,将字符串转换为具有隐式字符串转换的记录是否会根据分配临时值调用隐式转换?

var  a: MeasurementRecord;         // record type with implicit string conversion & decode methods
b: string;
c:double;
begin
b := Edit1.Text;              // Or any other string source 
a:=b;                         //Ok
a:= edit1.text;               //Ok
c:= a.returnQc;                 // returns measurement quality value

c:= MeasurementRecord(Edit1.text).returnQC;   //Avoiding local variable. This works, but is it correct useage?

end;

1 个答案:

答案 0 :(得分:9)

是的,这是非常安全的。代码MeasurementRecord(Edit1.text)将使用您的

从字符串MeasurementRecord创建Edit1.Text条记录
class operator Implicit(S: string): MeasurementRecord

然后调用其中的函数returnQC。 (但是,如果你还有一个

class operator Explicit(S: string): MeasurementRecord

然后这将被使用,因为演员实际上是明确的。)