Исходники Delphi

Добро пожаловать на наш портал

На нашем сайте ежедневно публикуются десятки качественных и свежих материалов, которые Вы можете скачать абсолютно бесплатно. Рекомендуем Вам добавить Наш сайт в закладки, а также подписаться на RSS ленту, чтобы не пропускать интересных новостей.
Стартовая Избранное Главная Контакты Карта сайта

Меню

Не доступно

Не доступно

Опрос

Оцените мой сайт

Проголосовало: 118
Другие опросы

Главная » 2013 » Февраль » 22 » Плеер (часть4) сохранение настроек
02:53
Плеер (часть4) сохранение настроек
Урок 1.4. Создаем mp3 player (проигрыватель) на основе библиотеки bass.dll.
На этом уроке мы научим наш проигрыватель сохранять настройки в ini файле.

предыдущий урок:
При тестировании проигрывателя вы наверное заметили, что при каждом запуске приходиться заново устанавливать настройки эквалайзера, громкости, загружать плейлист. Это доставляет сильные неудобства. Сегодня мы научим наш плеер сохранять настройки и загружать их обратно из ini файла конфигурации.

Прочитать о работе с ini - файлами можно здесь.

Для того, чтобы программа могла работать с такими файлами, необходимо в разделе interface в uses в дополнение имеющегося списка дать ссылку на соответствующую библиотеку:

uses iniFiles;

добавим ее в наш проект.

Добавляемые строки выделены красным цветом.

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, ExtCtrls, StdCtrls, ComCtrls, Bass, inifiles;

в разделе Var  объявим переменную:
IniFile: TIniFile;

var
  Form_player: TForm_player;
  i:integer; //номер проигрываемой песни в playlist
  filename: string;//имя файла
  Channel    : DWORD;//
  Mode: TPlayerMode;//PlayMode
  //переменные для настройки эквалайзера
  p: BASS_DX8_PARAMEQ;
  fx: array[1..10] of integer;
  //переменные визуализации
  FFTPeacks  : array [0..128] of Integer;
  FFTFallOff : array [0..128] of Integer;
  //переменная файла конфигурации
  IniFile: TIniFile;


В инспекторе объектов для формы свойство AutoSize установим True.

А в событии OnCreate формы добавим строки:

var  n,count:integer;

в теле процедуры:

//создание inifile  с именем Config.ini
IniFile:=TIniFile.Create(ExtractFilePath(Application.ExeName)+'Config.ini');
//загрузка настроек из inifile
//положение формы и размер
  form_player.Left:=IniFile.ReadInteger('Form info','Left',285);
  form_player.Top:=IniFile.ReadInteger('Form info','Top',168);
  form_player.Width:=IniFile.ReadInteger('Form info','Width',520);
  form_player.Height:=IniFile.ReadInteger('Form info','Height',501);
//громкость звука
  trackbar1.position:=IniFile.ReadInteger('Volue','trackbar1.position',5);
//настройки эквалайзера
  trackbar3.position:=IniFile.ReadInteger('EQLayzer','trackbar3.position',15);
  trackbar4.position:=IniFile.ReadInteger('EQLayzer','trackbar4.position',15);
  trackbar5.position:=IniFile.ReadInteger('EQLayzer','trackbar5.position',15);
  trackbar6.position:=IniFile.ReadInteger('EQLayzer','trackbar6.position',15);
  trackbar7.position:=IniFile.ReadInteger('EQLayzer','trackbar7.position',15);
  trackbar8.position:=IniFile.ReadInteger('EQLayzer','trackbar8.position',15);
  trackbar9.position:=IniFile.ReadInteger('EQLayzer','trackbar9.position',15);
  trackbar10.position:=IniFile.ReadInteger('EQLayzer','trackbar10.position',15);
  trackbar11.position:=IniFile.ReadInteger('EQLayzer','trackbar11.position',15);
  trackbar12.position:=IniFile.ReadInteger('EQLayzer','trackbar12.position',15);
//количество записей в плейлисте
  Count:=IniFile.ReadInteger('ItemsCount','Count',0);
//загрузка плейлиста
  if Count<>0 then
  begin
   for n := 0 to Count - 1 do
    ListBox1.Items.Add(IniFile.ReadString('PlayList', 'file' + IntToStr(n+1),'Ошибка чтения'));
//установка на первую запись плейлиста
    Filename:=ListBox1.Items.Strings[0];
    ListBox1.ItemIndex:=0;
  end;




procedure TForm_player.FormCreate(Sender: TObject);
var  n, count:integer;
begin
  //установка громкости
    trackbar1.Min:=0;
    trackbar1.Max:=10;
    trackbar1.Position:=5;
  //установка баланса
    trackbar2.Min:=-5;
    trackbar2.Max:=5;
    trackbar2.Position:=0;

  // проверка корректности загруженной BASS.DLL
  if (HIWORD(BASS_GetVersion) <> BASSVERSION)  then
    begin
        MessageBox(0,'Не корректная версия BASS.DLL',nil,MB_ICONERROR);
        Halt;
    end;

    // Инициализация аудио - по умолчанию, 44100hz, stereo, 16 bits
    if not BASS_Init(-1, 44100, 0, Handle, nil) then
    begin
      MessageBox(0,'Ошибка инициализация аудио',nil,MB_ICONERROR);
          Halt;
    end;

//создание inifile  с именем Config.ini
IniFile:=TIniFile.Create(ExtractFilePath(Application.ExeName)+'Config.ini');
//загрузка настроек из inifile
//положение формы и размер
  form_player.Left:=IniFile.ReadInteger('Form info','Left',285);
  form_player.Top:=IniFile.ReadInteger('Form info','Top',168);
  form_player.Width:=IniFile.ReadInteger('Form info','Width',520);
  form_player.Height:=IniFile.ReadInteger('Form info','Height',501);
//громкость звука
  trackbar1.position:=IniFile.ReadInteger('Volue','trackbar1.position',5);
//настройки эквалайзера
  trackbar3.position:=IniFile.ReadInteger('EQLayzer','trackbar3.position',15);
  trackbar4.position:=IniFile.ReadInteger('EQLayzer','trackbar4.position',15);
  trackbar5.position:=IniFile.ReadInteger('EQLayzer','trackbar5.position',15);
  trackbar6.position:=IniFile.ReadInteger('EQLayzer','trackbar6.position',15);
  trackbar7.position:=IniFile.ReadInteger('EQLayzer','trackbar7.position',15);
  trackbar8.position:=IniFile.ReadInteger('EQLayzer','trackbar8.position',15);
  trackbar9.position:=IniFile.ReadInteger('EQLayzer','trackbar9.position',15);
  trackbar10.position:=IniFile.ReadInteger('EQLayzer','trackbar10.position',15);
  trackbar11.position:=IniFile.ReadInteger('EQLayzer','trackbar11.position',15);
  trackbar12.position:=IniFile.ReadInteger('EQLayzer','trackbar12.position',15);
//количество записей в плейлисте
  Count:=IniFile.ReadInteger('ItemsCount','Count',0);
//загрузка плейлиста
  if Count<>0 then
  begin
   for n := 0 to Count - 1 do
    ListBox1.Items.Add(IniFile.ReadString('PlayList', 'file' + IntToStr(n+1),'Ошибка чтения'));
//установка на первую запись плейлиста
    Filename:=ListBox1.Items.Strings[0];
    ListBox1.ItemIndex:=0;
  end;

end;


Для события OnClose формы добавим следующий код:

var n:integer;

в теле процедуры

//сохраняем настройки в inifile
//форма
  IniFile.WriteInteger('Form info','Left',Left);
  IniFile.WriteInteger('Form info','Top',Top);
  IniFile.WriteInteger('Form info','Width',Width);
  IniFile.WriteInteger('Form info','Height',Height);
//громкость звука
  IniFile.WriteInteger('Volue','trackbar1.position',trackbar1.position);
//эквалайзер
  IniFile.WriteInteger('EQLayzer','trackbar3.position',trackbar3.position);
  IniFile.WriteInteger('EQLayzer','trackbar4.position',trackbar4.position);
  IniFile.WriteInteger('EQLayzer','trackbar5.position',trackbar5.position);
  IniFile.WriteInteger('EQLayzer','trackbar6.position',trackbar6.position);
  IniFile.WriteInteger('EQLayzer','trackbar7.position',trackbar7.position);
  IniFile.WriteInteger('EQLayzer','trackbar8.position',trackbar8.position);
  IniFile.WriteInteger('EQLayzer','trackbar9.position',trackbar9.position);
  IniFile.WriteInteger('EQLayzer','trackbar10.position',trackbar10.position);
  IniFile.WriteInteger('EQLayzer','trackbar11.position',trackbar11.position);
  IniFile.WriteInteger('EQLayzer','trackbar12.position',trackbar12.position);
//количество файлов в PlayList
  IniFile.WriteInteger('ItemsCount','Count',ListBox1.Items.Count);
//очистка секции PlayList
  IniFile.EraseSection('PlayList');
//выгрузка из PlayList
  for n := 0 to ListBox1.Items.Count - 1 do
  IniFile.WriteString('PlayList', 'file' + IntToStr(n+1), ListBox1.Items.Strings[n]);
//Время создания PlayList
  IniFile.WriteTime('Time','Write time',Time);
//Освобождаем объекты перед закрытием
  IniFile.Free;



procedure TForm_player.FormClose(Sender: TObject; var Action: TCloseAction);
var n:integer;
begin
//сохраняем настройки в inifile
//форма
  IniFile.WriteInteger('Form info','Left',Left);
  IniFile.WriteInteger('Form info','Top',Top);
  IniFile.WriteInteger('Form info','Width',Width);
  IniFile.WriteInteger('Form info','Height',Height);
//громкость звука
  IniFile.WriteInteger('Volue','trackbar1.position',trackbar1.position);
//эквалайзер
  IniFile.WriteInteger('EQLayzer','trackbar3.position',trackbar3.position);
  IniFile.WriteInteger('EQLayzer','trackbar4.position',trackbar4.position);
  IniFile.WriteInteger('EQLayzer','trackbar5.position',trackbar5.position);
  IniFile.WriteInteger('EQLayzer','trackbar6.position',trackbar6.position);
  IniFile.WriteInteger('EQLayzer','trackbar7.position',trackbar7.position);
  IniFile.WriteInteger('EQLayzer','trackbar8.position',trackbar8.position);
  IniFile.WriteInteger('EQLayzer','trackbar9.position',trackbar9.position);
  IniFile.WriteInteger('EQLayzer','trackbar10.position',trackbar10.position);
  IniFile.WriteInteger('EQLayzer','trackbar11.position',trackbar11.position);
  IniFile.WriteInteger('EQLayzer','trackbar12.position',trackbar12.position);
//количество файлов в PlayList
  IniFile.WriteInteger('ItemsCount','Count',ListBox1.Items.Count);
//очистка секции PlayList
  IniFile.EraseSection('PlayList');
//выгрузка из PlayList
  for n := 0 to ListBox1.Items.Count - 1 do
  IniFile.WriteString('PlayList', 'file' + IntToStr(n+1), ListBox1.Items.Strings[n]);
//Время создания PlayList
  IniFile.WriteTime('Time','Write time',Time);
//Освобождаем объекты перед закрытием
  IniFile.Free;

  Bass_Stop();
  BASS_StreamFree(channel);
  Bass_Free;
end;

Сохраняем и тестируем программу.

Исходники к уроку можно скачать здесь.
Категория: Аудио | Просмотров: 1473 | Добавил: Reif | Рейтинг: 0.0/0
Всего комментариев: 0


Название блока

Здесь html код

Название блока

Здесь html код

Название блока

Здесь html код

Название блока

Здесь html код

 
Исходники Delphi
Сделать бесплатный сайт с uCoz |