Hop til hovedindhold

BinaryFormat.Group

Returnerer et binært format, der læser en gruppe elementer.

Syntax

BinaryFormat.Group(
binaryFormat as function,
group as list,
optional extra as function,
optional lastKey as any
) as function

Remarks

Parametrene er som følger:

  • Parameteren binaryFormat angiver det binære format for nøgleværdien.
  • Parameteren group giver oplysninger om gruppen af kendte elementer.
  • Den valgfrie parameter extra kan bruges til at angive en funktion, der returnerer en binær formatværdi for værdien, efterfulgt af enhver nøgle, der var uventet. Hvis parameteren extra ikke angives, vises der en fejl, hvis der er uventede nøgleværdier.
Parameteren group angiver en liste over elementdefinitioner. Hver elementdefinition er en liste, der indeholder 3-5 værdier, som følger:
  • Nøgleværdi. Værdien af den nøgle, der svarer til elementet. Den skal være entydig inden for elementsættet.
  • Elementformat. Det binære format, der svarer til værdien af elementet. På den måde kan hvert element have sit eget format.
  • Elementforekomst. BinaryOccurence. TypeForekomstværdien for hvor ofte elementet forventes at blive vist i gruppen. Påkrævede elementer, der ikke findes, udløser en fejl. Påkrævede eller valgfrie dubletværdier håndteres som uventede nøgleværdier.
  • Standardværdi for element (valgfrit). Hvis standardelementværdien optræder på listen over elementdefinitioner, og den ikke er null, bliver den brugt i stedet for standarden. Standarden for gentagne eller valgfrie elementer er null, og standarden for gentagne værdier er en tom liste { }.
  • Transformation af elementværdi (valgfrit). Hvis funktionen til transformation af elementværdien optræder på listen over elementdefinitioner, og den ikke er null, bliver den kaldt for at transformere elementværdien, inden den returneres. Transformationsfunktionen kaldes kun, hvis elementet optræder i inputtet (den bliver aldrig kaldt med standardværdien).

Examples

Example #1

I det følgende forudsættes en nøgleværdi, der er en enkelt byte med 4 forventede elementer i gruppen, som alle har en byte med data efter nøglen. Elementet optræder i inputtet, som følger:<ul><li>Nøgle 1 er påkrævet og vises med værdien 11.</li><li>Nøgle 2 gentages og vises to gange med værdien 22 og resulterer i værdien { 22, 22 }.</li><li>Nøgle 3 er valgfri og vises ikke og resulterer i værdien null.</li><li>Nøgle 4 gentages, men vises ikke og resulterer i værdien { }.</li><li>Nøgle 5 er ikke en del af gruppen, men vises én gang med værdien 55. Den ekstra funktion kaldes med nøgleværdien 5 og returnerer formatet svarende til denne værdi (BinaryFormat.Byte). Værdien 55 læses og fjernes.</li></ul>

let
b = #binary({
1, 11,
2, 22,
2, 22,
5, 55,
1, 11
}),
f = BinaryFormat.Group(
BinaryFormat.Byte,
{
{1, BinaryFormat.Byte, BinaryOccurrence.Required},
{2, BinaryFormat.Byte, BinaryOccurrence.Repeating},
{3, BinaryFormat.Byte, BinaryOccurrence.Optional},
{4, BinaryFormat.Byte, BinaryOccurrence.Repeating}
},
(extra) => BinaryFormat.Byte
)
in
f(b)

Result:

{11, {22, 22}, null, {}}

Example #2

Følgende eksempel illustrerer transformationen af elementværdien og standardelementværdien. Det gentagne element med nøgle 1 opsummerer listen over værdier, der er læst med List.Sum. Det valgfrie element med nøgle 2 har standardværdien 123 i stedet for null.

let
b = #binary({
1, 101,
1, 102
}),
f = BinaryFormat.Group(
BinaryFormat.Byte,
{
{1, BinaryFormat.Byte, BinaryOccurrence.Repeating,
0, (list) => List.Sum(list)},
{2, BinaryFormat.Byte, BinaryOccurrence.Optional, 123}
}
)
in
f(b)

Result:

{203, 123}

Category

Binary Formats.Reading a group of items