2010-08-13 14 views
8

मैं कक्षा के एक तरीके के अंदर तारों, बूलियन, पूर्णांक, मुद्राओं और अन्य अभिलेखों के सरणी से बना एक रिकॉर्ड का उपयोग कर रहा हूं। मैं रिक्त रूप से एक आदिम प्रकार के सभी क्षेत्रों को खाली/गलत/शून्य में प्रारंभ करना चाहता हूं। डेल्फी डिफ़ॉल्ट रूप से ऐसा नहीं करता है। क्या इसे पूरा करने का एक सीधा तरीका है जिसमें प्रत्येक फ़ील्ड को नाम से एक्सेस करना और इसे मैन्युअल रूप से सेट करना शामिल नहीं है?मैं स्थानीय चर के रूप में घोषित रिकॉर्ड कैसे शुरू कर सकता हूं?

+0

ध्यान दें कि डेल्फी आजीवन-प्रबंधित प्रकार (तार, गतिशील सरणी, इंटरफेस) शुरू करता है। – kludg

+4

डेल्फी -2009 में और बाद में एक रिकॉर्ड 'Foo: = डिफ़ॉल्ट (TFoo) द्वारा प्रारंभ किया जा सकता है; '। [डेविड का जवाब] देखें (http://stackoverflow.com/a/11066205/576719) प्रश्न के लिए [एक बार में डेल्फी में विभिन्न प्रकार के रिकॉर्ड कैसे ठीक से डाउनलोड करें?] (Http://stackoverflow.com/q/ 11065821/576719)। –

+2

यह भी देखें: [डेल्फी में कौन से चर प्रारंभ किए जाते हैं?] (Http://stackoverflow.com/questions/861045/which-variables-are-initialized-when-in-delphi) – Ampere

उत्तर

10

आप निम्नलिखित संरचनाओं के या तो का उपयोग कर सकते हैं (जहां फू एक रिकॉर्ड है)।

FillChar(Foo, SizeOf(Foo), 0); 

ZeroMemory(@Foo, SizeOf(Foo)); 
एक पोस्ट से Allen Bauer

से

आदेश निर्धारित करने के लिए सबसे लोगों को FillChar का उपयोग करें कि क्या वास्तव में डेटा चरित्र के साथ स्मृति को भरने के लिए या सिर्फ प्रयोग FillChar का सबसे आम उपयोग देखते हुए यह मेमोरी को कुछ दिए गए बाइट मान के साथ प्रारंभ करने के लिए, ने पाया कि यह बाद का मामला था कि ने पूर्व के बजाय इसका उपयोग प्रभुत्व रखा था। इसके साथ हमने फिलर बाइट-केंद्रित रखने का फैसला किया।

+4

या उसी कोड के साथ (शायद) बेहतर पठनीयता: ज़ीरोमेमरी (@Foo, SizeOf (Foo)); – Im0rtality

+0

@ Im0rtality: मैंने आपके ZeroMemory समाधान को शामिल करने के लिए उत्तर अपडेट किया है। –

+0

ध्यान दें कि ज़ीरोमेरी डेल्फी के कुछ * संस्करणों में FillChar के लिए एक रैपर है (डी 6 और 7 कम से कम)। –

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