Hi,
habe folgenden Code:
Delphi-Quellcode:
procedure TForm1.Button20Click(Sender: TObject);
var
Grenz, i: Integer;
fl: double;
fn: double;
NormValue: double;
s: string;
Summe: double;
Hilfsarray : array[0..32768] of double;
s2: string;
begin
UmrFaktorFFT := tA/Zoombereich; //ta = 10000
Str(UmrFaktorFFT:2:2,s2);
form1.label26.caption := s2;
if Zoombereich < 2100 then
begin
form1.panel5.caption := ('nicht def');
showmessage('Zoombreich kleiner 2100 ms gewählt!' +#13+
'Keine Berechnung bis 20Hz möglich!');
end
else
begin
fl := UmrFaktorFFT;
Grenz := trunc(Zoombereich / UmrFaktorFFT);
fn := StrToInt(form1.Edit1.Text) - (2*fl);
if form1.ComboBox2.ItemIndex = 0 then //Kanal 1 -> Kanal 2
begin
Summe := 0;
for i := 2 to Grenz-1 do
begin
Hilfsarray[i] := abs(1-(DATAFFTai0[i] / DATAFFTai1[i]))*fl; //Hier kommt Fehler
Summe := Summe + Hilfsarray[i];
end;
NormValue := 0;
for i:= 2 to Grenz do
NormValue := Summe * (1-(1/fn))*100;
Str(NormValue:2:2,s);
form1.panel5.caption := s + ' %';
end;
end;
end;
Es soll ein Vergleich zwischen 2 Kurven sattfinden (DATAFFTai1 und DATAFFTai0). Bei einem kleinen Zoombereich funktioniert das auch ganz gut, jedoch kommt bei größeren Werten immer die Fehlermeldung "ungültiger Gleitkommaüberlauf". Ist für mich unverständlich, da das Hilfsarray nur so um die 50 Werte beinhaltet....
Hat jemand einen Tipp, wo mein Denkfehler ist???