मैं क्लाइंट और सर्वर अनुप्रयोगों के बीच पास करने के लिए लाइट ऑब्जेक्ट डेटा-पैकेज बनाना चाहता हूं।वस्तु स्थिति को नियंत्रित करने के लिए बिट/बिट-ऑपरेटर का उपयोग कैसे करें?
यह एक बहुत आसान काम नहीं है कि मैं केवल 1 बाइट के साथ नियंत्रित कर सकते हैं, तो एक बाइट में प्रत्येक बिट एक अलग अर्थ होगा,
केवल बिट
0 = False
1 = True
ITENS मैं का उपयोग करना अब जरूरत है:
1 - Loaded from database
2 - Persisted
3 - Changed
4 - Marked to Delete
5 -
6 -
7 - Null Value
8 - Read Only
1) How do I use bit operators in Delphi to check each bit value?
2) How do I set the bit Values?
समाधान
सभी मदद करने के बाद, बीमार अगले सेट
TStateType = (
stLoaded = 0, // loaded from persistance
stNative = 2, // value loaded and converted to native type
stPersisted = 3, // saved
stChanged = 4, // object or member changed
stToDelete = 5, // marked to delete
stReadOnly = 6, // read only object, will not allow changes
stNull = 7 // value is null
);
TState = Set of TStateType;
और स्ट्रीम के लिए उपयोग करें - रिकॉर्ड प्रयोग की जाने वाली> दृढ़ता, इस किया जाएगा:
TDataPackage = record
Data: TBytes;
TypeInfo: TMetaInfo;
State: Byte;
Instance: TBuffer;
end;
आप लोग धन्यवाद, सभी के लिए जवाब और टिप्पणियां।
सेट सीधे बिटवाई ऑपरेटरों की तुलना में एक बेहतर तकनीक है। वे कम "प्रकाश" नहीं हैं, क्योंकि सेट ऑपरेशन बाइनरी ऑपरेशंस के समान मशीन कोड पर संकलित होते हैं। लाभ यह है कि वे टाइप-सेफ हैं और कंपाइलर द्वारा चेक किए जाते हैं, जबकि बिटवाई ऑपरेशंस सभी पूर्णांक पर होते हैं। –
तो यदि आपके पास अधिकतम 8 संभावित सदस्यों के साथ एक सेट है, तो आकार आकार में 1 बाइट होगा। –
मैंने यहां एक संबंधित प्रश्न पूछा: "[क्या यह एकाधिक बूलियन मानों के लिए सरणी या बिट एक्सेस का उपयोग करना तेज़ है?] (Http://stackoverflow.com/questions/517138/is-it-faster-to-use-an -एरे-या-बिट-एक्सेस-फॉर-बहु-बूलियन-वैल्यू/517184 # 517184) " –