大家帮忙看看错在那?(d6 develeper's guide's instance)
提示说:invalid class typecast procedure TMainForm.sbPlayClick(Sender: TObject);
var
B: TBlobStream;
M: TMemoryStream;
begin
B:= TBlobStream.Create(adotable1Wave, bmRead); // create blob stream
Screen.Cursor := crHourGlass; // wait hourglass
try
M := TMemoryStream.Create; // create memory stream
try
M.CopyFrom(B, B.Size); // copy from blob to memory stream
// Attempt to play sound. Raise exception if something goes wrong
Win32Check(PlaySound(M.Memory, 0, SND_SYNC or SND_MEMORY));
finally
M.Free;
end;
finally
Screen.Cursor := crDefault;
B.Free; // clean up
end;
end;
提示说:invalid class typecast procedure TMainForm.sbPlayClick(Sender: TObject);
var
B: TBlobStream;
M: TMemoryStream;
begin
B:= TBlobStream.Create(adotable1Wave, bmRead); // create blob stream
Screen.Cursor := crHourGlass; // wait hourglass
try
M := TMemoryStream.Create; // create memory stream
try
M.CopyFrom(B, B.Size); // copy from blob to memory stream
// Attempt to play sound. Raise exception if something goes wrong
Win32Check(PlaySound(M.Memory, 0, SND_SYNC or SND_MEMORY));
finally
M.Free;
end;
finally
Screen.Cursor := crDefault;
B.Free; // clean up
end;
end;
解决方案 »
- 何不修改注册表,使程序在电脑启动时能自动启动?
- 高手:它们究竟有什么区别?
- 求教:如何将Tcustomtrol类中canvas属性成为公开的(public)
- 如何做出XP界面效果的FORM?
- 有耐心的高手请进
- 那位大哥給個程序我學習學習?
- 当我的combobox下拉框里面的内容长度大于combobox的长度时,如何完整显示出下拉内容
- 如果一个class中要用到以后才定义的另一class,怎么办?
- 请问如何用delphi做一个类似于WIN98那样的联机帮助?
- 各位高手注意了,如何实现文件菜单里的重新登录?因为涉及到不同的权限问题,我用代码使程序重新createform()主窗体,但是这样也不行!请执教!!
- 对字符串加密的问题
- 请问能否在我的数据库打包程序中自动生成数据库?
unit Main;interfaceuses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
ExtCtrls, DBCtrls, DB, DBTables, StdCtrls, Mask, Buttons, ComCtrls, ADODB;type
TMainForm = class(TForm)
dsSounds: TDataSource;
edTitle: TDBEdit;
edFileName: TDBEdit;
Label1: TLabel;
Label2: TLabel;
OpenDialog: TOpenDialog;
SaveDialog: TSaveDialog;
pnlToobar: TPanel;
sbPlay: TSpeedButton;
sbAdd: TSpeedButton;
sbSave: TSpeedButton;
sbExit: TSpeedButton;
Bevel1: TBevel;
dbnNavigator: TDBNavigator;
stbStatus: TStatusBar;
ADOTable1: TADOTable;
ADOTable1Wavetitle: TWideStringField;
ADOTable1Filename: TWideStringField;
ADOTable1id: TAutoIncField;
ADOTable1wave: TBlobField;
procedure sbPlayClick(Sender: TObject);
procedure sbAddClick(Sender: TObject);
procedure sbSaveClick(Sender: TObject);
procedure sbExitClick(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
private
procedure OnAppHint(Sender: TObject);
end;var
MainForm: TMainForm;implementation{$R *.DFM}uses MMSystem;procedure TMainForm.sbPlayClick(Sender: TObject);
var
B: TBlobStream;
M: TMemoryStream;
begin
B:= TBlobStream.Create(adotable1Wave, bmRead); // create blob stream
Screen.Cursor := crHourGlass; // wait hourglass
try
M := TMemoryStream.Create; // create memory stream
try
M.CopyFrom(B, B.Size); // copy from blob to memory stream
// Attempt to play sound. Raise exception if something goes wrong
Win32Check(PlaySound(M.Memory, 0, SND_ASYNC));//or SND_MEMORY));//试过了,不行
finally
M.Free;
end;
finally
Screen.Cursor := crDefault;
B.Free; // clean up
end;
end;procedure TMainForm.sbAddClick(Sender: TObject);
begin
if OpenDialog.Execute then
begin
adotable1.Append;
adotable1['FileName'] := ExtractFileName(OpenDialog.FileName);
adotable1Wave.LoadFromFile(OpenDialog.FileName);
edTitle.SetFocus;
end;
end;procedure TMainForm.sbSaveClick(Sender: TObject);
begin
with SaveDialog do
begin
FileName := adotable1['FileName']; // initialize file name
if Execute then // execute dialog
adotable1Wave.SaveToFile(FileName); // save blob to file
end;
end;procedure TMainForm.sbExitClick(Sender: TObject);
begin
Close;
end;procedure TMainForm.FormCreate(Sender: TObject);
begin
Application.OnHint := OnAppHint;
adotable1.Open;
end;procedure TMainForm.OnAppHint(Sender: TObject);
begin
stbStatus.SimpleText := Application.Hint;
end;procedure TMainForm.FormClose(Sender: TObject; var Action: TCloseAction);
begin
adotable1.Close;
end;end.