Topic complex |
Array functions |
Function |
bittrunc() |
Short |
Schneidet ein TBit-Array exakt |
Syntax |
BitTrunc(VAR aBits : TBITS[]; nSize : INTEGER) |
Parameter |
aBits : TBit-Array
nSize : Position des 1. "falschen" Bits |
Return |
|
See also: |
|
Description |
Diese Funktion macht insbesondere dann Sinn, wenn man ein TBit-Array mit BitNot() "umkehrt" und die Grösse des Arrays nicht durch 8 teilbar ist.
Letztlich ist ein TBit-Array ein speziell gehandhabtes BYTE-Array.
Wenn Sie also ein TBit-Array der Grösse 3 erzeugen (z.B. InitArray(a[3]) wird dafür trotzdem der Speicher von InitArray(a[8]) (= 1 Byte) belegt.
Bei einem BitNot(a) würden nun nicht wie gewünscht 3 sondern alle 8 Bit negiert. NBits() würde also nicht, wie erwartet 3, sondern 8 zurückliefern.
Mit BitTrunc(a,4) kann das vermieden werden.
|
Example 1: BitNot + BitTrunc
VAR x : TBITS[]
InitArray(x[3])
BitSum(x) // = 0 <> bits 000[00000]
BitNot(x)
BitSum(x) // = 8 <> bits 111[11111]
BitTrunc(x,3 +1)
BitSum(x) // = 3 <> bits 111[00000]
|
Example 2: BitNot + BitTrunc 2
Sets a bit for each record of db
var x : TBits[]
InitArray(x[FileSize(db)];
BitNot(x);x[0]:=0; BitTrunc(x,FileSize(db)+1)
|
Write a comment:
|