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...