AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Cover-Anzeige für WMP Programmieren

Offene Frage von "LukasB"
Ein Thema von LukasB · begonnen am 29. Apr 2010 · letzter Beitrag vom 6. Mai 2010
Antwort Antwort
Seite 1 von 2  1 2      
LukasB

Registriert seit: 29. Apr 2010
8 Beiträge
 
#1

Cover-Anzeige für WMP Programmieren

  Alt 29. Apr 2010, 21:28
Hallo Forumgemeinschaft,

ich habe eine Frage, bei der es um das grundsätzliche Verständnis von Delphi geht.
Wie im Betreff geschrieben, will ich eine Cover-Anzeige + Interpret etc für den WMP programmieren.
Den schwierigsten Teil hab ich hinter mir, dachte ich zumindest.
Ich habe die Metadaten des aktuellen Liedes in entsprechenden Strings vorliegen und kann sie bei Button-Klick in Labels ausgeben. Aus dem Liednamen könnte ich dann entsprechende Grafik anzeigen.
Jetzt möchte ich das natürlich nicht bei jedem Klick, sondern autonom alles 10 sec aktualisieren. Und das ist das Problem: Wenn ich eine While-Schleife in meine Unit einbaue, dann sehe ich das Formular garnicht erst, weil er garnicht an die Stelle des Hauptprogramms "Application.Run;" kommt. Baue ich die Schleife in das Hauptprogramm, dann wird sie nie durchlaufen, weil der Prozess beim "Run-Befehl" hängt, so lang ich das Fenster nicht wegklicke.
Wie kann ich einfach alles 10 sekuden (ca) eine Aktualisierung vornehmen?
Danke schon mal und viele Grüße

Lukas

P.S. Ich bin ganz frisch in Delphi und hab die Trial Embarcardo RDA 10
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#2

Re: Cover-Anzeige für WMP Programmieren

  Alt 29. Apr 2010, 22:14
Wie wäre es mit einem Timer? Aber warum ständig aktualisieren? Das Cover ändert sich doch nur, bei einem neuen Lied.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
LukasB

Registriert seit: 29. Apr 2010
8 Beiträge
 
#3

Re: Cover-Anzeige für WMP Programmieren

  Alt 30. Apr 2010, 08:10
Servus Luckie,

danke schon mal für deine schnelle Antwort.
Das mit dem Timer hab ich mir auch schon überlegt, nur weiß ich nicht, wie ich eine Prozedur darauf ansprechen lasse.
mit ständig aktualisieren meine ich zeitlich lang, halt so lang Musik abgespielt wird.
Ich hatte eigentlich folgende Struktur im Kopf, aber wahrscheinlich zu sehr C-Denke:

unit

interface

var ....

prozedure wait(sec);
prozedure writeMetaData();
prozedure showCover();

sec = 10;
while true do
begin
writeMetadata();
showCover();
wait();
end;

end.

Das soll nur Struktur-Code sein
Aber sowas geht dann wohl nicht wenn du den Time vorschlägst, oder?
Die wait habe ich hier aus dem Forum genommen, war glaube ich sogar eine Antwort auf einen Poste von dir:

procedure Delay(Milliseconds: Integer);
var
Tick: DWord;
Event: THandle;
begin
Event := CreateEvent(nil, False, False, nil);
try
Tick := GetTickCount + DWord(Milliseconds);
while (Milliseconds > 0) and
(MsgWaitForMultipleObjects(1, Event, False, Milliseconds, QS_ALLINPUT) <> WAIT_TIMEOUT) do
begin
Application.ProcessMessages;
if Application.Terminated then Exit;
Milliseconds := Tick - GetTickcount;
end;
finally
CloseHandle(Event);
end;
end;

Kann man die irgenwie hernehmen? Dann bräuchte ich aber wieder die while und hätte das gleiche Problem.....
Hoffe du kannst mir weiterhelfen

Lukas
  Mit Zitat antworten Zitat
dominikkv

Registriert seit: 30. Sep 2006
Ort: Gundelfingen
1.109 Beiträge
 
Delphi 2007 Professional
 
#4

Re: Cover-Anzeige für WMP Programmieren

  Alt 30. Apr 2010, 12:01
Hmm du denkst falsch. Du musst ereignisorientiert denken, das heißt Delphi bestimmt selbst, wann etwas ausgeführt wird. Nimm einfach einen TTimer, klatsch ihn auf die Form und stell ihn entsprechend ein (Intervall in Milisekunden!). Dann machst du einen Doppelklick auf den Timer und du siehst eine OnTimer-Procedure. Diese wird nun in deinem eingestellten Intervall aufgerufen, dh dort kannst du dann dein Cover updaten.

Aber: Warum muss das in einem regelmäßigen Abstand sein? Du brauchst doch nur das Cover zu wechseln, wenn sich auch das Lied wechselt.
Dominik
Wer anderen eine Grube gräbt, hat ein Gruben-Grab-Gerät!
  Mit Zitat antworten Zitat
LukasB

Registriert seit: 29. Apr 2010
8 Beiträge
 
#5

Re: Cover-Anzeige für WMP Programmieren

  Alt 30. Apr 2010, 12:25
Hi Dominik,

zunächst Danke!! Werde deinen Vorschlag vielleicht noch heut Nachmittag umsetzen.
Momentan muss ich Java für die FH proggen.
Zu deiner Frage: vielleicht ist das auch wieder auf meine C-Denke zurückzuführen. Ich dachte mir, dass ich um ein sich änderndes Lied abzufragen auch wieder regelmäßig schauen muss, ob es sich geändert hat, in Pseudocode:

if(title_old!=title-now)
lade_neues_cover();

Das muss ich ja auch in Intervallen tun, du für mich im worst case noch akzeptabel sind.
Also war für mich die Aufgabe eigentlich die selbe: entweder, alle 10 sec Metadaten und Cover aktualisieren, oder alles 10 sec schauen, ob neues Lied läuft und dann u.U. alles aktualisieren. Sicher wäre letzteres effizienter, aber ich denke 3 Labels schreiben und ein Bild laden tut den heutigen Rechnern nicht mehr weh Nichts desto trotz ist es sicher die bessere alternative, werde also versuchen den Timer zu implementieren und innerhalb dessen schauen, ob ein neues Lied läuft. Wenn ja, aktualisieren, wenn nicht, halt ncihts tun
Beste Grüße

Lukas
  Mit Zitat antworten Zitat
LukasB

Registriert seit: 29. Apr 2010
8 Beiträge
 
#6

Re: Cover-Anzeige für WMP Programmieren

  Alt 30. Apr 2010, 12:50
Hi Leute,

also zunäcsht viele vielen Dank!! konnte doch nicht die Finger davon lassen
Hab zwar nicht alles fertig, aber der Rest sind halt Design-Arbeiten. Kann mir jetzt die Metadaten rausgeben lassen!
Das mit dem Timer war echt nicht schwierig, hatte den versucht "zu Fuß" zum implementieren, aber daran bin ich halt gescheitert; naja, und vor allem an der mir bisher verborgen geblieben Ereignisorientiertheit von Delphi: Danke an Dominik
Bleibt nur die Frage, wie ich das Thema als erledigt deklarieren kann
Beste Grüße

Lukas
  Mit Zitat antworten Zitat
dominikkv

Registriert seit: 30. Sep 2006
Ort: Gundelfingen
1.109 Beiträge
 
Delphi 2007 Professional
 
#7

Re: Cover-Anzeige für WMP Programmieren

  Alt 30. Apr 2010, 13:02
Hi Lukas,

in Delphi musst du ein bisschen umdenken: Es gibt zwar noch die Hauptschleife (wie von dir erwähnt Application.Run), mit der hast du als Programmierer aber nichts zu tun! Wenn sich etwas ändert wird Delphi dich informieren.

Beispiel: du hast einen Button. Du willst bei einem Klick darauf etwas ausführen.
a) Polling
Du frägst alle 10 msec ab, ob der Button gedrückt ist. Wenn ja, mache was, wenn nein, mache nichts.
b) Ereignisorientiert
Du machst die ganze Zeit nichts, nur wenn der Button gedrückt wurde ruft Delphi eine Procedure auf, in der du dann was machen kannst.

Und jetzt rate mal, welche Variante performanter und einfacher ist


Was ich dir damit sagen will: weg vom Polling, hin zu Ereignissen! Du wirst höchstwarscheinlich eine Komponente nutzen, um das Lied abzuspielen. Diese wird wahrscheinlich ein Ich-fange-jetzt-an-ein-Lied-zu-spielen und ein Das-Lied-ist-jetzt-zu-Ende Ereignis haben. Genau dort kannst du das Cover ändern.
Dominik
Wer anderen eine Grube gräbt, hat ein Gruben-Grab-Gerät!
  Mit Zitat antworten Zitat
LukasB

Registriert seit: 29. Apr 2010
8 Beiträge
 
#8

Re: Cover-Anzeige für WMP Programmieren

  Alt 1. Mai 2010, 13:38
Hi Leute,

also vielleicht ist mein Titel etwas irreführend; ich hab keinen eigenen Player programmiert
Nutze den WMP11 und wollte eine Visualisierung nach meinem Geschmack haben: großes Cover + Interpret/Album/Titel.
Das klappt dank euerer Hilfe jetzt super, allerdings hat das ganze einen Makel, den ich mir nicht erklären kann, vielleicht wieder etwas Pascal spezfisches:
Bei Album X&Y von Coldplay zeigt mir mein Programm leider XY an mit folgendem Code: (ich lese die Metadaten aus der Registry)

label5.Caption := ' ' + regist.ReadString('album') + ' ';

Das entsprechende Cover lese ich wie folgt ein, bzw. gebe es wie folgt aus:

jpg.LoadFromFile('E:\Musik gesamt\Musik MP\Cover\'+ regist.ReadString('album')+'.jpg' );
canvas.Draw(50,100,jpg);

Das verrückte ist nun, dass ich das Albumcover, also die entsprechende jpg, X&Y.jpg nennen muss, sonst findet er sie nicht.
Das heißt für mich, dass die Funktion ReadString richtig liest, aber das Label sie nicht richtig rausgeben kann.
Hat jemand von euch eine Ahnung warum?
Viele Grüße

Lukas
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.542 Beiträge
 
Delphi 11 Alexandria
 
#9

Re: Cover-Anzeige für WMP Programmieren

  Alt 1. Mai 2010, 13:41
Das "&" sorgt dafür, dass der folgende Buchstabe unterstrichen dargestellt wird. Um das zu vermeiden, musst Du es einfach verdoppeln.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
LukasB

Registriert seit: 29. Apr 2010
8 Beiträge
 
#10

Re: Cover-Anzeige für WMP Programmieren

  Alt 1. Mai 2010, 14:07
Hi Detlef,

danke für die schnelle Antwort!
Hatte gehofft ich käme um Stringmanipulation herum, aber dann muss ich wohl doch nochmal ran.
Werd dann erstmal bissi rumgooglen und nach Stringfunktionen suchen.
Besser so als garnicht zu wissen, woher es kommt
Viele Grüße

Lukas
  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 09:46 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