![]() |
Inhalt der Listenbox in einer Schleife fassen???
Hi leutz ich arbeite grad an einer art musikbox mit meiner mp3sammlung....
ich nutze da für mehrer listboxen ect z.b. Listbox 1: inhalt des mp3ordner (namen des interpreten) listbox 3: inhalt vom ordner des interpreten (halt seine alben) listbox 2: gibt den inhalt de ralben wieder (man klickt auf ein file und es wird abgespielt) momentan hab ich über 5000 programmzeilen fast nur in der listbox2 vielleicht weiß jemand wie ich den inhalt dieser procedur in eine schleife fassen kann... hab mal eben nur die procedur und dann noch das konplette projeckt mit kleinen einschrenkungen angehängt. (Aktuells FILE WEITER UNTEN) |
Re: Inhalt der Listenbox in einer Schleife fassen???
hallo zusammen
habe mir mal dein programm angeschaut!
Delphi-Quellcode:
sobald du auf eine reihe in deiner listbox klickst wird dir in meinem beispiel
procedure TForm1.ListBox1Click(Sender: TObject);
var i: integer; begin i := listbox1.ItemIndex; edit1.Text := listbox1.Items.Strings[i]; end; das was in dieser zeile steht in einem edit-feld angezeigt! meinst du nicht das du dies dann so umsetzen kannst und nicht mehr auf deine if abfragen, in diesem umfang, angewiesen bist! Ich denke das der vorteil ist, das du direkt weißt was ausgewählt wurde! |
Re: Inhalt der Listenbox in einer Schleife fassen???
Genauso kannst du tack1 bis track25 in folgendes zusammenfassen:
Delphi-Quellcode:
Aufgerufen wird das dann mit:
var
track : array[1..25] Of String; x : integer;
Delphi-Quellcode:
oder besser eben:
track[1] := 'mp3/cds_und_alben/01/01/01.mp3';
track[2] := 'mp3/cds_und_alben/01/01/02.mp3'; // usw.
Delphi-Quellcode:
Ps: Die 01/01/ kannst du ebenfalls auf diese Weise über listbox1.ItemIndex+1 bzw. listbox3.ItemIndex+1 automatisch einfügen.
for x := 1 to 25 do
track[x] := 'mp3/cds_und_alben/' + '01' + '/' + '01' + '/' + Format('%0:2.2d', [x]) + '.mp3'; |
Re: Inhalt der Listenbox in einer Schleife fassen???
thx.. werd das ganze mal genauer betrachten bin halt noch nen kleiner anfänger....
|
Re: Inhalt der Listenbox in einer Schleife fassen???
Ich würde Pfade nie nicht relativ angeben, sondern immer absolut. Es brauch sich nur mal das aktuelle Verzeichnis ändern und das war es dann gewesen.
Btw. Hab eich jetzt keine Lust 8202 Zeilen durch zu kucken. Hinzukommt, dass ich nochnicht mal verstehe, wie das ganze überhaupt funktionieren soll. Versuch das mal in zusammengöhrige Units aufzuteilen. Das Abspielen würde ich zum Beispiel auslagern und so programmieren, dass es vom Formular unabhängig ist. |
Re: Inhalt der Listenbox in einer Schleife fassen???
Zitat:
wenn ich die pfade die zu meinem programm gehören relativ dazu angebe dann habe ich doch den vorteil das ich das programm und die ordner hinpacken kann wo ich möchte und die pfade trotzdem stimmen! :gruebel: |
Re: Inhalt der Listenbox in einer Schleife fassen???
Stimmen schon, aber ändere mal bei einer Verknüpfung das Arbeitsverzeichnis oder benutze im Programm einen OpenDialog. Relative Pfade sind immer realtiv zum aktiellen Verzeichnis. Wird das im Laufe der Anwendung anders gestzt, war es das gewesen.
Besser:
Delphi-Quellcode:
Dann kannst du deine Anwendung auch hinpacken wohin du willst und der Pfad ist absolut.
dir := ExtractFilepath(ParamStr(0))+'\'+'mp3';
|
Re: Inhalt der Listenbox in einer Schleife fassen???
das ganze sll später halt auf eine CD mit den daten, da kann man den pfad dann eh nicht mehr ändern (eigentlich)
das ganze findet sich noch in aufbau, das momentan alles über ein Form geht liegt da ran, das ich erst mal möchte das alles so läuft dann nach kann man alles noch design und verfeinern ;) |
Re: Inhalt der Listenbox in einer Schleife fassen???
Das ist egal. Das aktuelle Verzeichnis hat nichts mit dem Verzeichnis auf dem Datenträger zu tun. das aktuelle Verzeichnis "merkt" sich Windows intern für dein Programm. Öffne mal mit Notpad eine Datei, die nicht im angezeigten Verzeichnis liegt. Dann mache das noch mal und du wirst festellen, dass dir das zu letzt geöffnete Verzeicnis angezeigt wird, das aktuelle eben. Wird jetzt aus irgendeinem Grund das aktuelle Verzeichnis deiner anwendung geändert, stimmen die relativen Pfade in deiner Anwendung nicht mehr, da sie relativ zum aktuellen Verzeichnis sind.
|
Re: Inhalt der Listenbox in einer Schleife fassen???
Übrigens:
Falls du vor hast deine MP3-Datenbank zu erweiteren oder mehrere CDs zu erstellen, dann würde ich dir eine andere vorgehensweise empfehlen. Anstatt feste Ordner anhand von Zahlen zu generieren, kannst du Delphi auch dazu bringen, den Ordner "mp3" nach tatsächlich vorhandenen Ordnern zu durchsuchen. Das geht z.B. mit FindFirst() und FindNext(), dazu findest du in der Online-Hilfe und in der DP über die Suche Informationen: ![]() |
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:00 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