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

📄 unit1.pas

📁 Delphi7应用编程150例附书源码.rar
💻 PAS
字号:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, DB, DBTables,mmsystem;

type
  TForm1 = class(TForm)
    ListBox1: TListBox;
    Table1: TTable;
    procedure FormCreate(Sender: TObject);
    procedure ListBox1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);
var
    mem:TMemoryStream;
begin
    if Table1.Eof and Table1.Bof then
    begin
        with Table1 do
        begin
            Insert;
            FieldByName('Name').AsString:='惊叹号';
            mem:=TMemoryStream.Create();
            mem.LoadFromFile('惊叹号.wav');
            TBlobField(FieldByName('Data')).LoadFromStream(mem);
            Post;

            Insert;
            FieldByName('Name').AsString:='清空回收站';
            mem:=TMemoryStream.Create();
            mem.LoadFromFile('清空回收站.wav');
            TBlobField(FieldByName('Data')).LoadFromStream(mem);
            Post;

            Insert;
            FieldByName('Name').AsString:='缩到最小';
            mem:=TMemoryStream.Create();
            mem.LoadFromFile('缩到最小.wav');
            TBlobField(FieldByName('Data')).LoadFromStream(mem);
            Post;

            Insert;
            FieldByName('Name').AsString:='退出Windows';
            mem:=TMemoryStream.Create();
            mem.LoadFromFile('退出Windows.wav');
            TBlobField(FieldByName('Data')).LoadFromStream(mem);
            Post;

            mem.Free;
        end;
    end;
    with Table1 do
    begin
        First;
        while not Eof do
        begin
            ListBox1.Items.Add(FieldByName('Name').AsString);
            Next;
        end;
    end;
end;

procedure TForm1.ListBox1Click(Sender: TObject);
var
    FileName:string;
    FileStream:TFileStream;
    BlobStream:TStream;
begin
    with Table1 do
    begin
        First;
        while not Eof do
        begin
            if FieldByName('Name').AsString=ListBox1.Items[ListBox1.ItemIndex] then
                break;
            Next;
        end;
        //为字段创建BLOB数据流
        BlobStream:=CreateBlobStream(FieldByName('Data'),bmRead);
        if BlobStream.Size=0 then
        begin
            BlobStream.free;
            Exit;
        end;
        BlobStream.Position:=0;
        FileName:='Sound.tmp';
        if FileExists(FileName) then
            DeleteFile(FileName);
        //设置临时文件名
        FileStream:=TFileStream.Create(FileName,fmcreate or fmopenwrite);
        //为临时文件创建文件流
        FileStream.CopyFrom(BlobStream,BlobStream.Size);
        //拷贝blob到临时文件中
        FileStream.free;
        BlobStream.free;
        //释放流
        PlaySound(PChar(FileName),0,SND_FILENAME + SND_ASYNC);
        //播放WAVE文件
        if FileExists(FileName) then
            DeleteFile(FileName);
        //删除临时文件
    end;
end;

end.

⌨️ 快捷键说明

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