Avatar billede prodoc Nybegynder
24. juli 2002 - 20:00 Der er 20 kommentarer og
1 løsning

Edits der viser "Tid der er gået" og "Tid tilbage" fra sang i P..

Hej allesammen,
Jeg er ved at lave en musik player, som skal vise "Tid der er gået af sangen" og "Tid tilbage af sangen" via 2 edits...
"Afspilleren" er en TmediaPlayer...

Måske noget lignende det her:):

edit1.text := 'mediaplayer1.time'
edit2.text := 'mediaplayer1.timeLeft' :)

m.v.h. ProDoc
Avatar billede nico26 Nybegynder
24. juli 2002 - 20:19 #1
Sæt TimeFormat til millisekunder

MediaPlayer1.TimeFormat := tfMilliseconds;

Lav en timer med et tidsinterval på 1 sek, og i OnTimer koden skriver noget lignende det her

procedure TForm1.Timer1Timer(Sender: TObject);
begin
  Edit1.Text := IntToStr(MediaPlayer1.Position div 1000);
  Edit2.Text := IntToStr((MediaPlayer1.Length - MediaPlayer1.Position) div 1000);
end;
Avatar billede zerohero Nybegynder
24. juli 2002 - 20:24 #2
du kan benytte MediaPlayer.Position til at se hvor langt du er i sangen. Tag eksempelvis en TGauge eller en TProgressBar og lad MediaPlayer.Length være Max værdien og MediaPlayer.Position være Position! Hvis du vil vise det med tal (altså minutter og sekunder) kan du bruge MediaPlayer.TimeFormat. Her er et eksempel fra Hjælpe-filen:

type

  HMSRec = record
    Hours: byte;
    Minutes: byte;
    Seconds: byte;
    NotUsed: byte;

  end;

procedure TForm1.Button1Click(Sender: TObject);

var
  TheLength: LongInt;
begin
  { Set time format - note that some devices don’t support tfHMS }
  MediaPlayer1.TimeFormat := tfHMS;
  { Store length of currently loaded media in var }
  TheLength := MediaPlayer1.Length;
  with HMSRec(TheLength) do { Typecast TheLength as a HMSRec record }
  begin
    Label1.Caption := IntToStr(Hours); { Display Hours in Label1 }
    Label2.Caption := IntToStr(Minutes); { Display Minutes in Label2 }

    Label3.Caption := IntToStr(Seconds); { Display Seconds in Label3 }
  end;
end;

Held og Lykke

ZeroHero
Avatar billede prodoc Nybegynder
24. juli 2002 - 20:55 #3
nico22> Jeg har redigeret lidt i din kode...
Edit2.Text := IntToStr((MediaPlayer1.Length) div 60000);
så den nu viser i Minutter.. men kan man ikke gøre det sådan at den viser 3:21 i stedet for bare 3, som den gør ved koden ovenover...?
Avatar billede nico26 Nybegynder
24. juli 2002 - 20:58 #4
var
  R : Integer;
begin
  R := MediaPlayer1.Length - MediaPlayer1.Position;

  Edit1.Text := Format('%d:%d', [P div 60000, P div 1000]);
Avatar billede prodoc Nybegynder
24. juli 2002 - 21:00 #5
kan man ikke gøre det sådan at man div med 60 og siger 60 = 1 eller sådan noget....

PS.
Tak ZeroHero....
Avatar billede nico26 Nybegynder
24. juli 2002 - 21:12 #6
sludder

Edit1.Text := Format('%d:%d', [R div 60000, (R mod 60000) div 1000]);
Avatar billede nico26 Nybegynder
24. juli 2002 - 21:18 #7
du kan også prøve denne her

var
  R : Integer;
  T : TTime;
begin
  R := MediaPlayer1.Length - MediaPlayer1.Position;
  T := EncodeTime(0, R div 60000, (R mod 60000) div 1000, 0);

  Edit1.Text := TimeToStr(T);
Avatar billede prodoc Nybegynder
24. juli 2002 - 21:21 #8
Det virker ikke?
min kode: Label3.Caption := Format('%d:%r', [R div 60000, (R mod 60000) div 1000]);

FEJL:
[Error] Unit2.pas(78): Undeclared identifier: 'R'
[Fatal Error] Project1.dpr(6): Could not compile used unit 'Unit2.pas'
Avatar billede nico26 Nybegynder
24. juli 2002 - 21:22 #9
du skal lig erklære variablen R

var
  R : Integer;
Avatar billede nico26 Nybegynder
24. juli 2002 - 21:23 #10
og denne her ('%d:%r',
skal se sådan ud ('%d:%d', ...
Avatar billede dkn Nybegynder
24. juli 2002 - 21:34 #11
uses mmsystem;

procedure TForm1.Timer1Timer(Sender: TObject); 
var 
  Trk, Min, Sec: Word; 
begin 
  with MediaPlayer1 do 
  begin 
    Trk:= MCI_TMSF_TRACK(Position); 
    Min:=MCI_TMSF_MINUTE(Position); 
    Sec:=MCI_TMSF_SECOND(Position); 
    Label1.Caption:=Format('%.2d',[Trk]); 
    Label2.Caption:=Format('%.2d:%.2d',[Min,Sec]); 
  end; 
end;
Avatar billede prodoc Nybegynder
24. juli 2002 - 21:43 #12
procedure TForm2.Timer2Timer(Sender: TObject);
var
  R : Integer;
begin
Label2.Caption := IntToStr(MediaPlayer1.Position div 1000);
Label3.Caption := Format('%d:%r', [R div 60000, (R mod 60000) div 1000]);
end;
Avatar billede prodoc Nybegynder
24. juli 2002 - 21:48 #13
dkn> Den går da helt grasat... den tæller helt forkert.... eller den tæller 4 gange så meget... osv...
Avatar billede nico26 Nybegynder
24. juli 2002 - 21:54 #14
procedure TForm1.Timer2Timer(Sender: TObject);
var
  R : Integer;
begin
  R := MediaPlayer1.Length - MediaPlayer1.Position;

  Label2.Caption := IntToStr(MediaPlayer1.Position div 1000);
  Label3.Caption := Format('%d:%d', [R div 60000, (R mod 60000) div 1000]);
end;
Avatar billede prodoc Nybegynder
24. juli 2002 - 21:56 #15
nico22> hvordan får jeg den til at finde position Now eller hvad det nu hedder...
altså via denne kode:
Edit1.Text := TimeToStr(T);
Avatar billede dkn Nybegynder
24. juli 2002 - 21:58 #16
du skal ikke start timeren før der er en mp3 som blier afspillet!!
Avatar billede nico26 Nybegynder
24. juli 2002 - 22:00 #17
var
  R : Integer;
  T : TTime;
begin
  R := MediaPlayer1.Length - MediaPlayer1.Position;
  T := EncodeTime(0, R div 60000, (R mod 60000) div 1000, 0);

  Edit1.Text := TimeToStr(T); //resterende tid

  R := MediaPlayer.Position;
  T := EncodeTime(0, R div 60000, (R mod 60000) div 1000, 0);

  Edit2.Text := TimeToStr(T); //forløbet tid
Avatar billede prodoc Nybegynder
24. juli 2002 - 22:01 #18
sorry så ikke dit seneste indlæg...
Men den der tæller hvor lang tid sangen har været i gang, den tæller i sek endnu og ikke i min altså den viser 90 og ikke 1:30????

kan man ikke få den til at vise 01 og ikke bare 1?
Avatar billede prodoc Nybegynder
24. juli 2002 - 22:06 #19
Tak for hjælpen alle 3 men Nico du løber med sejren...
tak for hjælpen
Avatar billede nico26 Nybegynder
24. juli 2002 - 22:07 #20
procedure TForm1.Timer2Timer(Sender: TObject);
var
  R : Integer;
begin
  R := MediaPlayer1.Position;
  Label2.Caption := Format('%.2d:%.2d', [R div 60000, (R mod 60000) div 1000]);

  R := MediaPlayer1.Length - MediaPlayer1.Position;
  Label3.Caption := Format('%.2d:%.2d', [R div 60000, (R mod 60000) div 1000]);
end;
Avatar billede prodoc Nybegynder
24. juli 2002 - 23:06 #21
tak
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester