Welchen Wert hat i zu dem Zeitpunkt wo der Fehler auftritt?
Und am Rande: Dein Array ist 2049 Elemente groß. Eins zu viel.
Edit:
Die Funktion zum Zeichnen ist im Übrigen auch nicht das gelbe vom Ei. Sie macht 2 Schleifen, wo nur eine nötig wäre, in der man einiges gut zusammenfassen kann.
Delphi-Quellcode:
var
temp: Integer;
begin
data := BassdllPlayer1.GetFFTData;
Image1.Canvas.Pen.Width:=1;
temp := Image1.Height-5;
for i := 0
to 255
do
begin
Image1.Canvas.pen.color :=
RGB(255- i, i, i);
Image1.Canvas.MoveTo(i+25, temp);
Image1.Canvas.LineTo(i+25, temp - round(Data[i] * ln(i+1) * (temp+5) * 2));
end;
end;
Achte darauf, dass dein i nacher nicht nur bis 255 geht. Ohne anpassen der Zeichenoperationen wird es ein sehr breites Bild, wenn nicht schon
RGB() zerbröselt.
"When one person suffers from a delusion, it is called insanity. When a million people suffer from a delusion, it is called religion." (Richard Dawkins)