Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Multimedia (https://www.delphipraxis.net/16-multimedia/)
-   -   Delphi TMediaPlayer: aktuelle Position anzeigen lassen? (https://www.delphipraxis.net/32410-tmediaplayer-aktuelle-position-anzeigen-lassen.html)

mlspider 22. Okt 2004 18:05


TMediaPlayer: aktuelle Position anzeigen lassen?
 
Hallo,

ich versuche mit:

Delphi-Quellcode:
procedure TForm1.AudioDateiffnenClick(Sender: TObject);
Var I: Integer;
    Minuten: Integer;
    Sekunden: Integer;
begin
 if OpenDialog1.Execute then
   begin
      MediaPlayer1.FileName := OpenDialog1.FileName;
    MediaPlayer1.Open;
    MediaPlayer1.TimeFormat := tfMilliseconds;
    MediaPlayer1.Position := (Sekunden + (Minuten * 60)) * 1000;
I := MediaPlayer1.Position div 1000;
Minuten := I div 60;
Sekunden := I mod 60;
    StartButton.Enabled:=True;
    MMBitmapButton3.Enabled:=True;
    MMBitmapButton7.Enabled:=True;
   end;
die aktuelle Position zu ermitteln. Wie kann ich nun diese in einer Digit-Kompnete ausgeben lassen???

Ich hoffe der obige Quelltext ist so in Ordnung.

Danke!

Birzenbae 22. Okt 2004 18:20

Re: TMediaPlayer: aktuelle Position anzeigen lassen?
 
hab ich das richtig verstanden du willst die aktuelle zeit der Tmediaplayerkomponente ausgeben lassen??

mlspider 22. Okt 2004 18:25

Re: TMediaPlayer: aktuelle Position anzeigen lassen?
 
So in etwa. Wenn ich also einen Titel abspiele, möchte ich wissen an welcher Stelle dieser sich gerade befindet. Wenn möglich in Sekunden, Minuten und Stunden.

gmarts 22. Okt 2004 18:31

Re: TMediaPlayer: aktuelle Position anzeigen lassen?
 
Aus der OH:
Zitat:

Delphi-Quellcode:
type

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

  end;

procedure TForm1.Button1Click(Sender: TObject);

var
  TheLength: LongInt;
begin
  { Zeitformat einstellen - Achtung, einige Geräte unterstützen tfHMS }
  MediaPlayer1.TimeFormat := tfHMS;
  { Länge des aktuell geladenen Mediums speichern }
  TheLength := MediaPlayer1.Length;
  with HMSRec(TheLength) do { Typumwandlung von TheLength in einen HMSRec }
  begin
    Label1.Caption := IntToStr(Hours); { Stunden in Label1 }
    Label2.Caption := IntToStr(Minutes); { Minuten in Label2 }

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

Funktioniert natürlich auch bei Mediaplayer1.Position.

:!: F1 :!: 8)

Birzenbae 22. Okt 2004 18:34

Re: TMediaPlayer: aktuelle Position anzeigen lassen?
 
für minuten hab ich das ein fach so gemacht

Delphi-Quellcode:
function time (zeit : Integer): string;
var allsec: real;
    minute,second: integer;
begin
if zeit >=1000 then begin
allsec := zeit / 1000;
minute := round(allsec) div 60;
second := round(allsec) mod 60;
if second < 10 then
Resul t:= inttostr(minute) + ':0' + inttostr(second)
else
Result := inttostr(minute) + ':' + inttostr(second);
end;
end;

procedure TForm1.Timer1Timer(Sender: TObject);
begin
Label1.Caption := time(MediaPlayer1.Position);
end;
für stunden müssteste noch paar if-schleife in in funktion oben einbauen.

mlspider 22. Okt 2004 18:35

Re: TMediaPlayer: aktuelle Position anzeigen lassen?
 
Diesen Code(Delphi Online Hilfe) habe ich schon ausprobiert. Gibt allerdings irgendwie merkwürdige Werte aus und läuft auch nicht weiter.

Birzenbae 22. Okt 2004 18:37

Re: TMediaPlayer: aktuelle Position anzeigen lassen?
 
welchen meinen???? noe der funzt perfekt wenn de en timer holst un machst wies in der timer procedure drinne steht.

mlspider 22. Okt 2004 18:39

Re: TMediaPlayer: aktuelle Position anzeigen lassen?
 
Nee, den in der OH. Kann ich den Aufruf nicht auch in einem Button (On Click) legen, oder brauche ich unbedingt das Timer-Ereignis?

Birzenbae 22. Okt 2004 18:42

Re: TMediaPlayer: aktuelle Position anzeigen lassen?
 
ka ich habs in timer gemacht dan is sicher das der das auch auf jeden fall aktualisert aber du kannt natürlich sagen das beim starten der mp3 das timer.enabled:= true gestellt wird.

mlspider 22. Okt 2004 18:43

Re: TMediaPlayer: aktuelle Position anzeigen lassen?
 
OK, dann werde ich es mal ausprobieren.

gmarts 22. Okt 2004 18:49

Re: TMediaPlayer: aktuelle Position anzeigen lassen?
 
Zitat:

Zitat von mlspider
Diesen Code(Delphi Online Hilfe) habe ich schon ausprobiert. Gibt allerdings irgendwie merkwürdige Werte aus und läuft auch nicht weiter.


mhhh....stimmt. :oops: Wie peinlich; ich Besserwisser! :wink:

mlspider 22. Okt 2004 18:52

Re: TMediaPlayer: aktuelle Position anzeigen lassen?
 
Dein Code funktioniert. Leider nur mit Strings. Meine Digit-Komponente kann leider nur Integer-Werte anehmen.

Birzenbae 22. Okt 2004 18:53

Re: TMediaPlayer: aktuelle Position anzeigen lassen?
 
er gibt aber nur strings raus er benutzt ja eigentlich integer
wenn de willst versuch ich den auch für stunden zu erweitern

mlspider 22. Okt 2004 18:57

Re: TMediaPlayer: aktuelle Position anzeigen lassen?
 
Wäre schon toll. Nur will ich die Sekunden, Minuten und Stunden getrennt in jeweils ein Digit ausgeben lassen. Und vor allem, wie übergebe ich den String in einen Integer?

Birzenbae 22. Okt 2004 18:59

Re: TMediaPlayer: aktuelle Position anzeigen lassen?
 
das wird etwas schwerer mit mehreren Labels
un string in integer geht so
Delphi-Quellcode:
strtoint(x)     //aus string integer mach
inttostr(x)     //aus integer mach string(für ausgabe ganz wichtig)

mlspider 22. Okt 2004 19:02

Re: TMediaPlayer: aktuelle Position anzeigen lassen?
 
Ich will ja nich nerven. Aber wie würde das im gesamten aussehen?

Birzenbae 22. Okt 2004 19:04

Re: TMediaPlayer: aktuelle Position anzeigen lassen?
 
das string in integer oder die zeitausgabe??????

mlspider 22. Okt 2004 19:06

Re: TMediaPlayer: aktuelle Position anzeigen lassen?
 
Das String in Integer mit Deinem Code. Und natürlich der Aufruf über Dein Timer.

Danke!

Birzenbae 22. Okt 2004 19:09

Re: TMediaPlayer: aktuelle Position anzeigen lassen?
 
ja warte bis ich fertig bin ,muss etwas anders anfangen da du es in drei labels haben willst, dann erklär ich dir das ma.

mlspider 22. Okt 2004 19:10

Re: TMediaPlayer: aktuelle Position anzeigen lassen?
 
Ja, das ist nett!

Birzenbae 22. Okt 2004 19:36

Re: TMediaPlayer: aktuelle Position anzeigen lassen?
 
so bitte:

Delphi-Quellcode:
function hour (zeit: integer): String;
var a : Real;
    min, h : Integer;
begin
a:= zeit /1000;
min:= round(a) div 60;
h := min div 60;                                  //berechnung Stunde
if h<10 then Result:='0' + inttostr(h)+':'        //ausgabe wenn stunde 1stellig
else Result:=inttostr(h)+':';                     //ausgabe wenn stunde 2stellig
end;

function minute (zeit : integer):string;
var a : Real;
    min : Integer;
begin
a := zeit / 1000;
min := round(a) div 60;                            //berechnung minute
if min < 10 then Result := '0' + inttostr(min)+':' //ausgabe wenn minute 1stellig
else Result := inttostr(min) + ':';                //ausgabe wenn minute 2stellig
end;

function second (Zeit : integer): string;
var a : Real;
    sec : Integer;
begin
a := zeit / 1000;
sec := round(a) mod 60;                            //berechnung sekunde
if sec < 10 then Result := '0' + inttostr(sec)     //ausgabe wenn sekunde nur 1stellig
else Result := inttostr(sec);                      //ausgabe wenn sekude 2stellig
end;

procedure TForm1.Timer1Timer(Sender: TObject);
begin
Label1.Caption := hour(Mediaplayer1.Postion);   //Label1 = stunde
Label2.Caption := minute(Mediaplayer1.Postion); //Label2 = minute
Label3.Caption := second(Mediaplayer1.Postion); //Label3 = sekunde
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
{cmd. zum starten des Players}
Timer1.Enabled:=true;    //startet timer wenn player startet aber timer muss von anfang enabled auf false stehen
end;
das mit dem übergeben von string in Integer brauchste hier nicht das wird alles in den functions gemacht.
P.S: hab noch net getestet obs geht aber compiler zeigt ma keinen fehler an.

mlspider 22. Okt 2004 19:48

Re: TMediaPlayer: aktuelle Position anzeigen lassen?
 
Erst einmal ein großes Dankeschön für den Code, allerdings zeigt mir der Compiler immer noch an: inkompatible Typen String und Integer.

Birzenbae 22. Okt 2004 19:49

Re: TMediaPlayer: aktuelle Position anzeigen lassen?
 
ok dann werd ichs selbst doch testen müssten.

Birzenbae 22. Okt 2004 19:54

Re: TMediaPlayer: aktuelle Position anzeigen lassen?
 
ganz typisch für mich immer hab ich irgendwo en dummen schreibfehler drinne
es laag am timer code so jetzte stimmts aber wenn de nix verändert hast:
Delphi-Quellcode:
procedure TForm1.Timer1Timer(Sender: TObject);
begin
Label1.Caption := hour(Mediaplayer1.Position);   //Label1 = stunde
Label2.Caption := minute(Mediaplayer1.Position); //Label2 = minute
Label3.Caption := second(Mediaplayer1.Position); //Label3 = sekunde
end;

mlspider 22. Okt 2004 19:57

Re: TMediaPlayer: aktuelle Position anzeigen lassen?
 
Den hatte ich schon bei mir korrigiert. Nee, ich meinte eigentlich, daß ich die Zeit nicht mit Labels anzeigen lassen möchte, sondern mit Digits. Den kann ich aber nur einen Integerwert zuweisen.

Birzenbae 22. Okt 2004 20:05

Re: TMediaPlayer: aktuelle Position anzeigen lassen?
 
ah sag das doch hab gedacht du willsts auf 3 labels haben na dann is aber net viel anders.

einfach diese 3 zeilen statt den andern 3 zeilen in timer-procedure reinmachen
Delphi-Quellcode:
{was da eben hin muss} := strtoint(hour(Mediaplayer1.Position));  
{was da eben hin muss} := strtoint(minute(Mediaplayer1.Position));
{was da eben hin muss} := strtoint(second(Mediaplayer1.Position));
strtoint(x) bedeutet nichts anders als das die zahl x vom string-typ in einen ínteger-typ, mit dem man dann rechnen kann, umgesetzt wird.
Hier wirds gleich für alle arten erklärt.

mlspider 22. Okt 2004 20:09

Re: TMediaPlayer: aktuelle Position anzeigen lassen?
 
Jetzt funktionierts!!! Ich danke Dir!!!

Birzenbae 22. Okt 2004 20:12

Re: TMediaPlayer: aktuelle Position anzeigen lassen?
 
Kein Problem aber mit etwas kreativität wärst auch von alleine drauf gekommen.


Alle Zeitangaben in WEZ +1. Es ist jetzt 07:03 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz