Einzelnen Beitrag anzeigen

HintByError

Registriert seit: 13. Dez 2018
Ort: Marburg
21 Beiträge
 
Delphi XE2 Professional
 
#2

AW: Pointer verschieben

  Alt 19. Jun 2019, 21:06
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;
Wolfgang Sauer
  Mit Zitat antworten Zitat