Dají se v Delphi provádět bitwise AND/OR operace na byte?
Chtěl bych udělat pole
options: Array of byte;
S tím, že každý znak v řetězci s předlouhou má vlastní options.
Příklad takového řetězce:
'(?i)Hello(?I) Andy'
Odpovídá deseti znakům. Options by pak bylo pole bajtů o délce 10, kde každé písmeno má své nastavení.
char binary options:
decimal value:
0 - no options
1 - '.' any character
2 - '^' begin of the string
4 - '$' end of the string or carriage return
8 - '?' the character may be skipped e.g. dady?
16 - (?i) insensitive search on
32 - (?m) multiline search on
64 - \K can be used instead of lookbehind: h\Kd matches only the second d in adhd
Co jsem se zatím díval do nápovědy tak jsem našel použití jen s integery, což mi ale přijde hodně neefektivní, protože když používám rozsah jen 8 bitů, tak by musel porovnávat 32 bitů na 32 bitovém systému, 64 bitů na 64 bitovém systému, což mi nedává smysl.
Na pokus jsem zkoušel:
setLength(options,1);
options[0] := 0 or 8;
if ( 4 and options[0] ) then
begin
end;
Vrací chybu "Type of expression must be BOOLEAN"