Chcę utworzyć pakiet danych obiektów światła do przejścia między aplikacjami klienta i serwera.W jaki sposób używać operatora bit/bit do sterowania stanem obiektu?
Jest to tak proste zadanie, które można kontrolować tylko 1 bajt, więc każdy bit w bajcie będzie mieć inne znaczenie,
Korzystanie tylko trochę
0 = False
1 = True
itens I trzeba teraz:
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?
Rozwiązanie
Po wszelką pomoc, Ill użyć następnego zestawu
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;
a dla strumienia -> oporność, to będzie rekord należy używać:
TDataPackage = record
Data: TBytes;
TypeInfo: TMetaInfo;
State: Byte;
Instance: TBuffer;
end;
Dziękuję facetów, dla wszystkich odpowiedzi i komentarze.
Zestawy są lepszą techniką niż bezpośrednie operatory bitowe. Są nie mniej "lekkie", ponieważ operacje setowe kompilują się do tego samego kodu maszynowego, co operacje binarne. Zaletą jest to, że są one bezpieczne i sprawdzane przez kompilator, podczas gdy operacje bitowe są na liczbach całkowitych. –
Jeśli masz zestaw zawierający maksymalnie 8 możliwych elementów, typ będzie miał 1 bajt. –
Zadałem pokrewne pytanie tutaj: "[Czy szybsze jest korzystanie z tablicy lub dostępu do bitów dla wielu wartości boolowskich?] (Http://stackoverflow.com/questions/517138/is-it-faster-to-use-an -array-lub-bit-access-for-multiple-boolean-values / 517184 # 517184) " –