Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Sintassi
BinaryFormat.Group(
binaryFormat as function,
group as list,
optional extra as nullable function,
optional lastKey as any
) as function
Informazioni su
I parametri sono i seguenti:
- Il parametro
binaryFormatspecifica il formato binario del valore di chiave. - Il parametro
groupinclude informazioni sul gruppo di elementi noti. - Il parametro facoltativo
extrapuò essere usato per specificare una funzione che restituisce un valore di formato binario per il valore che segue qualsiasi chiave imprevista. Se il parametroextranon è specificato, verrà generato un errore se sono presenti valori di chiave imprevisti.
Il parametro group specifica un elenco di definizioni di elementi. Ogni definizione di elemento è un elenco, contenente da 3 a 5 valori, come segue:
- Valore di chiave. Valore della chiave corrispondente all'elemento. Deve essere univoco all'interno del gruppo di elementi.
- Formato dell'elemento. Formato binario corrispondente al valore dell'elemento. In tal modo ogni elemento può avere un formato diverso.
- Occorrenza dell'elemento. Valore
BinaryOccurrence.Typeper il numero di volte in cui si prevede che l'elemento venga visualizzato nel gruppo. Gli elementi obbligatori non presenti causano un errore. Gli elementi duplicati obbligatori o facoltativi vengono gestiti come valori di chiave imprevisti. - Valore di elemento predefinito (facoltativo). Se il valore di elemento predefinito è presente nell'elenco di definizione di elementi e non è Null, verrà usato al posto del valore predefinito. Il valore predefinito degli elementi ripetuti o facoltativi è Null e l'impostazione predefinita per i valori ripetuti è un elenco vuoto { }.
- Trasformazione del valore dell'elemento (facoltativo). Se la funzione di trasformazione dell'elemento è presente nell'elenco di definizione degli elementi e non è Null verrà chiamata per trasformare il valore dell'elemento prima che venga restituito. La funzione di trasformazione è chiamata solo se l'elemento è presente nell'input e non verrà chiamata mai con il valore predefinito.
Esempio 1
Di seguito si presuppone un valore chiave a byte singolo, con 4 elementi previsti nel gruppo, tutti con un byte di dati dopo la chiave. Gli elementi compaiono nell'input come segue:
- La chiave 1 è obbligatoria ed è presente con valore 11.
- La chiave 2 si ripete ed è presente due volte con valore 22, restituendo un valore di { 22, 22 }.
- La chiave 3 è facoltativa, non è presente e restituisce un valore Null.
- La chiave 4 si ripete, ma non è presente e restituisce un valore di { }.
- La chiave 5 non fa parte del gruppo, ma è presente una volta con valore 55. La funzione aggiuntiva viene chiamata con il valore della chiave 5 e restituisce il formato corrispondente a tale valore (
BinaryFormat.Byte). Il valore 55 viene letto e rimosso.
Utilizzo
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)
Output
{11, {22, 22}, null, {}}
Esempio 2
L'esempio seguente illustra la trasformazione del valore dell'elemento e il valore predefinito dell'elemento. L'elemento ripetuto con chiave 1 somma la lista di valori letti usando List.Sum. L'elemento facoltativo con chiave 2 contiene un valore predefinito di 123 anziché Null.
Utilizzo
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)
Output
{203, 123}