Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > [ "Начинающим" ]
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Закрытая тема
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 14.11.2008, 12:42
Roman_s Roman_s вне форума
Прохожий
 
Регистрация: 03.10.2008
Сообщения: 28
Репутация: 10
Вопрос Listbox!

Привет всем !!!
Пишу плеер, вот код:
Код:
unit Unit1;

interface

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

type
  TForm1 = class(TForm)
    Button1: TButton;
    Button2: TButton;
    Button3: TButton;
    Button4: TButton;
    MediaPlayer1: TMediaPlayer;
    OpenDialog1: TOpenDialog;
    Label1: TLabel;
    ListBox1: TListBox;
    Button6: TButton;
    Button7: TButton;
    Label8: TLabel;
    Button8: TButton;
    Button9: TButton;
    Label9: TLabel;
    Timer1: TTimer;
    Label10: TLabel;
    TrackBar1: TTrackBar;
    Button11: TButton;
    StatusBar1: TStatusBar;
    Edit1: TEdit;
    Button5: TButton;
    procedure Button4Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure Button3Click(Sender: TObject);
    procedure Button1Click(Sender: TObject);
    procedure Button7Click(Sender: TObject);
    procedure ListBox1DblClick(Sender: TObject);
    procedure Button8Click(Sender: TObject);
    procedure Button9Click(Sender: TObject);
    procedure Button6Click(Sender: TObject);
    procedure FormMouseWheelDown(Sender: TObject; Shift: TShiftState;
      MousePos: TPoint; var Handled: Boolean);
    procedure FormMouseWheelUp(Sender: TObject; Shift: TShiftState;
      MousePos: TPoint; var Handled: Boolean);
    procedure Timer1Timer(Sender: TObject);
    procedure Button11Click(Sender: TObject);
    procedure Button5Click(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    

  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation
Type
TID3Tag = record
ID:string[3];
Titel:string[30];
Artist:string[30];
Album:string[30];
Year:string[4];
Comment:string[30];
Genre:byte;
end;
var
ID3Tag:TID3Tag;

procedure Lese_ID3Tag(Filename:string);
var Buffer:array[1..128] of char;
F:File;
begin
AssignFile(F, Filename);
Reset(F,1);
Seek(F,FileSize(F)-128);
BlockRead(F, Buffer, SizeOf(Buffer));
CloseFile(F);
with ID3Tag do begin
ID:=copy(Buffer,1,3);
Titel:=copy(Buffer,4,30);
Artist:=copy(Buffer,34,30);
Album:=copy(Buffer,64,30);
Year:=copy(Buffer,94,4);
Comment:=copy(Buffer,98,30);
Genre:=ord(Buffer[128]);
end;
end;
{$R *.dfm}

procedure TForm1.Button4Click(Sender: TObject);
begin
If opendialog1.Execute then
Mediaplayer1.FileName := (opendialog1.FileName);
Mediaplayer1.Open;
Label1.Caption := (Opendialog1.FileName);
ListBox1.Items.AddStrings(Opendialog1.Files);
Listbox1.ItemIndex := 0;
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
If Mediaplayer1.FileName > '' then
    Begin
    Mediaplayer1.Pause;
    End;
end;

procedure TForm1.Button3Click(Sender: TObject);
begin
If Mediaplayer1.FileName > '' then
    Begin
    Mediaplayer1.Stop;
    Mediaplayer1.Previous;
    End;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
If Mediaplayer1.FileName > '' then
    Begin
    MediaPlayer1.FileName := (String(ListBox1.Items[Listbox1.ItemIndex]));
    Mediaplayer1.Open;
    Mediaplayer1.Play;
    End;
end;

procedure TForm1.Button7Click(Sender: TObject);
begin
If MediaPlayer1.FileName > '' then
    Begin
    MediaPlayer1.FileName := (String(ListBox1.Items[Listbox1.ItemIndex+1]));
    Listbox1.ItemIndex := Listbox1.ItemIndex+1;
    MediaPlayer1.Open;
    Mediaplayer1.Play;
    Label1.Caption := (String(ListBox1.Items[Listbox1.ItemIndex]));
    End
end;

procedure TForm1.ListBox1DblClick(Sender: TObject);
begin
MediaPlayer1.FileName := (String(ListBox1.Items[Listbox1.ItemIndex]));
MediaPlayer1.Open;
Mediaplayer1.Play;
Label1.Caption := (String(ListBox1.Items[Listbox1.ItemIndex]));
end;

procedure TForm1.Button8Click(Sender: TObject);
begin
Mediaplayer1.Position := Mediaplayer1.Position+10000;
Mediaplayer1.Play;
end;

procedure TForm1.Button9Click(Sender: TObject);
begin
If Mediaplayer1.Position < 10000 then Mediaplayer1.Previous else Mediaplayer1.Position := Mediaplayer1.Position -10000;
Mediaplayer1.Play;
end;

procedure TForm1.Button6Click(Sender: TObject);
begin
If Mediaplayer1.FileName > '' then
    Begin
    MediaPlayer1.FileName := (String(ListBox1.Items[Listbox1.ItemIndex-1]));
    Listbox1.ItemIndex := Listbox1.ItemIndex-1;
    MediaPlayer1.Open;
    Mediaplayer1.Play;
    Label1.Caption := (String(ListBox1.Items[Listbox1.ItemIndex]));
    End;
end;

procedure TForm1.FormMouseWheelDown(Sender: TObject; Shift: TShiftState;
  MousePos: TPoint; var Handled: Boolean);
begin
Mediaplayer1.Position := Mediaplayer1.Position+10000;
Mediaplayer1.Play;
end;

procedure TForm1.FormMouseWheelUp(Sender: TObject; Shift: TShiftState;
  MousePos: TPoint; var Handled: Boolean);
begin
If Mediaplayer1.Position < 10000 then Mediaplayer1.Previous else Mediaplayer1.Position := Mediaplayer1.Position -10000;
Mediaplayer1.Play;
end;

procedure TForm1.Timer1Timer(Sender: TObject);
begin
Label9.Caption := DateToStr(Date);
Label10.Caption := TimeToStr(Time);
If Mediaplayer1.FileName > '' then
Begin
Trackbar1.Max := (Mediaplayer1.Length);
Trackbar1.Position := Mediaplayer1.Position;
End;
If Trackbar1.Position > (Trackbar1.Max - 1) then
    Begin
    MediaPlayer1.FileName := (String(ListBox1.Items[Listbox1.ItemIndex+1]));
    Listbox1.ItemIndex := Listbox1.ItemIndex+1;
    MediaPlayer1.Open;
    Mediaplayer1.Play;
    Label1.Caption := (String(ListBox1.Items[Listbox1.ItemIndex]));
    End;

end;

procedure TForm1.Button11Click(Sender: TObject);
begin
Listbox1.Items.Delete(Listbox1.ItemIndex);
end;

procedure TForm1.Button5Click(Sender: TObject);
begin
Edit1.Text := Inttostr(Listbox1.Items.Count);
end;

procedure TForm1.FormCreate(Sender: TObject);
begin

end;

end.

Проблема такова: Когда последний трек заканчивается появляется ошибка(List index out if bounds (3))!!!
ПОДСКАЖИТЕ ПЛИЗ КАКОЙ КОД И КУДА НУЖНОР ВСТАВИТЬ ЧТОБЫ РЕШИТЬ ЭТУ ПРОБЛЕМУ !!!
__________________
CODDING - Штука тонкая !!!
  #2  
Старый 14.11.2008, 12:45
Аватар для mak-karpov
mak-karpov mak-karpov вне форума
Активный
 
Регистрация: 18.09.2008
Сообщения: 235
Версия Delphi: 2010 и 7
Репутация: 1242
По умолчанию

проверяй
if <текущая песня> = ListBox1.Lines.Count -1 then
<...>
__________________
Кнопка "+" - весы в правом верхнем углу сообщения...
  #3  
Старый 14.11.2008, 13:35
Roman_s Roman_s вне форума
Прохожий
 
Регистрация: 03.10.2008
Сообщения: 28
Репутация: 10
По умолчанию

Большое спасибо !!!
__________________
CODDING - Штука тонкая !!!
Закрытая тема


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 09:54.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter