unit UnitFmtDialog;interfaceuses
SysUtils, WinTypes, WinProcs, Messages, Classes, Graphics, Controls,
Forms, Dialogs, StdCtrls, Buttons, ExtCtrls, MMUtils, MMWave,
MMREGS, MMPCMSup, MMObj, MMDSPObj, MMAudio; //MMSystem,type
TFmtDialog = class(TForm)
GrpBitLength: TRadioGroup;
GrpSampleRate: TRadioGroup;
btOK: TButton;
btCancel: TButton;
Channel: TRadioGroup;
MMWaveFile1: TMMWaveFile;
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.
SysUtils, WinTypes, WinProcs, Messages, Classes, Graphics, Controls,
Forms, Dialogs, StdCtrls, Buttons, ExtCtrls, MMUtils, MMWave,
MMREGS, MMPCMSup, MMObj, MMDSPObj, MMAudio; //MMSystem,type
TFmtDialog = class(TForm)
GrpBitLength: TRadioGroup;
GrpSampleRate: TRadioGroup;
btOK: TButton;
btCancel: TButton;
Channel: TRadioGroup;
MMWaveFile1: TMMWaveFile;
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.
解决方案 »
- DBGridEh如何设置某列的焦点
- delphi7 直接调试运行没问题 脱离IDE环境再运行exe文件 出现access voilation address 008146C9 。。。。。。
- 關於Quick Report打印 .wmf 圖像的問題
- 我的客户程序跟sql2000server保持常连接还是连接取完数据后就断开?
- 大虾,请帮忙,有关网络数据库编程方面的
- 怎么设置在ExecSQL之后不自动提交?
- db2,进来看看吧!简单问题
- 好人一生平安
- 我原来用Delphi做数据库,现在改用VC++6 && SQL 了,感觉很好,没什么麻烦的,比Delphi好多了,大家快改用VC做数据库吧?
- 小妹有个问题:在中文win2000的delphi 5下编译的程序到win98下运行出现紊乱!
- 谁有TRUBOPOWER的APRO组件?
- 动态调用form中的问题
PWaveFormat: PWaveFormatEx;这一行
Wave: TMMWave;
PWaveFormat: PWaveFormatEx;//这行提示错误,
Channels: Byte;
BitLength: Byte;
SampleRate: Longint;
end;下面提示
[Error] UnitFmtDialog.pas(26): Undeclared identifier: 'PWaveFormatEx'
[Error] UnitFmtDialog.pas(42): Undeclared identifier: 'tWaveFormatEx'
[Warning] UnitFmtDialog.pas(48): Unsafe type 'Pointer'
[Fatal Error] UnitMain.pas(143): Could not compile used unit 'UnitFmtDialog.pas'
tWaveFormatEx
PWaveFormatEx
定义