Einzelnen Beitrag anzeigen

venice2
(Gast)

n/a Beiträge
 
#8

AW: FLOAT_INVALID_OPERATION und FLOAT_OVERFLOW nur 64Bit

  Alt 16. Jul 2021, 11:34
Es setzt sich so zusammen.

In Create erstelle ich einen Temporären DC
TempBufferDC := gSprVizC.GI_Create32bitDC(255, 60, $00000000);
Delphi-Quellcode:
procedure TBassPlayer.DrawData;
var
  k: integer;
  TRA: array[1..512] of single;
  TIA: array[1..512] of single;
begin

  // Fülle das Array mit den Wave Daten
  for k := 0 to 511 do
    TRA[k + 1] := WaveData[k] / 1.50;

  XFFT(TRA, TIA, -1, 1, 512); // Wave Daten glätten

  for k := 1 to 512 do // PicFlame auf den TempBufferDC Blitten
  begin
    if TRA[k] < 0 then
      TRA[k] := 0;

    BitBlt(TempBufferDC, k - 1, trunc(Abs(FHeight - TRA[k])), 1, FHeight,
      PicFlame[FCurentFlame].Canvas.Handle, 0, 0, SRCCOPY);
  end;

  FadeBackBuffer(TempBufferDC); // Inhalt vom TempBufferDC Faden

  BitBlt(PaintDC, 0, 0, FWidth, FHeight, TempBufferDC, 0, 0, SRCCOPY);
procedure TBassPlayer.XFFT(FR, FI: array of single; Sign, Sample, SampleCount: Integer);
Zitat:
also die Indizes 0..SampleCount-1.
for Q := Sample to (SampleCount) do
Zitat:
Weiß nicht, ab das das Problem ist.
Wenn die Schleifen nicht korrekt wären dürfte es auch unter 32Bit nicht laufen.

Wenn es jemand testen möchte schicke ich ihm gern den Quelltext zu.

Geändert von venice2 (16. Jul 2021 um 11:45 Uhr)
  Mit Zitat antworten Zitat