AGB  ·  Datenschutz  ·  Impressum  







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

top100 in mp3player

Ein Thema von EvilDragon · begonnen am 15. Jun 2004 · letzter Beitrag vom 20. Jun 2004
Antwort Antwort
Seite 1 von 2  1 2      
EvilDragon

Registriert seit: 15. Sep 2003
Ort: Berlin
143 Beiträge
 
Delphi 7 Enterprise
 
#1

top100 in mp3player

  Alt 15. Jun 2004, 20:44
hi leutz, ich versuche nun seit 2 tagen eine toplist für meinen mp3player zu programmieren.
wenn ein track komplet durchgelaufen ist wird überprüft ob in der listbox (top100l) schon was drin steht wenn nicht, dann wird der aktuellgespielter track eingetragen bzw die variabeln in die vorher aus dem Id3Tag der artist und titel ausgelsen wurde.
wenn schon was in der liste steht werden die inhalte in strings geladen der platz abgezogen und nachgeschaut ob artist und titel identisch sind, wenn ja, dann listbox.item.delete(i) den platz addieren um 1 und eintragen in listbox
sollte nicht gleich sein dann einfach eintragen mit platz=1

platz heißt eigentlich punkte bzw. stimmen....

hier mein jetzige und 3. code:

Delphi-Quellcode:
procedure Thauptprog.top100Timer(Sender: TObject);
var artneu, trackneu, zkneu, zklist, plist : String;
    pneu, i, code : Integer;
begin
  if Trackbar1.Position = TrackBar1.Max then //status von song
  begin
    artneu := id3_tag.EdtArtist.Text; //id3tag artist
    trackneu := id3_tag.EdtTitle.Text; //id3tag titel
    if top100l.Count = 0 then
    begin
      pneu := 1;
      top100l.Items.Add(IntToStr(pneu)+'~'+artneu+'~~'+trackneu);
    end
    else if top100l.Count > 0 then
    begin
      for i:=0 to top100l.Count-1 do
      begin
        zkneu := artneu+'~~'+trackneu;
        zklist := top100l.Items[i];
        plist := Copy(zklist,0,Pos('~',zklist)-1);
        Val(plist, pneu, code);
        zklist := Copy(zklist, Pos('~',zklist)+1, Length(zklist));
        if zklist=zkneu then
        begin
          top100l.Items.Delete(i);
          pneu := pneu+1;
          top100l.Items.Add(IntToStr(pneu)+'~'+zkneu);
        end
        else
        begin
          pneu := 1;
          top100l.Items.Add(IntToStr(pneu)+'~'+zkneu)
        end;
      end;
    end;
  end;
end;
mein prob, es geht auch so weit aber bei meist mehr wie 2-3 einträgen fängt er an nicht mehr zu vergleich oder speichert einträge doppelt ect...
www.codedragon.de check this out!
  Mit Zitat antworten Zitat
EvilDragon

Registriert seit: 15. Sep 2003
Ort: Berlin
143 Beiträge
 
Delphi 7 Enterprise
 
#2

Re: top100 in mp3player

  Alt 15. Jun 2004, 21:46
habs nun so versucht aber klappt auch net:

Delphi-Quellcode:
procedure Thauptprog.top100Timer(Sender: TObject);
var artneu, trackneu, zkneu, zklist, plist : String;
    pneu, i, code, drin : Integer;
begin
  if Trackbar1.Position = TrackBar1.Max then //status von song
  begin
    drin := 0;
    pneu := 0;
    artneu := id3_tag.EdtArtist.Text; //id3tag artist
    trackneu := id3_tag.EdtTitle.Text; //id3tag titel
    if top100l.Count = 0 then
    begin
      pneu := 1;
      top100l.Items.Add(IntToStr(pneu)+'~'+artneu+'~~'+trackneu);
    end
    else if top100l.Count > 0 then
    begin
      for i:=0 to top100l.Count-1 do
      begin
      While drin = 0 do
      begin
        zkneu := artneu+'~~'+trackneu;
        zklist := top100l.Items[i];
        plist := Copy(zklist,0,Pos('~',zklist)-1);
        Val(plist, pneu, code);
        zklist := Copy(zklist, Pos('~',zklist)+1, Length(zklist));
        if zklist=zkneu then
        begin
          top100l.Items.Delete(i);
          pneu := pneu+1;
          top100l.Items.Add(IntToStr(pneu)+'~'+zkneu);
          drin := 1;
        end
        else
        begin
          pneu := 1;
          top100l.Items.Add(IntToStr(pneu)+'~'+zkneu);
          drin := 1
        end;
      end;
      end;
    end;
  end;
end;
naja, hoffe kann mir jemand helfen bzw. versteht was ich meine...und hat eine lösung bzw. eine andere idee *hoff*
www.codedragon.de check this out!
  Mit Zitat antworten Zitat
EvilDragon

Registriert seit: 15. Sep 2003
Ort: Berlin
143 Beiträge
 
Delphi 7 Enterprise
 
#3

Re: top100 in mp3player

  Alt 16. Jun 2004, 06:07
hm... kann wohl keiner, naja selber noch ein bissel testen vielleicht überwinde ich ja die mauer die mich quährdenken lässt
www.codedragon.de check this out!
  Mit Zitat antworten Zitat
Muetze1
(Gast)

n/a Beiträge
 
#4

Re: top100 in mp3player

  Alt 16. Jun 2004, 09:59
Moin!

Du brauchst doch nur den Zähler, wie oft gespielt. Dadurch entstehen doch automatisch die Top100...

MfG
Muetze1
  Mit Zitat antworten Zitat
EvilDragon

Registriert seit: 15. Sep 2003
Ort: Berlin
143 Beiträge
 
Delphi 7 Enterprise
 
#5

Re: top100 in mp3player

  Alt 16. Jun 2004, 16:16
hopla.. meist jetzt den der zählt, wie oft das lied lief?? oder wie...
ich muss doch auch nachschauen ob das lied in der top100 drin ist und wenn, dann den zähler um eins addieren....
www.codedragon.de check this out!
  Mit Zitat antworten Zitat
Muetze1
(Gast)

n/a Beiträge
 
#6

Re: top100 in mp3player

  Alt 16. Jun 2004, 17:17
Moin!

Zitat von EvilDragon:
hopla.. meist jetzt den der zählt, wie oft das lied lief?? oder wie...
ich muss doch auch nachschauen ob das lied in der top100 drin ist und wenn, dann den zähler um eins addieren....
Ich meinen einen Zähler für jedes Lied - musst du eh haben, weil folgendes mal vorstellen:

Deine Top1000 - davon das das am Platz 1000: Angenommen dieses wurde schon 5x gespielt. Wie willst du das denn mit deiner Logik machen? Wenn du nun ein Lied hast was zum ersten mal gespielt wurde, dann wird es auch nicht in die Top1000 aufgenommen, ergo hast du keinen Zähler, ergo weisst du das nächste mal spielen des Liedes nicht mehr, das es schon einmal gespielt wurde. Darauf folgt: es können sich nur noch die Positionen in der Top1000 ändern.

Deshalb: Einen Zähler bauen für jedes File der mit jedem abspielen um eins erhöhrt wird. Wenn du das gemacht hast, kannst du daraus dann deine Top1000 ermitteln...

MfG
Muetze1
  Mit Zitat antworten Zitat
EvilDragon

Registriert seit: 15. Sep 2003
Ort: Berlin
143 Beiträge
 
Delphi 7 Enterprise
 
#7

Re: top100 in mp3player

  Alt 16. Jun 2004, 20:04
hm... von prinzip her also eine liste die man nicht sieht...in dieser wird immer das aktuelle lied gespeichert, was gespielt wurde... würd dieses später wieder mal abgespielt erhält es eine 2 und das gleich auch mit anderen liedern..

so, nun sagen wir mal, man klickt auf einem butten der dann eine zweite listbox, die dann aus der unsichbaren die ersten 100 einträge ausließt und dann anzeigt,

vorausgesetz die unsichtbare die, halt zählt ist von hause aus sortiert...

so in edwar?


die unsichtbare listbox kann man ja immer in einer datei abspeichern und laden beim progstart...
www.codedragon.de check this out!
  Mit Zitat antworten Zitat
Muetze1
(Gast)

n/a Beiträge
 
#8

Re: top100 in mp3player

  Alt 17. Jun 2004, 01:40
Moin!

Ja, genau so.

Dazu noch ein paar Tipps:

1. Du brauchst keine unsichtbare ListBox, du kannst einfach eine TStringList nehmen. Die kannst du genauso einfach laden und speichern und die ist von Haus aus nicht auf der Oberfläche zu sehen.
2. Speicher die Abspielhäufigkeit am besten in dem Object[] Array bei den Einträgen - die werden mitsortiert und dann ist es einfacher, da dann der Name und die Anzahl ordentlich getrennt sind...
3. Du könntest auch den PlayCounter nutzen, der in den ID3v2.3.x.x mindestens definiert sind - Nachteil: jedesmal die MP3's auslesen - und es geht halt nur bei MP3s - also kein OGG, WMA oder sonstige...
4. schöne Interpretation von "etwa" als "edwar"...

MfG
Muetze1
  Mit Zitat antworten Zitat
EvilDragon

Registriert seit: 15. Sep 2003
Ort: Berlin
143 Beiträge
 
Delphi 7 Enterprise
 
#9

Re: top100 in mp3player

  Alt 17. Jun 2004, 08:17
oky, alles klaro so wei *denk ich*

Zu2.
aber das mit 2 raf ich net, wie meinst soll ich array nutzen....als zähler???

Zu3.
Ja könnte man, aber später soll der Nutzer auch einstellen ob er außer mp3 anderes hört und wenn ja, ob top100 dann halt die dateinamen benutzen soll.
www.codedragon.de check this out!
  Mit Zitat antworten Zitat
Muetze1
(Gast)

n/a Beiträge
 
#10

Re: top100 in mp3player

  Alt 17. Jun 2004, 10:01
Moin!

Zitat von EvilDragon:
Zu2.
aber das mit 2 raf ich net, wie meinst soll ich array nutzen....als zähler???
Nutze eine TStringList und missbrauche die Objekt Eigenschaft als Speicherplatz für deinen Zähler:

Delphi-Quellcode:
  StrL := TStringList.Create;
  StrL.LoadFromFile('top100');

  // so, lied A wird abgespielt
  Index := StrL.IndexOf(A);
  Counter := Integer(StrL.Objects[Index]);
  Inc(Counter);
  StrL.Objects[Index] := TObject(Counter);
Mir fällt nur noch ein, das du dir was beim Speichern überlegen musst, da die Objekte nicht mit gespeichert werden...

MfG
Muetze1
  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 19:12 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