AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Object-Pascal / Delphi-Language Delphi Inhalt der Listenbox in einer Schleife fassen???
Thema durchsuchen
Ansicht
Themen-Optionen

Inhalt der Listenbox in einer Schleife fassen???

Ein Thema von EvilDragon · begonnen am 24. Jan 2004 · letzter Beitrag vom 30. Jan 2004
Antwort Antwort
Seite 2 von 2     12   
EvilDragon

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

Re: Inhalt der Listenbox in einer Schleife fassen???

  Alt 24. Jan 2004, 18:45
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
www.codedragon.de check this out!
  Mit Zitat antworten Zitat
scp

Registriert seit: 31. Okt 2003
1.120 Beiträge
 
Delphi 7 Personal
 
#12

Re: Inhalt der Listenbox in einer Schleife fassen???

  Alt 24. Jan 2004, 20:25
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;
  Mit Zitat antworten Zitat
EvilDragon

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

Re: Inhalt der Listenbox in einer Schleife fassen???

  Alt 25. Jan 2004, 09:33
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:
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;
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)

PS: hier projektdatei nun im neuen gewand (mit array) und sorry den immer och langen code
Angehängte Dateien
Dateityp: zip file.zip (293,6 KB, 7x aufgerufen)
www.codedragon.de check this out!
  Mit Zitat antworten Zitat
scp

Registriert seit: 31. Okt 2003
1.120 Beiträge
 
Delphi 7 Personal
 
#14

Re: Inhalt der Listenbox in einer Schleife fassen???

  Alt 25. Jan 2004, 11:55
Wie gesagt du kannst die anderen beiden Zahlen auch automatisch einfügen.
Hier mal die kurze Variante, ohne FindFirst() / FindNext:

Delphi-Quellcode:
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;
Jezt vielleicht mal eine kurze Erklärung:
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.
  Mit Zitat antworten Zitat
EvilDragon

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

Re: Inhalt der Listenbox in einer Schleife fassen???

  Alt 25. Jan 2004, 12:50
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:
hilfe timeranzeige vom medium
www.codedragon.de check this out!
  Mit Zitat antworten Zitat
MikeS

Registriert seit: 3. Mai 2003
Ort: München
157 Beiträge
 
Delphi 7 Professional
 
#16

Re: Inhalt der Listenbox in einer Schleife fassen???

  Alt 25. Jan 2004, 13:08
du könntest tatsächlich das auslesen vereinfachen!

ich habe es mal so gemacht:

Delphi-Quellcode:
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;
du mußt i natürlich deklarieren!
bei mir hat es funktioniert!
Mike Schröder
Fleiß kann man vortäuschen, faul muss man schon selber sein!
  Mit Zitat antworten Zitat
scp

Registriert seit: 31. Okt 2003
1.120 Beiträge
 
Delphi 7 Personal
 
#17

Re: Inhalt der Listenbox in einer Schleife fassen???

  Alt 25. Jan 2004, 13:47
Funktioniert alles ähnlich:

Delphi-Quellcode:
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;
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
RadioGroup1.Items.LoadFromFile(dir + 'mp3/' + 'inhalt.ini') auslesen und entsprechend per RadioGroup1.ItemIndex ermitteln, welche Kategorie ausgewählt wurde.
  Mit Zitat antworten Zitat
EvilDragon

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

Re: Inhalt der Listenbox in einer Schleife fassen???

  Alt 25. Jan 2004, 22:39
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*
www.codedragon.de check this out!
  Mit Zitat antworten Zitat
EvilDragon

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

Re: Inhalt der Listenbox in einer Schleife fassen???

  Alt 28. Jan 2004, 19:18
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;
www.codedragon.de check this out!
  Mit Zitat antworten Zitat
EvilDragon

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

Re: Inhalt der Listenbox in einer Schleife fassen???

  Alt 30. Jan 2004, 16:14
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:
    If ProgressBar1.Position = ProgressBar1.Max then begin
      MediaPLayer1.FileName := ListBox2.Items[ListBox2.ItemIndex+1];
      MediaPlayer1.Play;
    end;
und hier der code, der die list füllt:
Delphi-Quellcode:
  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;
track ist ein arry (steht in der vordere seite genauer
www.codedragon.de check this out!
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 2     12   


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 08:06 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