MEM.PackArrayOfBoolToArrayOfByte (FUN)
Diese Funktion der CAA_Memory.library komprimiert ein "ARRAY OF BOOL" in einen "ARRAY OF BYTE".
axSource[0] -> abyDestination[0].0
axSource[1] -> abyDestination[0].1
...
axSource[8] -> abyDestination[1].0
...
axSource[15] -> abyDestination[1].7
...
Diese Funktion kopiert "uiNumberOfBits" von "axSource" in "abyDestination".
Sie gibt die erforderliche Anzahl Bytes in „abyDestination“ zurück.
Nur dann, wenn "paxSource", "pabyDestination" oder "uiNumberOfBits" auf "0" gesetzt ist, wird das Kopieren nicht durchgeführt und die Funktion gibt den Wert “0” zurück.
Hinweis
Die Größe des Datenfelds "abyDestination" muss der Anzahl zu kopierender Bits angepasst sein! Quelle und Ziel dürfen nicht überlappen!
paxSource |
DWORD |
Adresse von ARRAY OF BOOL |
pabyDestination |
DWORD |
Adresse von ARRAY OF BYTE |
uiNumberOfBits |
UINT |
Anzahl zu kopierender Bits |
MEM.PackArrayOfBoolToArrayOfByte |
UINT |
Erforderliche Anzahl Bytes |
Beispiel:
axSource : ARRAY[0..9] OF BOOL := FALSE,TRUE,FALSE,FALSE,TRUE,TRUE,FALSE,FALSE,TRUE,FALSE ;
abyDestination : ARRAY[0..2] OF BYTE ;
uiNumberofBytes :=
MEM.PackArrayOfBool(ADR(axSource), ADR(abyDestination), 10) ;
->
uiNumberofBytes = 2
abyDestination[0] = 16#32
abyDestination[1] = 16#01
abyDestination[2] = 16#00