मैं किसी ऑब्जेक्ट की संपत्ति के रूप में रिकॉर्ड करना चाहता हूं। समस्या यह है कि जब मैं इस रिकॉर्ड के किसी एक फ़ील्ड को बदलता हूं, तो वस्तु को परिवर्तन के बारे में पता नहीं है।क्या किसी ऑब्जेक्ट की संपत्ति के रूप में रिकॉर्ड रिकॉर्ड किया जा सकता है?
type
TMyRecord = record
SomeField: Integer;
end;
TMyObject = class(TObject)
private
FSomeRecord: TMyRecord;
procedure SetSomeRecord(const Value: TMyRecord);
public
property SomeRecord: TMyRecord read FSomeRecord write SetSomeRecord;
end;
और फिर अगर मैं करता हूँ ...
MyObject.SomeRecord.SomeField:= 5;
... काम नहीं करेगा।
तो जब मैं रिकॉर्ड के फ़ील्ड में से एक लिखा जाता हूं तो मैं संपत्ति सेटिंग प्रक्रिया 'पकड़' कैसे बना सकता हूं? रिकॉर्ड रिकॉर्ड करने के तरीके में शायद कुछ चाल है?
अधिक जानकारी
मेरा लक्ष्य एक TObject
या एक OnChange
घटना के साथ TPersistent
(जैसे TFont
या TStringList
के रूप में) बनाने के लिए होने से बचने के लिए है। मैं इसके लिए ऑब्जेक्ट्स का उपयोग करने से परिचित हूं, लेकिन क्लीनअप मेरे कोड को थोड़ा सा करने के प्रयास में, मैं देख रहा हूं कि मैं इसके बजाय रिकॉर्ड का उपयोग कर सकता हूं। मुझे बस यह सुनिश्चित करने की ज़रूरत है कि जब मैं रिकॉर्ड के फ़ील्ड में से एक सेट करता हूं तो मेरे रिकॉर्ड प्रॉपर्टी सेटर को ठीक से कॉल किया जा सकता है।
क्या यह एक 'पैक रिकॉर्ड' संभवतः संभवतः काम में आता है? –
'पैक' या अन्यथा बिंदु के बगल में है। यह सिर्फ रिकॉर्ड के लेआउट और संरेखण को नियंत्रित करता है। मौलिक मुद्दा मूल्य प्रकारों और संदर्भ प्रकारों के बीच अंतर है। वास्तव में, आपके प्रश्न में कोड संकलित भी नहीं करता है। –
@ डेविड हेफरनन बहुत सच है, मैंने वास्तव में उस कोड को डेल्फी में नहीं रखा है, इसे सीधे यहां टाइप किया है। –