Delphi-Quellcode:
// *****************************************************************************
// TAudioScannerSimple
// *****************************************************************************
function TAudioScannerSimple.BufferFilled (Buffer: PChar; var Size: Integer): Boolean;
var
a, b, c: Integer;
BitStr3: String;
begin
for a := 0 to Size do
begin
BitStr3 := ByteToBitStr (Byte (Buffer[a]));
for b := 1 to Length (BitStr3) do
inc (FBitsValCount[strtoint (BitStr3[b])]);
end;
a := Length (FAudioBuffer);
SetLength (FAudioBuffer, a + Size);
for b := 0 to Size - 1 do
FAudioBuffer[a + b] := Byte (Buffer[b]);
FBufferFilled := TRUE;
end;
Das ist ein Event, der von der TAudioIO-Komponente aufgerufen wird, wenn der interne Buffer (1024 Bytes) voll ist. Die Daten werden an ein Array (FAudioBuffer) in der Klasse angehängt.
Edit: Ich seh gerade, dass ich hier einen Fehler hab: for a := 0 to Size do - Es müsste " to Size - 1 do" heissen. Gerade korrigiert und teste es.
Edit2: Daran lag es nicht. Bekomme immernoch den Fehler. In der
Unit System.pas, procedure DynArraySetLength, Zeile 16273: ReallocMem(pp, neededSize);