TMediaPlayer: aktuelle Position anzeigen lassen?
Hallo,
ich versuche mit:
Delphi-Quellcode:
die aktuelle Position zu ermitteln. Wie kann ich nun diese in einer Digit-Kompnete ausgeben lassen???
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; Ich hoffe der obige Quelltext ist so in Ordnung. Danke! |
Re: TMediaPlayer: aktuelle Position anzeigen lassen?
hab ich das richtig verstanden du willst die aktuelle zeit der Tmediaplayerkomponente ausgeben lassen??
|
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.
|
Re: TMediaPlayer: aktuelle Position anzeigen lassen?
Aus der OH:
Zitat:
:!: F1 :!: 8) |
Re: TMediaPlayer: aktuelle Position anzeigen lassen?
für minuten hab ich das ein fach so gemacht
Delphi-Quellcode:
für stunden müssteste noch paar if-schleife in in funktion oben einbauen.
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; |
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.
|
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.
|
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?
|
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.
|
Re: TMediaPlayer: aktuelle Position anzeigen lassen?
OK, dann werde ich es mal ausprobieren.
|
Re: TMediaPlayer: aktuelle Position anzeigen lassen?
Zitat:
mhhh....stimmt. :oops: Wie peinlich; ich Besserwisser! :wink: |
Re: TMediaPlayer: aktuelle Position anzeigen lassen?
Dein Code funktioniert. Leider nur mit Strings. Meine Digit-Komponente kann leider nur Integer-Werte anehmen.
|
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 |
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?
|
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) |
Re: TMediaPlayer: aktuelle Position anzeigen lassen?
Ich will ja nich nerven. Aber wie würde das im gesamten aussehen?
|
Re: TMediaPlayer: aktuelle Position anzeigen lassen?
das string in integer oder die zeitausgabe??????
|
Re: TMediaPlayer: aktuelle Position anzeigen lassen?
Das String in Integer mit Deinem Code. Und natürlich der Aufruf über Dein Timer.
Danke! |
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.
|
Re: TMediaPlayer: aktuelle Position anzeigen lassen?
Ja, das ist nett!
|
Re: TMediaPlayer: aktuelle Position anzeigen lassen?
so bitte:
Delphi-Quellcode:
das mit dem übergeben von string in Integer brauchste hier nicht das wird alles in den functions gemacht.
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; P.S: hab noch net getestet obs geht aber compiler zeigt ma keinen fehler an. |
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.
|
Re: TMediaPlayer: aktuelle Position anzeigen lassen?
ok dann werd ichs selbst doch testen müssten.
|
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; |
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.
|
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:
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.
{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)); Hier wirds gleich für alle arten erklärt. |
Re: TMediaPlayer: aktuelle Position anzeigen lassen?
Jetzt funktionierts!!! Ich danke Dir!!!
|
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