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 "abyDesti­nation".

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!

Eingang:

paxSource

DWORD

Adresse von ARRAY OF BOOL

pabyDestination

DWORD

Adresse von ARRAY OF BYTE

uiNumberOfBits

UINT

Anzahl zu kopierender Bits

Ausgang:

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