Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować się zalogować lub zmienić katalog.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Składnia
BinaryFormat.Choice(
binaryFormat as function,
chooseFunction as function,
optional type as nullable type,
optional combineFunction as nullable function
) as function
Informacje
Zwraca format binarny, który wybiera następny format binarny na podstawie wartości, która została już odczytowana. Wartość formatu binarnego utworzona przez tę funkcję działa na etapach:
- Format binarny określony przez parametr
binaryFormatsłuży do odczytywania wartości. - Wartość jest przekazywana do funkcji wyboru określonej przez parametr
chooseFunction. - Funkcja wyboru sprawdza wartość i zwraca drugi format binarny.
- Drugi format binarny służy do odczytywania drugiej wartości.
- Jeśli zostanie określona funkcja łączenia, pierwsze i drugie wartości są przekazywane do funkcji combine, a wynikowa wartość jest zwracana.
- Jeśli funkcja łączenia nie zostanie określona, zostanie zwrócona druga wartość.
- Zwracana jest druga wartość.
Opcjonalny parametr type wskazuje typ formatu binarnego, który zostanie zwrócony przez funkcję wyboru. Można określić type any, type listlub type binary. Jeśli parametr type nie zostanie określony, zostanie użyty type any. Jeśli używana jest type list lub type binary, system może zwrócić wartość strumieniową binary lub list zamiast buforowanej, co może zmniejszyć ilość pamięci niezbędnej do odczytania formatu.
Przykład 1
Odczytaj listę bajtów, w których liczba elementów jest określana przez pierwszy bajt.
użycie
let
binaryData = #binary({2, 3, 4, 5}),
listFormat = BinaryFormat.Choice(
BinaryFormat.Byte,
(length) => BinaryFormat.List(BinaryFormat.Byte, length)
)
in
listFormat(binaryData)
Wyjście
{3,4}
Przykład 2
Odczytaj listę bajtów, gdzie liczba elementów jest określana przez pierwszy bajt, i zachowaj pierwszy odczytany bajt.
użycie
let
binaryData = #binary({2, 3, 4, 5}),
listFormat = BinaryFormat.Choice(
BinaryFormat.Byte,
(length) => BinaryFormat.Record([
length = length,
list = BinaryFormat.List(BinaryFormat.Byte, length)
])
)
in
listFormat(binaryData)
Wyjście
[length = 2, list = {3, 4}]
Przykład 3
Odczytaj listę bajtów, gdzie liczba elementów jest określana przez pierwszy bajt, korzystając z listy strumieniowej.
użycie
let
binaryData = #binary({2, 3, 4, 5}),
listFormat = BinaryFormat.Choice(
BinaryFormat.Byte,
(length) => BinaryFormat.List(BinaryFormat.Byte, length),
type list
)
in
listFormat(binaryData)
Wyjście
{3, 4}