![]() |
Delphi-Version: 2010
Brauche Hilfe bei Rekursion
Hallo,
ich möchte aus einem Ordner alle Bilder laden, inklusiv der Unterordner. Zum auswählen des Ordners folgender Code:
Delphi-Quellcode:
So nun werden die Bilder in eine Imageliste geladen:
procedure TMainForm.btnChangePathClick(Sender: TObject);
var Path: String; begin Path := PicturesPath; if SelectDirectory('Ordner mit Bildern für die Slideshow wählen:', '', Path) then CreateImageList(Path); end;
Delphi-Quellcode:
Problem:
procedure TMainForm.CreateImageList(const Path: String);
const SNoImage = 'The specified folder does not contain any supported image file.'; var FileList: TFileListBox; begin if Path <> PicturesPath then begin FileList := TFileListBox.Create(nil); try FileList.Visible := False; FileList.Parent := Self; FileList.Mask := GraphicFileMask(TGraphic); FileList.Directory := Path; if FileList.Items.Count > 0 then begin Pictures.Assign(FileList.Items); PicturesPath := Path; if (Length(Path) > 0) and (PicturesPath[Length(Path)] = '\') then Delete(PicturesPath, Length(Path), 1); StatusBar.Panels[2].Text := IntToStr(Pictures.Count) + ' Image(s)'; StatusBar.Panels[3].Text := 'Folder: ' + Path; LoadNextImage; end else MessageDlg(Path + #13#10 + SNoImage, mtWarning, [mbCancel], 0); finally FileList.Free; end; end; end; ich weiß nicht wie ich rekusriv programmiere. Also hier wird ein Ordner ausgewählt und nur aus diesem Ordner die Bilder geladen. Ich möchte aber, dass auch aus allen Unterordnern und den unterordnern der unterordner die Bilder geladen werden. Please help me :) MfG Lyan |
AW: Brauche Hilfe bei Rekursion
Schau mal ob dir diese Einträge aus der Codelib weiterhelfen:
![]() ![]() ![]() |
AW: Brauche Hilfe bei Rekursion
Delphi-Quellcode:
uses SysUtils;
procedure getFilesInDirectory(Directory: string; const Mask: string; WithSubDirs: Boolean; Files:TStrings); procedure ScanDir(const Directory: string); var SR: TSearchRec; begin if FindFirst(Directory + Mask, faAnyFile and not faDirectory, SR) = 0 then begin try repeat Files.Append(Directory + SR.Name); until FindNext(SR) <> 0; finally FindClose(SR); end; end; if WithSubDirs then begin if FindFirst(Directory + '*.*', faAnyFile, SR) = 0 then begin try repeat if ((SR.attr and faDirectory) = faDirectory) and (SR.Name <> '.') and (SR.Name <> '..') then begin ScanDir(Directory + SR.Name + '\'); end; until FindNext(SR) <> 0; finally FindClose(SR); end; end; end; end; begin if trim(Directory) <> '' then begin if Directory[Length(Directory)] <> '\' then Directory := Directory + '\'; Files.Clear; ScanDir(Directory); end; end; |
AW: Brauche Hilfe bei Rekursion
Zitat:
Ah wunderbar! hab mal den code von dir in google eingegeben und bin dann auf Delphi-Treff gestoßen. Bitte auch Quellen angeben - danke! ![]() |
AW: Brauche Hilfe bei Rekursion
Zitat:
|
AW: Brauche Hilfe bei Rekursion
Mit Verlaub: Der Code ist so banal, das man auch ohne Quellenangabe hinkommen dürfte.
|
AW: Brauche Hilfe bei Rekursion
Zitat:
Gibt's da vielleicht einenCopyrightjunkie ? Gruß K-H |
AW: Brauche Hilfe bei Rekursion
[OT]
Delphi-Quellcode:
Leider weiß ich die Quelle nicht mehr :stupid:. [/OT]
procedure TForm1.Button1Click(Sender: TObject);
begin ShowMessage('Hallo Welt'); end; Man kann es aber auch wirklich übertreiben. |
AW: Brauche Hilfe bei Rekursion
@DeddyH
![]() |
AW: Brauche Hilfe bei Rekursion
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 15:28 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