⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 unitfmtdialog.pas

📁 自动语音应答系统
💻 PAS
字号:
unit UnitFmtDialog;

interface

uses
  SysUtils, WinTypes, WinProcs, Messages, Classes, Graphics, Controls,
  Forms, Dialogs, StdCtrls, Buttons, ExtCtrls, MMUtils, MMWave,
  MMREGS, MMPCMSup; //MMSystem,

type
  TFmtDialog = class(TForm)
    GrpBitLength: TRadioGroup;
    GrpSampleRate: TRadioGroup;
    btOK: TButton;
    btCancel: TButton;
    Channel: TRadioGroup;
    procedure FormShow(Sender: TObject);
    procedure ChannelClick(Sender: TObject);
    procedure GrpBitLengthClick(Sender: TObject);
    procedure GrpSampleRateClick(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure FormDestroy(Sender: TObject);
    procedure FormHide(Sender: TObject);
  public
    Wave: TMMWave;
    PWaveFormat: PWaveFormatEx;
    Channels: Byte;
    BitLength: Byte;
    SampleRate: Longint;
  end;

var
  FmtDialog: TFmtDialog;

implementation

{$R *.DFM}

{-- TForm2 ---------------------------------------------------------------}
procedure TFmtDialog.FormCreate(Sender: TObject);
begin
   PWaveFormat := GlobalAllocMem(sizeOf(TWaveFormatEx));
end;

{-- TForm2 ---------------------------------------------------------------}
procedure TFmtDialog.FormDestroy(Sender: TObject);
begin
   GlobalFreeMem(pointer(PWaveFormat));
end;

{-- TForm2 ---------------------------------------------------------------}
procedure TFmtDialog.FormShow(Sender: TObject);
begin
     if (Wave <> Nil) then
     begin
          Channels := Ord(Wave.Mode)+1;
          BitLength := Wave.BitLength;
          SampleRate := Wave.SampleRate;
     end
     else
     begin
          Channels := 1;
          BitLength := 8;
          SampleRate := 11025;
     end;

     Channel.ItemIndex := Channels-1;
     GrpBitLength.ItemIndex := (BitLength div 8)-1;
     case Cardinal(SampleRate) of
          8000..10099: GrpSampleRate.ItemIndex := 0;
         11000..21999: GrpSampleRate.ItemIndex := 1;
         22000..31999: GrpSampleRate.ItemIndex := 2;
         32000..39999: GrpSampleRate.ItemIndex := 3;
         40000..44150: GrpSampleRate.ItemIndex := 4;
                  else GrpSampleRate.ItemIndex := 5;
     end;
end;

{-- TForm2 ---------------------------------------------------------------}
procedure TFmtDialog.ChannelClick(Sender: TObject);
begin
     Channels := Channel.ItemIndex+1;
end;

{-- TForm2 ---------------------------------------------------------------}
procedure TFmtDialog.GrpBitLengthClick(Sender: TObject);
begin
     BitLength := (GrpBitLength.ItemIndex+1) * 8;
end;

{-- TForm2 ---------------------------------------------------------------}
procedure TFmtDialog.GrpSampleRateClick(Sender: TObject);
begin
     case GrpSampleRate.ItemIndex of
          0: SampleRate := 8000;
          1: SampleRate := 11025;
          2: SampleRate := 22050;
          3: SampleRate := 32000;
          4: SampleRate := 44100;
          5: SampleRate := 48000;
     end;
end;

{-- TForm2 ---------------------------------------------------------------}
procedure TFmtDialog.FormHide(Sender: TObject);
begin
   { build the destination format header }
   pcmBuildWaveHeader(PWaveFormat, BitLength, Channels, SampleRate);
end;

end.
 

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -