На нашем сайте ежедневно публикуются десятки качественных и свежих материалов, которые Вы можете скачать абсолютно бесплатно. Рекомендуем Вам добавить Наш сайт в закладки, а также подписаться на RSS ленту, чтобы не пропускать интересных новостей.
При тестировании проигрывателя вы наверное заметили, что при каждом запуске приходиться заново устанавливать настройки эквалайзера, громкости, загружать плейлист. Это доставляет сильные неудобства. Сегодня мы научим наш плеер сохранять настройки и загружать их обратно из ini файла конфигурации.
Для того, чтобы программа могла работать с такими файлами, необходимо в разделе interface в uses в дополнение имеющегося списка дать ссылку на соответствующую библиотеку:
в разделе 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;