2011-10-05 53 views
4

我有方法的記錄類型,較具體的硬件的測量類型,從儀器作爲一個字符串讀取。該記錄包含(和來自)字符串的隱式覆蓋。如果我把一個字符串作爲記錄類型,它似乎工作,但這是安全的嗎?也就是說,通過隱式字符串轉換將字符串轉換爲記錄時,會根據賦值臨時值調用隱式轉換?的Delphi(-Xe):鑄造到一個記錄類型與隱式轉換

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; 
+3

如何對記錄的聲明? –

+0

@HMcG你真的應該告訴我們完整的記錄,hehehe ;-) – PSyLoCKe

回答

9

是的,這是非常安全的。該代碼MeasurementRecord(Edit1.text)將使用從字符串Edit1.Text創建MeasurementRecord記錄你的

class operator Implicit(S: string): MeasurementRecord 

,然後調用函數在它returnQC。 (不過,如果你也有一個

class operator Explicit(S: string): MeasurementRecord 

那麼這將被用來代替,因爲中投實際上是明確的。)

+0

,看起來像我明確。如果顯式不可用,是否會回到隱含狀態? –

+2

@大衛:是的,這正是它所做的。我剛剛就此澄清了一點。 –

+0

謝謝你解釋的東西。我沒有意識到顯式/隱式回退。 – HMcG