小编Waw*_*hun的帖子

如何处理浮点溢出?

我正在尝试使用HAAR公式过滤.wav样本数据值,但得到错误"浮点溢出"

编辑:添加更多代码

numsamples := round(wavehdr.SampleRate);
SetLength(wavedata[0].Data, numsamples);
Stream.Read(wavedata[0].Data[0], numsamples);
SetLength(cA1, numsamples);
SetLength(cD1, numsamples);
for i:=1 to numsamples-1 do begin 
cA1[i]:=(wavedata[0].Data[(i*2)-1]*0.7071) + (wavedata[0].Data[(i*2)]*0.7071);
cD1[i]:=(wavedata[0].Data[(i*2)-1]*0.7071) + (wavedata[0].Data[(i*2)]*-0.7071);
end;
Run Code Online (Sandbox Code Playgroud)

其中wavedata [0] .Data [i],我从函数Stream.Read得到它来加载.wav文件的样本数据值.我不知道为什么我得到错误或错误意味着什么,我一直在搜索错误,主要是由于零的分裂造成的,但我的代码中没有零除零.所以也许我可以在这里帮助我的代码中的错误含义是什么?

编辑1 :(我真的很新的delphi,这个代码不是我的,我发现它是互联网.在我的理解下,以下代码是一个读取.wav文件样本数据值)

type
  TWaveHeader = packed record

    Marker_RIFF: array [0..3] of char;
    ChunkSize: cardinal;


    Marker_WAVE: array [0..3] of char;


    Marker_fmt: array [0..3] of char;
    SubChunkSize: cardinal;


    FormatTag: word;

    { nChannels : 1  mono, 2  stereo }
    NumChannels: word;
    SampleRate: longint;
    BytesPerSecond: longint;
    BytesPerSample: word;
    BitsPerSample: word;


    Marker_data: array [0..3] of …
Run Code Online (Sandbox Code Playgroud)

delphi floating-point delphi-7

1
推荐指数
1
解决办法
3169
查看次数

使用delphi读取.wav文件

我现在尝试使用delphi读取.wav文件,这里是我的代码:

type
  TWaveHeader = packed record
    Marker_RIFF: array [0..3] of char;
    ChunkSize: cardinal;

    Marker_WAVE: array [0..3] of char;
    Marker_fmt: array [0..3] of char;
    SubChunkSize: cardinal;

    FormatTag: word;

    NumChannels: word;
    SampleRate: longint;
    BytesPerSecond: longint;
    BytesPerSample: word;
    BitsPerSample: word;


    Marker_data: array [0..3] of char;
    DataBytes: longint;
  end;

  TChannel = record
  Data : array of double;
end;
Run Code Online (Sandbox Code Playgroud)

一些私人移民

private
    wavehdr:TWaveHeader;
    wavedata:array[0..3]of TChannel;
    numsamples:integer;
Run Code Online (Sandbox Code Playgroud)

功能

  FillChar(wavehdr, sizeof(wavehdr), 0);
  Stream.Read(wavehdr, sizeof(wavehdr));

  { Log Header data }
  with memo1.Lines do begin
    Add('Filename : '+od.FileName);
    Add('Header size …
Run Code Online (Sandbox Code Playgroud)

delphi matlab wav delphi-7

1
推荐指数
1
解决办法
1962
查看次数

在Delphi 7中将局部变量从一个过程发送/传递到另一个过程?

如何将过程中的局部变量发送/传递给delphi中的另一个过程?

procedure TForm1.Button1Click(Sender: TObject);
var
a,b:integer;
c: array [o..3] smallint;
begin
  a:=1;
  b:=2;
end;
Run Code Online (Sandbox Code Playgroud)

我想将一个或多个已经有值的局部变量(a,b,c)发送到另一个过程,以便在那里使用它们:

procedure TForm1.Button2Click(Sender: TObject);
var
  d:integer;
begin
  d:=a*b;
end;
Run Code Online (Sandbox Code Playgroud)

delphi local-variables delphi-7

1
推荐指数
1
解决办法
872
查看次数

标签 统计

delphi ×3

delphi-7 ×3

floating-point ×1

local-variables ×1

matlab ×1

wav ×1