for i2 := 0 to (samples div 2)
- 1 do
und ich würde ehre auf SHR tippen
dest[i2] := source[i2 shr 1]
shr 8;
oder
dest[i2] := High(source[i2 shr 1]);
bzw. besser so
dest[i2] := WordRec(source[i2 shr 1]).Hi;
Jupp, sieht so aus, als wenn da einfach nur jedes zweite Byte umkopiert wird,
also aus einem Word-Array wird ein Byte-Array und das kannst auch gern über zwei Arrays lösen
Delphi-Quellcode:
var
WordData: array[0..Length-1] of Word; // oder hier direkt WordRec als Typ, das erspart dann den Cast
ByteData: array[0..Length-1] of Byte;
for i := 0 to Length-1 do
ByteData[i] := WordRec(WordData[i]).Hi; // := WordData[i] shr 8;
Man könnte das hier sogar im selben Speicher/Array umkopieren, aber da darfs man dann NIEMALS von hinten kopieren, sondern muß vorwärts durch die Daten,
denn sonst überschreibt man Daten, die später noch kopieren werden sollen.