AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Multimedia Delphi reNamed: Umrechnungsprobleme bei Zeitanzeige von Sounddatei;
Thema durchsuchen
Ansicht
Themen-Optionen

reNamed: Umrechnungsprobleme bei Zeitanzeige von Sounddatei;

Ein Thema von DelphiUser7 · begonnen am 28. Okt 2003 · letzter Beitrag vom 30. Okt 2003
Antwort Antwort
Seite 1 von 2  1 2      
DelphiUser7

Registriert seit: 27. Aug 2003
179 Beiträge
 
#1

reNamed: Umrechnungsprobleme bei Zeitanzeige von Sounddatei;

  Alt 28. Okt 2003, 09:29
Hallo,
weiss vielleicht jemand den Umrechnungsfaktor, den ich einsetzen muss, wenn ich von Integer nach String konvertiere; es geht um einen Timer, also sollte er so genau wie möglich sein;
Bislang hab ich immer gedacht, der sei exakt 1000; dann hat der Timer aber auf die Zuweisung
 Sekunden := mediaplayer1.Position immer teilweise, d.h. alle 15 oder 20 Sekunden eine Sekunde übersprungen (z.B. von 18 auf 20, anstatt auf 19);
Also, ich denke diesmal ist mit SourceCode nicht viel zu machen, da es sich diesmal um eine (mehr oder weniger) allgemeine Frage handelt;

DelphiUser7
Shell...wieso musste ausgerechnet Shell Teil einer Programmiersprache werden...wieso nicht Esso, Aral oder Dea;

MfG
DelphiUser7
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.184 Beiträge
 
Delphi 12 Athens
 
#2

Re: Umrechnungsfaktor bei der Zeit

  Alt 28. Okt 2003, 10:07
Der umrechnungsfaktor ist schon 1000.

Kann es aber sein, das der Refrech für deine Anzeige der Zeit bei 1 Sekunde liegt?
Wenn ja, versuche es mal mit wenniger. (0,3 oder 0,8 ... 0,9 Sekunden)

Ich nehme meistens 300 Millisekunden, da bei grösseren Werten zwar jede Sekunde angezeigt wrd, aber die Uhr dann unrund zu laufen scheint. (versuchs mal mit 950, dann siehst du was ich meine)
$2B or not $2B
  Mit Zitat antworten Zitat
Niels

Registriert seit: 25. Okt 2003
192 Beiträge
 
#3

Re: reNamed: Umrechnungsprobleme bei Zeitanzeige von Soundda

  Alt 28. Okt 2003, 10:10
Der Umrechnungsfaktor beim Timer ist auf jeden Fall 1000...weil der mit ms läuft.
Ich schätz mal, dass es an deinem System liegt, wenn er ab und zu Zahlen überspringt.
Das Problem liegt aber nicht am Umrechnungsfaktor von ms in sec
  Mit Zitat antworten Zitat
Niels

Registriert seit: 25. Okt 2003
192 Beiträge
 
#4

Re: reNamed: Umrechnungsprobleme bei Zeitanzeige von Soundda

  Alt 28. Okt 2003, 10:11
hm...da war wohl jemand schneller
  Mit Zitat antworten Zitat
DelphiUser7

Registriert seit: 27. Aug 2003
179 Beiträge
 
#5

Re: reNamed: Umrechnungsprobleme bei Zeitanzeige von Soundda

  Alt 28. Okt 2003, 10:25
Noch eine Frage: Wie kann ich proggen, dass der Timer sich 'normal' verhält, d.h. dass der Sekundenzähler bei 60 aufhört, bzw. dann bei 0 wieder anfängt?;
Danke übrigens für den Tipp mit dem Timer, hat mir sehr geholfen! ;

MfG
DelphiUser7
Shell...wieso musste ausgerechnet Shell Teil einer Programmiersprache werden...wieso nicht Esso, Aral oder Dea;

MfG
DelphiUser7
  Mit Zitat antworten Zitat
DelphiUser7

Registriert seit: 27. Aug 2003
179 Beiträge
 
#6

Re: reNamed: Umrechnungsprobleme bei Zeitanzeige von Soundda

  Alt 28. Okt 2003, 12:08
@ himitsu;
Wie hast du es denn bei dir gemacht, das mit den Sekunden;
ich peil das irgendwie nicht, wie ich das machen soll; als ich noch den Timer einfach parallel zum Song hab laufen lassen, da ging es ja noch, aber jetzt, wo ich die Zuweisung mit dem Mediaplayer habe, geht das irgendwie nicht mehr;
Um die Sache auf den Punkt zu bringen: Ich möchte den aktuellen Stand des Players mit einer TrackBar regeln, und dazu muss ich natürlich auch dann sozusagen 'die richtige Zeit am richtigen Ort' haben, wenn du verstehst was ich meine (-> der Timer soll sich nach dem aktuellen Standpunkt des Mediaplayers richten);

DelphiUser7
Shell...wieso musste ausgerechnet Shell Teil einer Programmiersprache werden...wieso nicht Esso, Aral oder Dea;

MfG
DelphiUser7
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.184 Beiträge
 
Delphi 12 Athens
 
#7

Re: reNamed: Umrechnungsprobleme bei Zeitanzeige von Soundda

  Alt 28. Okt 2003, 14:28
Du hast doch nicht überall die 1000 geändert?
Der Faktor von 1000 ist schon richtig, nur das der Timer öffters die Position abfragen sollte.
Ein Timer mit 1 Sekunde Interval läuft erfahrungsgemäß nicht genau 1 Sekunde, so das ab und zu mal eine untergeht. Es ist schwer zwei Timer (Timer1 und MediaPlayer1) zu syncronisieren, so das sie gleich laufen.

Delphi-Quellcode:
{Timer1.Interval := 300;}
{TrackBar1.Max := MediaPlayer1.Length div 1000;}

Procedure TForm1.Timer1Timer(Sender: TObject);
  Begin
    (* TrackBar-Position an die MediaPlayer-Position anpassen *)
    TrackBar1.Position := MediaPlayer1.Position div 1000;
  End;

Procedure TForm1.TrackBar1Change(Sender: TObject);
  Var TBP, MPP: Integer;

  Begin
    TBP := TrackBar1.Position;
    MPP := MediaPlayer1.Position div 1000;
    (* MediaPlayer-Position an die TrackBar-Position anpassen, *
     * wenn der Unterschied grösser als 2 Sekunden ist         *)

    If ABS(TBP - MPP) > 2 Then MediaPlayer1.Position := TBP * 1000;
  End;
Hoffe dich stört es nicht, das hier alles abgerundet (DIV) wird, ist halt die einfachste und schnellste Methode.

In TrackBar1Change wird der neue Wert nur bei grösseren Änderungen übernommen, so das nicht bei jeder Änderung von TrackBar1.Position der "Film" ins stocken kommt.
Man könnte aber auch abfragen ob TrackBar1.Position im Timer1-Ereignis (Timer1Timer) gesetzt wurde, um in diesem Fall MediaPlayer1.Position nicht zu ändern. (der Aufwand dafür das lohnt sich aber nicht)

Der Umrechnungsfaktor von 1000 stimmt nur, wenn MediaPlayer1.TimeFormat = tfMilliseconds ist. (das ist der Standard)
Bei MediaPlayer1.TimeFormat = tfHMS ist
Stunden = MediaPlayer1.Position and $FF,
Minuten = (MediaPlayer1.Position shr 8 ) and $FF,
Sekunden = (MediaPlayer1.Position shr 16) and $FF.
Die OH sagt jedoch:
Zitat:
Die möglichen Formate werden nicht von allen Multimedia-Geräten unterstützt.
tfMilliseconds wird, so weit ich weis, von allen Geräten unterstützt.
$2B or not $2B
  Mit Zitat antworten Zitat
DelphiUser7

Registriert seit: 27. Aug 2003
179 Beiträge
 
#8

Re: reNamed: Umrechnungsprobleme bei Zeitanzeige von Soundda

  Alt 28. Okt 2003, 21:37
Neeee, darum ging es mir eigentlich weniger, dein letzter Beitrag wäre aber vielleicht trotzdem hilfreich; es geht mir jetzt vielmehr darum, dass die Sekundenzahl an sich, sobald sie 60 beträgt bzw. betragen würde wieder 0 ist (und zu den Minuten dann +1 gezählt wird);
das habe ich, wie schon gesagt, im unabhängig laufenden Timer auch geschafft;
mein Problem ist jetzt, dass ich die Sekunden der Position des Mediaplayers zugewiesen habe, die Minuten nun aber vollkommen unberührt bleiben, und genau dieses Problem versteh ich 1.) nicht, und 2.) weiß ich dafür auch keine Lösung; darum mein letzter Beitrag;
außerdem funktioniert dein Quellcode nicht, die untersten Zeilen waren doch für die Zuordnung timer -> TrackBar bestimmt, oder?; also wenn ich die so eingebe, dann kommt da nur wirres zahlengeknurzel raus, 2532 oder 3495, 322, 345, 6435 oder so; auf jeden Fall keine Zahlen, mit denen man was anfangen kann;

MfG
DelphiUser7
Shell...wieso musste ausgerechnet Shell Teil einer Programmiersprache werden...wieso nicht Esso, Aral oder Dea;

MfG
DelphiUser7
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.184 Beiträge
 
Delphi 12 Athens
 
#9

Re: reNamed: Umrechnungsprobleme bei Zeitanzeige von Soundda

  Alt 28. Okt 2003, 23:01
Hab den Code auch noch mal getestet.
Und da war rein zufällig mal MediaPlayer1.TimeFormat = tfFrames.
Als ich aber nach dem öffnen der Datei das auf tfMilliseconds geändert hab ging es.MediaPlayer1.TimeFormat := tfMilliseconds; Was du aber sonst meinst (1 & 2) verstehe ich nicht so richtig, ist aber auch schon spät.

Geht es aber in diese Richtung?
Delphi-Quellcode:
{Var Minuten, Sekunden: Integer;}
Var I: Integer;

MediaPlayer1.TimeFormat := tfMilliseconds; {sicher ist sicher}

MediaPlayer1.Position := (Sekunden + (Minuten * 60)) * 1000;

I := MediaPlayer1.Position div 1000;
Minuten := I div 60;
Sekunden := I mod 60;
$2B or not $2B
  Mit Zitat antworten Zitat
DelphiUser7

Registriert seit: 27. Aug 2003
179 Beiträge
 
#10

Re: reNamed: Umrechnungsprobleme bei Zeitanzeige von Soundda

  Alt 29. Okt 2003, 09:01
Wenn dir das weiterhilft, hier ist der Quelltext, der die Infos über mein Problem enthält:
Delphi-Quellcode:
begin
  if not (sender=BitBtn3) then begin
  Sekunden := Mediaplayer1.Position; //'Sekunden' wurde der Position des Mediaplayers zugeordnet
  Sekunden := Sekunden+1;
  end;
  if Sekunden = 60 then //hier fängt das Problemfeld an
    begin
      Sekunden:=0; // Sekunden soll '=0' sein, zählt aber weiter
      Minuten:=Minuten+1; // Minuten werden nicht wie gedacht '+1' gezählt, sondern bleiben auf 0
      If Minuten=60 then // ich weiß gar nicht ob ich die Stunden nicht rausnehmen soll
      begin
        Stunden:=Stunden+1;
        Minuten:=0;
      end;
    end;
DelphiUser7
Shell...wieso musste ausgerechnet Shell Teil einer Programmiersprache werden...wieso nicht Esso, Aral oder Dea;

MfG
DelphiUser7
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 06:33 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