帮忙看下代码错在那编译不了啊.

lovecsx 2004-08-11 04:32:35
unit UnitFmtDialog;

interface

uses
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.
...全文
100 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
lovecsx 2004-08-12
  • 打赏
  • 举报
回复
呵呵,解决了
naughtyboy 2004-08-11
  • 打赏
  • 举报
回复
uses mmsystem;
lovecsx 2004-08-11
  • 打赏
  • 举报
回复
要怎么定义呢?
我定义了,老是了出错?
goodloop 2004-08-11
  • 打赏
  • 举报
回复
先用type语句把
tWaveFormatEx
PWaveFormatEx
定义
lovecsx 2004-08-11
  • 打赏
  • 举报
回复
public
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'
lovecsx 2004-08-11
  • 打赏
  • 举报
回复

PWaveFormat: PWaveFormatEx;这一行
panjinfu80 2004-08-11
  • 打赏
  • 举报
回复
光标停在哪呢?

5,386

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧