Обърква ми типовете :(
4 отговора
118 прегледа
Обърква ми типовете :(
в едно плеърче, значи :( имам процедурата
procedure TForm1.MPlayer1Click(Sender: TObject; Button: TMPBtnType;
var DoDefault: Boolean);
и в нея проверявам стойността на button. при един прост плеър върви без проблем, но когато сложа таймер, бърка btNext и btPrev със TUDBtnType , т.е. нехт и прев на ЪпДаун контролата, и ми дава, че са несъвместими с TMPBtnType. Защо таймера ми плете бутоните , и как да се спася, а?

Преди да направиш нещо, преброй до 20. усмихвай се по-често от другите
procedure TForm1.MPlayer1Click(Sender: TObject; Button: TMPBtnType;
var DoDefault: Boolean);
и в нея проверявам стойността на button. при един прост плеър върви без проблем, но когато сложа таймер, бърка btNext и btPrev със TUDBtnType , т.е. нехт и прев на ЪпДаун контролата, и ми дава, че са несъвместими с TMPBtnType. Защо таймера ми плете бутоните , и как да се спася, а?
Преди да направиш нещо, преброй до 20. усмихвай се по-често от другите
Re: Обърква ми типовете :(
Можеш ли да сложиш сорса на OnTimer? За да се види на кой ред бърка, какво позлваш за извикване, каква точно грешка дава. Разберете, че когато се иска помощ никой не може да вижда какво става на вашия екран, затова е хубаво информацията да е максимално точна и подробна.
Доколкото схващам, искаш да се прави player който през определено време да превърта сам песните - например да свири само демо от всяка песен.
Между другото, прегледах ти уеб страницата - ентусиазма е заразителен, пък и щом е за образованието - ще помогнем с каквото можем
Доколкото схващам, искаш да се прави player който през определено време да превърта сам песните - например да свири само демо от всяка песен.
Между другото, прегледах ти уеб страницата - ентусиазма е заразителен, пък и щом е за образованието - ще помогнем с каквото можем
Редактирано от Pechenia на
Re: Обърква ми типовете :(
unit player1020;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls, MPlayer, ExtCtrls, ComCtrls;
const fname='c:\playlist.gpg';
type
TForm1 = class(TForm)
MP: TMediaPlayer;
Button1: TButton;
Button2: TButton;
Button3: TButton;
Button4: TButton;
Button5: TButton;
ListBox1: TListBox;
OpenDialog1: TOpenDialog;
Label1: TLabel;
Button6: TButton;
Timer1: TTimer;
ProgressBar1: TProgressBar;
procedure Button2Click(Sender: TObject);
procedure Button3Click(Sender: TObject);
procedure Button1Click(Sender: TObject);
procedure Button4Click(Sender: TObject);
procedure Button5Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure ListBox1Click(Sender: TObject);
procedure MPClick(Sender: TObject; Button: TMPBtnType;
var DoDefault: Boolean);
procedure Button6Click(Sender: TObject);
procedure Timer1Timer(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
f:textfile;
i:word;
implementation
{$R *.DFM}
procedure TForm1.Button2Click(Sender: TObject);
begin
listbox1.multiselect:=false;
listbox1.Items.delete(listbox1.itemindex);
end;
procedure TForm1.Button3Click(Sender: TObject);
begin
listbox1.clear;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
if opendialog1.execute
then listbox1.items.addstrings(opendialog1.Files)
end;
procedure TForm1.Button4Click(Sender: TObject);
begin
rewrite(f);
for i:= 0 to listbox1.items.count-1
do writeln(f,listbox1.items );
closefile(f)
end;
procedure TForm1.Button5Click(Sender: TObject);
var s:string; r:word;
begin
reset(f) ;
while not eof(f)
do begin
readln (f,s);
listbox1.items.add(s);
end;
closefile(f);
randomize;
r:=round(random(listbox1.items.count) );
mp.filename:=listbox1.items[r];
label1.caption:=mp.filename;
mp.open;
mp.Play;
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
assignfile (f, fname);
if fileexists(fname)
then Button5Click(Self)
else Button1Click(Self);
end;
procedure TForm1.ListBox1Click(Sender: TObject);
begin
mp.Close;
repeat
mp.filename:=listbox1.items[listbox1.itemindex];
until fileexists(mp.filename);
label1.caption:=mp.filename;
mp.open;
mp.play;
end;
procedure TForm1.MPClick(Sender: TObject; Button: TMPBtnType;
var DoDefault: Boolean);
var r:word;
begin
label1.caption:=mp.filename;
if button = btnext {ей тук дава грешка}
then begin
mp.Close;
repeat
if listbox1.itemindex =listbox1.items.count-1
then r:=0
else r:=listbox1.itemindex+1;
mp.filename:=listbox1.items[r];
until fileexists(mp.filename);
mp.open;
mp.play;
label1.caption:=mp.filename;
end;
if button = btprev { и тук също }
then begin
mp.EnabledButtons:=[btstop, btnext, btstep, btback, btprev, btpause];
mp.Close;
r:=listbox1.itemindex;
repeat
if ListBox1.Selected[0]
then r:=listbox1.items.count-1
else r:=r-1;
mp.filename:=listbox1.items[r];
until fileexists(mp.filename);
label1.caption:=mp.filename;
mp.open;
mp.play;
end;
end;
procedure TForm1.Button6Click(Sender: TObject);
begin
if listbox1.visible
then begin
form1.Height:=form1.Height-listbox1.height - button1.Height-10;;
listbox1.visible:=false;
end
else begin
form1.Height:=form1.Height+listbox1.height + button1.Height+10;
listbox1.visible:=true;
end
end;
procedure TForm1.Timer1Timer(Sender: TObject);
begin
if mp.mode=mpPlaying
then inc(ProgressBar1.position)
end;
end.
Преди да направиш нещо, преброй до 20. усмихвай се по-често от другите
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls, MPlayer, ExtCtrls, ComCtrls;
const fname='c:\playlist.gpg';
type
TForm1 = class(TForm)
MP: TMediaPlayer;
Button1: TButton;
Button2: TButton;
Button3: TButton;
Button4: TButton;
Button5: TButton;
ListBox1: TListBox;
OpenDialog1: TOpenDialog;
Label1: TLabel;
Button6: TButton;
Timer1: TTimer;
ProgressBar1: TProgressBar;
procedure Button2Click(Sender: TObject);
procedure Button3Click(Sender: TObject);
procedure Button1Click(Sender: TObject);
procedure Button4Click(Sender: TObject);
procedure Button5Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure ListBox1Click(Sender: TObject);
procedure MPClick(Sender: TObject; Button: TMPBtnType;
var DoDefault: Boolean);
procedure Button6Click(Sender: TObject);
procedure Timer1Timer(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
f:textfile;
i:word;
implementation
{$R *.DFM}
procedure TForm1.Button2Click(Sender: TObject);
begin
listbox1.multiselect:=false;
listbox1.Items.delete(listbox1.itemindex);
end;
procedure TForm1.Button3Click(Sender: TObject);
begin
listbox1.clear;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
if opendialog1.execute
then listbox1.items.addstrings(opendialog1.Files)
end;
procedure TForm1.Button4Click(Sender: TObject);
begin
rewrite(f);
for i:= 0 to listbox1.items.count-1
do writeln(f,listbox1.items );
closefile(f)
end;
procedure TForm1.Button5Click(Sender: TObject);
var s:string; r:word;
begin
reset(f) ;
while not eof(f)
do begin
readln (f,s);
listbox1.items.add(s);
end;
closefile(f);
randomize;
r:=round(random(listbox1.items.count) );
mp.filename:=listbox1.items[r];
label1.caption:=mp.filename;
mp.open;
mp.Play;
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
assignfile (f, fname);
if fileexists(fname)
then Button5Click(Self)
else Button1Click(Self);
end;
procedure TForm1.ListBox1Click(Sender: TObject);
begin
mp.Close;
repeat
mp.filename:=listbox1.items[listbox1.itemindex];
until fileexists(mp.filename);
label1.caption:=mp.filename;
mp.open;
mp.play;
end;
procedure TForm1.MPClick(Sender: TObject; Button: TMPBtnType;
var DoDefault: Boolean);
var r:word;
begin
label1.caption:=mp.filename;
if button = btnext {ей тук дава грешка}
then begin
mp.Close;
repeat
if listbox1.itemindex =listbox1.items.count-1
then r:=0
else r:=listbox1.itemindex+1;
mp.filename:=listbox1.items[r];
until fileexists(mp.filename);
mp.open;
mp.play;
label1.caption:=mp.filename;
end;
if button = btprev { и тук също }
then begin
mp.EnabledButtons:=[btstop, btnext, btstep, btback, btprev, btpause];
mp.Close;
r:=listbox1.itemindex;
repeat
if ListBox1.Selected[0]
then r:=listbox1.items.count-1
else r:=r-1;
mp.filename:=listbox1.items[r];
until fileexists(mp.filename);
label1.caption:=mp.filename;
mp.open;
mp.play;
end;
end;
procedure TForm1.Button6Click(Sender: TObject);
begin
if listbox1.visible
then begin
form1.Height:=form1.Height-listbox1.height - button1.Height-10;;
listbox1.visible:=false;
end
else begin
form1.Height:=form1.Height+listbox1.height + button1.Height+10;
listbox1.visible:=true;
end
end;
procedure TForm1.Timer1Timer(Sender: TObject);
begin
if mp.mode=mpPlaying
then inc(ProgressBar1.position)
end;
end.
Преди да направиш нещо, преброй до 20. усмихвай се по-често от другите
Re: Обърква ми типовете :(
unit ComCtrls;
...
TUDBtnType = (btNext, btPrev);
...
unit MPlayer;
...
TMPBtnType = (btPlay, btPause, btStop, btNext, btPrev, btStep, btBack,
btRecord, btEject);
...
Дублирана дефиниция. За btNext пробвай TMPBtnType(3) , за btPrev -- TMPBtnType(4) (или какъвто им Ord(btNext) Ord(btPrev) ).
Като пействаш заграждай с [ pre ] [ /pre ]
...
TUDBtnType = (btNext, btPrev);
...
unit MPlayer;
...
TMPBtnType = (btPlay, btPause, btStop, btNext, btPrev, btStep, btBack,
btRecord, btEject);
...
Дублирана дефиниция. За btNext пробвай TMPBtnType(3) , за btPrev -- TMPBtnType(4) (или какъвто им Ord(btNext) Ord(btPrev) ).
Като пействаш заграждай с [ pre ] [ /pre ]