patrick dee - Mi 08.03.06 08:56
Titel: ListBox Listen aufruf Problem / Frage
Hi Leute,
hoffe hier kann mir jemand weiterhelfen.Ich habe verschiedene Playlisten, die so aussehen :
0 Uhr
5555-69 HERZ 00:04
5064-06 JEDER HAT EIN RECHT AUF LIEBE WIND 05:14
5193-17 SING ME A RAINBOW DR HOOK 02:31
5022-12 IMMER NUR DU. NINA FALK 02:55
5555-72 VERFÜHRUNG 00:05
5109-19 SHE S ALWAYS A WOMAN BILLY JOEL 03:16
5143-19 *BERÜHRUNG EDMUND 02:51
5555-55 SONGS ZUM TRÄUMEN .... 00:17
1 Uhr
5555-58 LIEBLINGSSONG 00:13
5068-13 SO WIE SCHWEBEN BURKHARD BROZAT 03:10
5186-06 NOBODY DOES IT BETTER CARLY SIMON 03:255188-14 ENSEMBLE ART SULLIVAN 03:43
5276-12 MI AMOR JEANNINE 03:30
5118-03 HOLD ME THRILL ME KISS ME GLORIA ESTEFAN 03:19
2 Uhr
5184-03 KLEINE SEELENFEUER MICHELLE 04:08
5098-06 GEE BABY PETER SHELLEY 02:54
5555-20 TAG UND NACHT (VERS. 2) 00:09
5237-03 ICH LIEG WACH CARRIERE 04:08
5103-15 HELP ME MAKE IT THROUGH THE NIGHT JOHN HOLT 03:05
5151-03 *NIGHT RIDE DAVID WARWICK 03:16
abgelegt sind die als 06-03-06.pl1
also nach Tagesdatum.
Wie kriege ich es hin, das wenn ich einen button drücke der Tag aufrufen heißt, mir immer zur aktl Stunde die Liste geladen wird. Also um 6 Uhr nur der Teil der Liste zwischen 6 und 7 Uhr in die ListBox. Ist es genau 7 Uhr, dann soll automatisch die Liste von 8 bis 9 Uhr geladen werden. Wenn es 23:59:59 ist soll der die Liste für den neuen Tag geladen werden usw.
Aufrufen tue ich die Listen bisher so :
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15:
| procedure TfMain.ListeProgramm1rc11Click(Sender: TObject); var datum : string; begin PlayListBox1.Visible := True; PlayListBox2.Visible := False; PanelProgramm.Caption := 'P 1'; datum:= FormatDateTime('dd-mm-yy',NOW); try fMain.PlayListBox1.Items.LoadFromFile( tools_form.edit1.text + datum + '.rc1'); PlayListBox1.ItemIndex := + 2; except MessageDlg('Es wurde keine Playliste für Heute gefunden ! ', mtConfirmation, [mbOK], 0); end; end; |
allerdinsg läd die ListBox den ganzen Tag. Hoffe jemand kann mir da weiterhelfen.
Danke
Gruß
Patrick
digi_c - Mi 08.03.06 09:16
Hier nurmal die Vorgehensweise wie ich es machen würde:
- Stunde des Tages bekommen (schau mal in die Hilfe zu der Unit dateutils
- Zeile aus Playlist einlesen und überprüfen ob 'Uhr' vorkommt
- Wenn dann die folgenden Zeilen in Stringliste einlesen bis eine Leerzeile kommt
- Das ganze bis Dateiende
Du kennst ja sicherlich die .PLS Listen, die Winamp,WMP,... benutzen, vielleicht wäre es einfacher für jeden Zeitabschnitt eine solche Datei zu benutzen, die kann man dann nochmal wiederverwenden und es gibt bestimmt schon fertige Parser dafür.
patrick dee - Mi 08.03.06 09:53
.. habe etwas probiert, aber irgendwie hat das noch nicht hin. Ist nichts zu sehen in der Liste.
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38: 39: 40: 41: 42: 43: 44: 45: 46:
| procedure TForm1.Button4Click(Sender: TObject); var Found : boolean; i : integer; datum : string; begin datum:= FormatDateTime('dd-mm-yy',NOW); PlayListBox1.Items.LoadFromFile( Edit1.text + datum + '.rc1' ); Found := False; begin with PlayListBox1.Items do begin BeginUpdate; Clear; for i := 0 to PlayListBox1.Count - 1 do Add( PlayListBox1.Items[ i ]); EndUpdate; end; Abort; end; i := 0; with PlayListBox1.Items do begin BeginUpdate; Clear; while not Found and( i < PlayListBox1.Count )do begin if( Pos( EditAktlStunde.Text, PlaylistBox1.Items[ i ]) > 0 )then begin Inc( i ); while not( Pos( ' Uhr', PlayListBox1.Items[ i ]) > 0 )do begin Add( PlaylistBox1.Items[ i ]); Inc( i ); end; Found := True; end else Inc( i ); end; inc (i); PlayListBox1.ItemIndex := 0; EndUpdate;
end; end; |
Über einen timer hole ich mir das Datum und kopiere die ersten zwei Zeichen raus für die
aktuelle Stunde.
Delphi-Quelltext
1: 2: 3: 4: 5:
| procedure TForm1.TimerUhrTimer(Sender: TObject); begin EditUhrzeit.Text := TimeToStr(Now); EditAktlStunde.Text:= (copy(EditUhrzeit.Text,0,2)); end; |
Irgendwo habe ich noch nen Knoten drinnen.
Wer kann mir weiterhelfen ?????????
Danke
Patrick
digi_c - Mi 08.03.06 21:35
Also dein Code korrigieren, vermag ich so auf die Schnelle nicht, da kann auch ich mich heute nichtmehr reindenken, hier mal was zusammengeschustertes:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24:
| uses dateutils .... procedure getcurrenttracks(); var tracks:TStringList; begin tracks:=TStringList.Create; AssignFile(F, OpenDialog1.FileName); Reset(F); repeat Readln(F, tmpS); if pos(tmpS,'Uhr')>0 then begin if houroftheday(now) = strtoint(trim(copy(0,pos(sTmp,'UHR'))) then begin Readln(F, tmpS); repeat tracks.Add(tmpS); until length(tmpS)=0 end; end; until EOF CloseFile(F); end; |
Ist aber wirklich nur spekulativ, was die Zahlen bei den tracks sollen, weiß ich z.B. nicht.