2014-06-12 11 views
8

में क्या के बाद mORMot के SynCommons.pas में किस प्रकार करता है वहाँ निम्नलिखित स्निपेट है:= एक प्रकार घोषणा

type 
    .... 
    TTimeLog = type Int64; 
      ^^^^ 

दूसरा type कीवर्ड (Int64 के सामने) का उद्देश्य क्या है?

+2

में वर्णन किया गया है कि [ 'इस topic'] (http://docwiki.embarcadero.com/RADStudio/XE6/en/Declaring_Types)। – TLama

+2

प्रलेखन क्या कहता है? –

उत्तर

9

Data Types, Variables, and Constants Index (Delphi)

से आप एक प्रकार है कि एक मौजूदा प्रकार के समान है की घोषणा करते हैं, संकलक वर्ष एक के लिए एक उपनाम के रूप नए प्रकार पहचानकर्ता व्यवहार करता है। इस प्रकार, दिया घोषणाओं:

type TValue = Real; 
var 
    X: Real; 
    Y: TValue; 

एक्स और वाई एक ही प्रकार के कर रहे हैं; रनटाइम पर, रीयल से टीवील्यू को अलग करने का कोई तरीका नहीं है। यह आमतौर पर थोड़ा परिणाम होता है, लेकिन यदि आपका उद्देश्य किसी नए प्रकार को परिभाषित करने में है, तो रनटाइम प्रकार जानकारी का उपयोग करना है, उदाहरण के लिए, किसी विशेष प्रकार के गुणों को के साथ एक संपत्ति संपादक को संबद्ध करने के लिए - 'अलग नाम' के बीच अंतर 'अलग प्रकार' महत्वपूर्ण हो जाता है।

type newTypeName = type KnownType 

उदाहरण के लिए::

type TValue = type Real; 

संकलक मजबूर करता है एक नया, अलग प्रकार TValue कहा जाता है बनाने के लिए इस मामले में, सिंटैक्स का उपयोग करें।

विभिन्न मानकों के लिए औपचारिक और वास्तविक प्रकार के समान होना चाहिए। उदाहरण के लिए:

type 
    TMyType = type Integer; 
procedure p(var t:TMyType); 
    begin 
    end; 

procedure x; 
var 
    m: TMyType; 
    i: Integer; 
begin 
    p(m); // Works 
    p(i); // Error! Types of formal and actual must be identical. 
end; 
+0

आह, यह आरटीटीआई को अलग-अलग प्रकारों को देखने में सक्षम बनाता है, जो इसे समझाता है। – Johan

+4

आरटीटीआई की तुलना में इसके लिए बहुत कुछ है। यह पहचान प्रकार भी प्रभावित करता है। यह एक संकलित समय संपत्ति है। –

संबंधित मुद्दे