Delphi-PRAXiS
Seite 1 von 4  1 23     Letzte »    

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Delphi Listbox mit Lieder füllen funktioniert nicht (https://www.delphipraxis.net/160508-listbox-mit-lieder-fuellen-funktioniert-nicht.html)

Metallicwar 16. Mai 2011 20:46

Listbox mit Lieder füllen funktioniert nicht
 
Hallo, ich bin gerade dabei einen MP3 Player zu programmieren.
Ich wähle in einem BrowseDialog einen Musikordner aus:
Delphi-Quellcode:
procedure TForm1.btnOpenFolderClick(Sender: TObject);
var mp3Folder : string;
begin
 mp3Folder := BrowseDialog('Wähle einen Ordner mit Liedern aus:', BIF_RETURNONLYFSDIRS);
 if mp3Folder = '' then Exit;

 txtFolder.Caption := mp3Folder;

 MP3ListeFuellen(mp3Folder, mp3List.Items);
end;
zum Schluss wird die function MP3ListeFuellen aufgerufen...
Delphi-Quellcode:
procedure MP3ListeFuellen(Folder: string; sl: TStrings);
var
  Rec : TSearchRec;
  mp3List: TListBox;
begin
 sl.Clear;
 if SysUtils.FindFirst(Folder + '*.mp3', faAnyFile, Rec) = 0 then
  try
    repeat
      sl.Add(Rec.Name);
    until SysUtils.FindNext(Rec) <> 0;
  finally
    SysUtils.FindClose(Rec);
  end;
end;
er durchläuft die Schleife, füllt mir aber nicht die ListBox ..
Kann mir bitte jemand helfen?

Luckie 16. Mai 2011 21:03

AW: Listbox mit Lieder füllen funktioniert nicht
 
Findet er denn Dateien?

Metallicwar 16. Mai 2011 21:09

AW: Listbox mit Lieder füllen funktioniert nicht
 
Hi Luckie,
ja im "Rec.Name" wird der Mp3 Name gespeichert ....
und geht alle Mp3 durch, die in dem Ordner sind.
bin schon eine ganze Weile dabei, eine Lösung zu finden ....

rollstuhlfahrer 16. Mai 2011 21:21

AW: Listbox mit Lieder füllen funktioniert nicht
 
Zitat:

Zitat von Metallicwar (Beitrag 1101232)
er durchläuft die Schleife, füllt mir aber nicht die ListBox ..
Kann mir bitte jemand helfen?

Das stimmt schon von der Logik her nicht. Entweder er durchläuft die Schleife und befüllt die Box oder er durchläuft die Schleife nicht.

Dann solltest du mal schauen, ob in deiner Ordner-Variablen der Pfad mit abschließendem '\' steht. Und in deinem Code fehlt noch ein FindClose.

Bernhard

PS: Das
Delphi-Quellcode:
SysUtils.
brauchst du eigentlich gar nicht, da ja Windows meist die erste Uses ist und SysUtils danach eingebunden wird und somit die Aufrufe aus der Windows-Unit überschreibt.

FrankJ28 17. Mai 2011 07:38

AW: Listbox mit Lieder füllen funktioniert nicht
 
Hallo,
dein Übergabeparameter sl ist nur "oneway" und liefert nicht zurück. Mach einmal ein var davor, dann sollte es klappen (var sl : TStrings)
Ciao
Frank

DeddyH 17. Mai 2011 07:39

AW: Listbox mit Lieder füllen funktioniert nicht
 
Nein, var ist nicht nötig, da es sich bei Objektinstanzen um Pointer handelt.

FrankJ28 17. Mai 2011 07:45

AW: Listbox mit Lieder füllen funktioniert nicht
 
Hallo Detlef,
mmmh, procedure MP3ListeFuellen ist für mich erst einmal nur eine Prozedur.
Ciao
Frank

DeddyH 17. Mai 2011 07:46

AW: Listbox mit Lieder füllen funktioniert nicht
 
Das hat aber nichts damit zu tun, dass Objektinstanzen als Argumente automatisch by Reference übergeben werden.

ConnorMcLeod 17. Mai 2011 07:48

AW: Listbox mit Lieder füllen funktioniert nicht
 
Zitat:

Zitat von Metallicwar (Beitrag 1101232)
Delphi-Quellcode:
procedure MP3ListeFuellen(Folder: string; sl: TStrings);
var
  Rec : TSearchRec;
  mp3List: TListBox;
begin
 sl.Clear;
 if SysUtils.FindFirst(Folder + '*.mp3', faAnyFile, Rec) = 0 then
  try
    repeat
      sl.Add(Rec.Name);
    until SysUtils.FindNext(Rec) <> 0;
  finally
    SysUtils.FindClose(Rec);
  end;
end;
er durchläuft die Schleife, füllt mir aber nicht die ListBox

Ahem. Du machst ja gar nix mit der ListBox, ausserdem ist die lokal definiert, ausserdem wird sie nicht erzeugt - so wird da nie was draus.

Wenn in den TStrings was drin steht, dann ausserhalb der Prozedur einer BESTEHENDEN TListBox zuweisen mit ListBox.Items.Assign();

DeddyH 17. Mai 2011 07:52

AW: Listbox mit Lieder füllen funktioniert nicht
 
Die Variable ist lediglich überflüssig, zugegriffen wird ja auf den Parameter.


Alle Zeitangaben in WEZ +1. Es ist jetzt 12:51 Uhr.
Seite 1 von 4  1 23     Letzte »    

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