|
|
#1
|
|||
|
|||
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
|
||||
|
||||
проверяй
if <текущая песня> = ListBox1.Lines.Count -1 then <...> Кнопка "+" - весы в правом верхнем углу сообщения... |
#3
|
|||
|
|||
Большое спасибо !!!
CODDING - Штука тонкая !!! |