Delphi (-XE): приведение к типу записи с неявным преобразованием - PullRequest
5 голосов
/ 05 октября 2011

У меня есть тип записи с методами, представляющими определенный тип измерения оборудования, считанный с прибора в виде строки.Запись содержит неявное прикрытие (и из) строки.Если я приведу строку как тип записи, она, похоже, будет работать, но безопасно ли это?То есть, приведение строки к записи с неявным преобразованием строки вызывает неявное преобразование согласно присвоению временного значения?

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 Ответ

9 голосов
/ 05 октября 2011

Да, это совершенно безопасно. Код MeasurementRecord(Edit1.text) создаст запись MeasurementRecord из строки Edit1.Text, используя ваш

class operator Implicit(S: string): MeasurementRecord

, а затем вызвать функцию returnQC в нем. (Однако, если у вас также есть

class operator Explicit(S: string): MeasurementRecord

, тогда это будет использоваться вместо этого, поскольку приведение действительно явное.)

...