मैं बहुत तरहयदि कोई प्रक्रिया या फ़ंक्शन पॉइंटर है तो मुझे फ़ील्ड का पता कैसे प्राप्त किया जा सकता है?
function GetSubDataSize(const Rec: TRecord): integer;
begin
Result:=integer(@Rec.Field2) - integer(@Rec.Field1);
end;
सब कुछ कुछ बनाया कुछ रिकॉर्ड उप डेटा आकार गणना करना है एक स्थिति को छोड़कर ठीक है, अगर फील्ड में से एक एक प्रक्रिया या समारोह सूचक है, इसलिए
के मामले मेंTRecord = record
Field2: procedure(Sender: TObject) of object;
end;
फ़ंक्शन को प्रक्रिया का पता ही मिलता है। फ़ील्ड का पता पाने के लिए फ़ील्ड का पता लगाने के लिए फ़ील्ड टाइप करने का कोई तरीका है? मुझे पता है कि मैं इसे संस्करण भाग रिकॉर्ड के साथ हल कर सकता हूं, लेकिन इसका उपयोग न करना पसंद करता हूं।
धन्यवाद,
मैक्स
+1 - दस्तावेज़ों (प्रक्रियात्मक प्रकार) से: "प्रक्रियात्मक चर के स्मृति पते (इसमें संग्रहीत पते के बजाए), @ @। " –
धन्यवाद, नेट, ऐसा लगता है कि डेल्फी कौशल का परीक्षण करने के लिए यह एक अच्छा सवाल है, आप इसे आसानी से पारित कर रहे हैं;) – Maksee
@Maksee: धन्यवाद! मैं नहीं कहूंगा कि मेरे कौशल दूसरों की तुलना में बेहतर हैं (विशेष रूप से मेसन!), मुझे बस एक बार एक ही समस्या को हल करना पड़ा। :) – Nat