Карта сайта Kansoftware
НОВОСТИУСЛУГИРЕШЕНИЯКОНТАКТЫ
KANSoftWare

Проиграть звук из таблицы

Delphi , Базы данных , Таблицы



Автор: Xavier Pacheco

unit Main;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  ExtCtrls, DBCtrls, DB, DBTables, StdCtrls, Mask, Buttons, ComCtrls;

type
  TMainForm = class(TForm)
    tblSounds: TTable;
    dsSounds: TDataSource;
    tblSoundsWaveTitle: TStringField;
    tblSoundsWave: TBlobField;
    edTitle: TDBEdit;
    edFileName: TDBEdit;
    Label1: TLabel;
    Label2: TLabel;
    OpenDialog: TOpenDialog;
    tblSoundsFileName: TStringField;
    SaveDialog: TSaveDialog;
    pnlToobar: TPanel;
    sbPlay: TSpeedButton;
    sbAdd: TSpeedButton;
    sbSave: TSpeedButton;
    sbExit: TSpeedButton;
    Bevel1: TBevel;
    dbnNavigator: TDBNavigator;
    stbStatus: TStatusBar;
    procedure sbPlayClick(Sender: TObject);
    procedure sbAddClick(Sender: TObject);
    procedure sbSaveClick(Sender: TObject);
    procedure sbExitClick(Sender: TObject);
    procedure FormCreate(Sender: TObject);
  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(tblSoundsWave, 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;

procedure TMainForm.sbAddClick(Sender: TObject);
begin
  if OpenDialog.Execute then
  begin
    tblSounds.Append;
    tblSounds['FileName'] := ExtractFileName(OpenDialog.FileName);
    tblSoundsWave.LoadFromFile(OpenDialog.FileName);
    edTitle.SetFocus;
  end;
end;

procedure TMainForm.sbSaveClick(Sender: TObject);
begin
  with SaveDialog do
  begin
    FileName := tblSounds['FileName']; // initialize file name
    if Execute then // execute dialog
      tblSoundsWave.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;
end;

procedure TMainForm.OnAppHint(Sender: TObject);
begin
  stbStatus.SimpleText := Application.Hint;
end;

end.

Программное приложение на языке Delphi, позволяющее пользователю играть, добавлять и сохранять файлы звуковых дорожек из таблицы базы данных с помощью единицы MMSystem для воспроизведения звука.

Вот разбивка кода:

  • Класс TMainForm определяет основную форму приложения.
  • Форма имеет несколько компонентов:
    • tblSounds: Таблица базы данных, хранящая файлы звуковых дорожек.
    • dsSounds: Источник данных, соединяющийся с таблицей tblSounds.
    • edTitle, edFileName: Два текстовых редактора для отображения названия и имени файла выбранной звуковой дорожки.
    • Label1, Label2: Два лейбла для отображения информации о звуковых дорожках.
    • OpenDialog, SaveDialog: Двое диалоговых окон для открытия и сохранения файлов.
    • pnlToobar, sbPlay, sbAdd, sbSave, sbExit: Тулбар с пятью кнопками для воспроизведения, добавления, сохранения и выхода из приложения.
  • Процедура FormCreate вызывается при создании формы. Она настраивает обработчик подсказки приложения.
  • Процедура OnAppHint отображает сообщение подсказки приложения в статусной строке.
  • Процедуры sbPlayClick, sbAddClick, sbSaveClick и sbExitClick обрабатывают клики на кнопках тулбара:
    • sbPlayClick: Воспроизводит выбранную звуковую дорожку с помощью функции PlaySound из единицы MMSystem. Создает поток blob, копирует данные в памятный поток и затем воспроизводит звук с помощью функции PlaySound.
    • sbAddClick: Открывает диалоговое окно для выбора нового файла звуковой дорожки. Если файл выбран, то добавляет новый запись в таблицу базы данных, устанавливает поля названия и имени файла и загружает данные звуковой дорожки из файла в поле blob.
    • sbSaveClick: Сохраняет выбранную звуковую дорожку в файл с помощью метода SaveToFile поля blob.
    • sbExitClick: Закрывает приложение.

Код использует несколько специфических для Delphi функций, таких как:

  • Компоненты базы данных (TTable, TDataSource) для соединения с и манипуляции данными в таблице базы данных.
  • Поля blob (TBlobField) для хранения двоичных данных, таких как файлы звуковых дорожек.
  • Диалоговые окна (TOpenDialog и TSaveDialog) для открытия и сохранения файлов.
  • Тулбары (TToolBar) с кнопками (TSpeedButton) для взаимодействия с приложением.

В целом, этот код предоставляет основу для воспроизведения, добавления и сохранения звуковых дорожек из таблицы базы данных с помощью Delphi.

В статье описывается пример программы на языке Pascal, которая позволяет проигрывать звуки из таблицы данных.


Комментарии и вопросы

Получайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS




Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.


:: Главная :: Таблицы ::


реклама


©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007
Top.Mail.Ru

Время компиляции файла: 2024-12-22 20:14:06
2025-06-16 08:56:44/0.005979061126709/0