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.
Ein Therapeut entspricht 1024 Gigapeut.