Meine Ausgangsposition..
Delphi-Quellcode:
function TBassPlayer.BassChannelGetWavData: PSmallInt;
var
fft: array [0 .. 511] of single;
begin
FillChar(fft[0], sizeof(single) * 256, 0);
if (gnAudioChannel <> 0) then
BASS_ChannelGetData(gnAudioChannel, @fft[0], 1024);
result := @fft[0];
end;
Wenn die Methode BassChannelGetWavData beendet wird, dann wird auf dem Stack "fft" freigegeben und das Ergebnis mit der Adresse am Anfang der Variable wird ungültig. Der Ergebniszeiger zeigt auf einen Bereich, der nicht mehr der Variablen zugeordnet ist. Die Prozedur sollte "fft" als Ergebnis zurückgeben. Etwa wie folgt
Delphi-Quellcode:
Tfft = array[0..511] of Single;
function TBassPlayer.BassChannelGetWavData: Tfft;