![]() |
Re: Inhalt der Listenbox in einer Schleife fassen???
Hi leutz erst mal danke für die ganze hilfe ;)
thx an @scp, auf den trick mit array wehre ich gar net gekommen, kürtz die programmzeilen auf die hilfe... den 2. post, das mit dem Firstfind schaue ich mir mal genauer an.. mal schauen ob ich drauß schlauß werde.... hast vielleicht nen tut oder nen tipp wo ich was gutes hier finde...nutze grad die suche thx an @Luckie, das mit dem pfad kapier ich jetzt, wird dann auch noch überarbeitet |
Re: Inhalt der Listenbox in einer Schleife fassen???
Da ich auf die schnelle kein zusammenhängendes Beispiel finden konnte, hab ich mal eins gebastelt:
Delphi-Quellcode:
var
SRec: TSearchRec; StlDirs: TStrings; StlFiles: TStrings; begin StlDirs := TStringList.Create; StlFiles := TStringList.Create; try If FindFirst(ExtractFilePath(ParamStr(0)) + 'MP3\' + '*.*', faAnyFile, SRec) = 0 then begin repeat If ((SRec.Attr and faDirectory) <> 0) and // Bedingung, um nur (SRec.Name <> '..') and (SRec.Name <> '.') then // Ordner zu finden StlDirs.Add(SRec.Name) else If not ((SRec.Attr and faDirectory) <> 0) then // Bedingung, um nur Dateien zu finden StlFiles.Add(SRec.Name); until FindNext(SRec) <> 0; FindClose(SRec); end; ListBox1.Items.AddStrings(StlDirs); ListBox2.Items.AddStrings(StlFiles); finally StlDirs.Free; StlFiles.Free; end; end; |
Re: Inhalt der Listenbox in einer Schleife fassen???
Liste der Anhänge anzeigen (Anzahl: 1)
thy das gleich kommentiert hat... dat muss erst mal wieder verdauen ;)
-------------------------------------- hm... so gans raff ich dat noch net @scp, hab mal eben meine laaange prcoedur gekürtz und vielleicht kannst du mir ja verraten wie ich genau dein beispiel einbinde...
Code:
diese .. heißt das da gekürtzt wurde und das ganze geht so weit das es am ende heißt ListBox1.Selceted[10] also 10 mal 5mal und 25mal (hoffe man versteht was ich meine, jedenfalls viele viele programmzeilen)
procedure TForm1.ListBox2Click(Sender: TObject);
var track : array [1..25] of String; x : Integer; begin if RadioButton1.Checked then begin if ListBox1.Selected[0] then begin if ListBox3.Selected[0] then begin for x := 1 to 25 do track[x] := 'mp3/cds_und_alben/' + '01' + '/' + '01' + '/' + Format('%0:2.2d', [x]) + '.mp3'; if Listbox2.Selected[0] then begin MediaPlayer1.FileName := track[1]; MediaPlayer1.Open; Trackbar1.Position := 0; Trackbar1.Max := MediaPlayer1.TrackLength[1]; ProgressBar1.Max := MediaPlayer1.TrackLength[1]; end; . . if Listbox2.Selected[24] then begin MediaPlayer1.FileName := track[25]; MediaPlayer1.Open; Trackbar1.Max := MediaPlayer1.TrackLength[1]; ProgressBar1.Max := MediaPlayer1.TrackLength[1]; end; end; if ListBox3.Selected[1] then begin for x := 1 to 25 do track[x] := 'mp3/cds_und_alben/' + '01' + '/' + '02' + '/' + Format('%0:2.2d', [x]) + '.mp3'; if Listbox2.Selected[0] then begin MediaPlayer1.FileName := track[1]; MediaPlayer1.Open; Trackbar1.Max := MediaPlayer1.TrackLength[1]; ProgressBar1.Max := MediaPlayer1.TrackLength[1]; . . end; if Listbox2.Selected[24] then begin MediaPlayer1.FileName := track[25]; MediaPlayer1.Open; Trackbar1.Max := MediaPlayer1.TrackLength[1]; ProgressBar1.Max := MediaPlayer1.TrackLength[1]; end; end; if ListBox3.Selected[2] then begin for x := 1 to 25 do track[x] := 'mp3/cds_und_alben/' + '01' + '/' + '03' + '/' + Format('%0:2.2d', [x]) + '.mp3'; if Listbox2.Selected[0] then begin MediaPlayer1.FileName := track[1]; MediaPlayer1.Open; Trackbar1.Max := MediaPlayer1.TrackLength[1]; ProgressBar1.Max := MediaPlayer1.TrackLength[1]; end; . . if Listbox2.Selected[24] then begin MediaPlayer1.FileName := track[25]; MediaPlayer1.Open; Trackbar1.Max := MediaPlayer1.TrackLength[1]; ProgressBar1.Max := MediaPlayer1.TrackLength[1]; end; end; if ListBox3.Selected[3] then begin for x := 1 to 25 do track[x] := 'mp3/cds_und_alben/' + '01' + '/' + '04' + '/' + Format('%0:2.2d', [x]) + '.mp3'; if Listbox2.Selected[0] then begin MediaPlayer1.FileName := track[1]; MediaPlayer1.Open; Trackbar1.Max := MediaPlayer1.TrackLength[1]; ProgressBar1.Max := MediaPlayer1.TrackLength[1]; end; . . if Listbox2.Selected[24] then begin MediaPlayer1.FileName := track[25]; MediaPlayer1.Open; Trackbar1.Max := MediaPlayer1.TrackLength[1]; ProgressBar1.Max := MediaPlayer1.TrackLength[1]; end; end; if ListBox3.Selected[4] then begin for x := 1 to 25 do track[x] := 'mp3/cds_und_alben/' + '01' + '/' + '05' + '/' + Format('%0:2.2d', [x]) + '.mp3'; if Listbox2.Selected[0] then begin MediaPlayer1.FileName := track[1]; MediaPlayer1.Open; Trackbar1.Max := MediaPlayer1.TrackLength[1]; ProgressBar1.Max := MediaPlayer1.TrackLength[1]; end; . . end; if Listbox2.Selected[24] then begin MediaPlayer1.FileName := track[25]; MediaPlayer1.Open; Trackbar1.Max := MediaPlayer1.TrackLength[1]; ProgressBar1.Max := MediaPlayer1.TrackLength[1]; end; end; end; end; end; PS: hier projektdatei nun im neuen gewand (mit array) und sorry den immer och langen code ;) |
Re: Inhalt der Listenbox in einer Schleife fassen???
Wie gesagt du kannst die anderen beiden Zahlen auch automatisch einfügen.
Hier mal die kurze Variante, ohne FindFirst() / FindNext:
Delphi-Quellcode:
Jezt vielleicht mal eine kurze Erklärung:
procedure TForm1.ListBox2Click(Sender: TObject);
var track : array [1..25] of String; x : Integer; begin if RadioButton1.Checked then begin If (ListBox1.ItemIndex > -1) and // Prüft, ob überhaupt etwas in den (ListBox3.ItemIndex > -1) then // Listboxen ausgewählt wurde for x := 1 to 25 do track[x] := 'mp3' + '/' + 'cds_und_alben' + '/' + Format('%0:2.2d',[ListBox1.ItemIndex+1]) + '/' + Format('%0:2.2d',[ListBox3.ItemIndex+1]) + '/' + Format('%0:2.2d', [x]) + '.mp3'; if (ListBox1.ItemIndex > -1) and (ListBox3.ItemIndex > -1) and (Listbox2.ItemIndex > -1) then begin // Hier wird auch noch die Song-Listbox geprüft MediaPlayer1.FileName := ExtractFilePath(ParamStr(0)) + // Den Pfad der Exe nicht vergessen track[Listbox2.ItemIndex+1]; MediaPlayer1.Open; Trackbar1.Position := 0; Trackbar1.Max := MediaPlayer1.TrackLength[1]; ProgressBar1.Max := MediaPlayer1.TrackLength[1]; end; end; end; 1. Format, sorgt dafür, wie der Name schon sagt, das z.B. eine Zahl auf eine bestimmte Art und Weise als Text umgewandelt, ausgegeben und formatiert wird. Mit dem '%0:2.2d' gibt man an, das es eine Ganzzahl (d) ist, die immer mindestens zwei Stellen (2.2) hat, die %0 steht für die Zahl, man kann in den Eckklammern auch mehrere Zahlen angeben, die dann mit %1, %2 usw. geziehlt formatiert werden können, oder alle zusammen nur mit %, mehr dazu steht ja in der Delphi-Hilfe. 2. ListboxX.ItemIndex steht für den Eintrag, den der Benutzer ausgewählt hat, wobei die Zählung bei 0 beginnt, also muss ich ein +1 anhängen, weil deine Ordner ja mit 1 anfangen. 3. Ist ListboxX.ItemIndex -1 dann hat der Benutzer gar keinen Eintrag ausgewählt und wir brauchen erst gar nicht mit der Verarbeitung anfangen. |
Re: Inhalt der Listenbox in einer Schleife fassen???
klasse ich danke dir... habs sogar geschnallt nun hat das ganze projekt statt 8058 zeilen nur noch 369 *freu*
weiter oben ist nun das aktuelle file... vielleicht weiß jemand iwe man was noch kürtzer fassen könnte (z.b. weiter oben das auslesen der ini und einfügen in die listboxen) vielleicht kann mir ja auch noch hier bei gehlfen werden: ![]() |
Re: Inhalt der Listenbox in einer Schleife fassen???
du könntest tatsächlich das auslesen vereinfachen!
ich habe es mal so gemacht:
Delphi-Quellcode:
du mußt i natürlich deklarieren!
for i := 0 to 9 do
begin if ListBox1.Selected[i] then begin if i < 10 then ListBox3.Items.LoadFromFile(dir + '/cds_und_alben/0' + inttostr(i+1) + '/inhalt.ini') else ListBox3.Items.LoadFromFile(dir + '/cds_und_alben/' + inttostr(i+1) + '/inhalt.ini'); end; end; bei mir hat es funktioniert! |
Re: Inhalt der Listenbox in einer Schleife fassen???
Funktioniert alles ähnlich:
Delphi-Quellcode:
PS: Wenn du schon eine TRadioGroup auf deinem Formular hast, brauchst du nicht extra noch TRadioButtons draufzusetzten. Auch dort kannst du eine "inhalt.ini" per
procedure TForm1.ListBox1Click(Sender: TObject);
var inhaltini : string; begin if RadioButton1.Checked then begin If (ListBox1.ItemIndex > -1) then begin inhaltini := dir + 'mp3' + '/' + 'cds_und_alben' + '/' + Format('%0:2.2d',[ListBox1.ItemIndex+1]) + '/' + 'inhalt.ini'; If FileExists(inhaltini) then ListBox3.Items.LoadFromFile(inhaltini) else ListBox3.Items.Clear; end; end; end; procedure TForm1.ListBox3Click(Sender: TObject); var tracksini : String; begin if RadioButton1.Checked then begin If (ListBox1.ItemIndex > -1) and (ListBox3.ItemIndex > -1) then begin tracksini := dir + + 'mp3' + '/' + 'cds_und_alben' + '/' + Format('%0:2.2d',[ListBox1.ItemIndex+1]) + '/' + Format('%0:2.2d',[ListBox3.ItemIndex+1]) + '/' + 'tracks.ini'; If FileExists(tracksini) then ListBox2.Items.LoadFromFile(tracksini) else ListBox2.Items.Clear; end; end; end;
Delphi-Quellcode:
auslesen und entsprechend per RadioGroup1.ItemIndex ermitteln, welche Kategorie ausgewählt wurde.
RadioGroup1.Items.LoadFromFile(dir + 'mp3/' + 'inhalt.ini')
|
Re: Inhalt der Listenbox in einer Schleife fassen???
hab alles so weit angepasst außer das mit radio.... aktuelle exe auf seite eins... muss nun noch ein paar probs mit der lautstärke und der timeranzeige hinbekommen *g*
|
Re: Inhalt der Listenbox in einer Schleife fassen???
hi hab nun folgendes prob, möchte das wenn das lied zuende ist er automatisch das nächste abspielt... sollte die liste keine weiteren einträge haben soll das erste spiel wieder abgespielt werden...
hier ist ein kleiner ansatz, das der fehlerhaft ist weiß ich, denn ich spiel da mit leider nur den aktuellen track ab.... benutze die procedure mit arry ect wie auf eine seite da vor...
Code:
// If ProgressBar1.Position = ProgressBar1.Max then begin
// MediaPLayer1.FileName := track[ListBox2.ItemIndex+1+1]; // MediaPlayer1.Play; // end; |
Re: Inhalt der Listenbox in einer Schleife fassen???
hab nu nhier gesucht und viele beispiele getestet leider spielt das prog statt den nächten song immer nur das was grad eben lief.. hier mal ein beispielcode:
Delphi-Quellcode:
und hier der code, der die list füllt:
If ProgressBar1.Position = ProgressBar1.Max then begin
MediaPLayer1.FileName := ListBox2.Items[ListBox2.ItemIndex+1]; MediaPlayer1.Play; end;
Delphi-Quellcode:
track ist ein arry (steht in der vordere seite genauer ;)
if RadioButton1.Checked then begin
if (ListBox1.ItemIndex > -1) and // Prüft, ob überhapt etwas in den (ListBox3.ItemIndex > -1) then // Listeboxen ausgewählt ist for x := 1 to 25 do track[x] := dir+'\' +'cds_und_alben' + '\' + Format('%0:2.2d',[ListBox1.ItemIndex+1]) + '\' + Format('%0:2.2d',[ListBox3.ItemIndex+1]) + '\' + Format('%0:2.2d', [x]) + '.mp3'; if (ListBox1.ItemIndex > -1) and (ListBox3.ItemIndex > -1) and (ListBox2.ItemIndex > -1) then begin // Hier wird auch noch die MediaPLayer1.FileName := track[ListBox2.ItemIndex+1]; //Song-Listbox if ListBox2.Items.Count=0 then exit; mp3File := Concat(MediaPlayer1.FileName); if not FileExists(mp3File) then begin ShowMessage('MP3 file '+#13#10+'__'+ mp3File +'__'+#13#10+'does not exist!'); exit; end; GetID3TagInformation(mp3File, edTitle, edArtist, edAlbum, edYear, edGenre, edComment); Form3.Edit1.Text := MediaPlayer1.FileName; Edit1.Text := MediaPlayer1.FileName; MediaPlayer1.Open; SetMPVolume(MediaPlayer1, ScrollBar1.Position); //geprüft Trackbar1.Position :=0; Trackbar1.Max := MediaPlayer1.TrackLength[1]; ProgressBar1.Max := MediaPlayer1.TrackLength[1]; MediaPlayer1.Play; end; end; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:06 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz