AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Brauche Hilfe bei Rekursion

Ein Thema von Lyan · begonnen am 3. Jan 2012 · letzter Beitrag vom 4. Jan 2012
Antwort Antwort
Seite 1 von 2  1 2      
Lyan

Registriert seit: 5. Aug 2011
188 Beiträge
 
#1

Brauche Hilfe bei Rekursion

  Alt 3. Jan 2012, 21:42
Delphi-Version: 2010
Hallo,

ich möchte aus einem Ordner alle Bilder laden, inklusiv der Unterordner.

Zum auswählen des Ordners folgender Code:

Delphi-Quellcode:
    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;
So nun werden die Bilder in eine Imageliste geladen:

Delphi-Quellcode:
    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;
Problem:

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
  Mit Zitat antworten Zitat
Angel4585

Registriert seit: 4. Okt 2005
Ort: i.d.N.v. Freiburg im Breisgau
2.199 Beiträge
 
Delphi 2010 Professional
 
#2

AW: Brauche Hilfe bei Rekursion

  Alt 3. Jan 2012, 22:48
Schau mal ob dir diese Einträge aus der Codelib weiterhelfen:

http://www.delphipraxis.net/2235-ver...rchsuchen.html
http://www.delphipraxis.net/39470-ve...rchsuchen.html
http://www.delphipraxis.net/108297-v...re-masken.html
Martin Weber
Ich bin ein Rüsselmops
  Mit Zitat antworten Zitat
omata

Registriert seit: 26. Aug 2004
Ort: Nebel auf Amrum
3.154 Beiträge
 
Delphi 7 Enterprise
 
#3

AW: Brauche Hilfe bei Rekursion

  Alt 3. Jan 2012, 22:54
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;
  Mit Zitat antworten Zitat
Lyan

Registriert seit: 5. Aug 2011
188 Beiträge
 
#4

AW: Brauche Hilfe bei Rekursion

  Alt 3. Jan 2012, 23:34
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;

Ah wunderbar! hab mal den code von dir in google eingegeben und bin dann auf Delphi-Treff gestoßen.

Bitte auch Quellen angeben - danke!

http://www.delphi-treff.de/tipps/dat...ateien-suchen/
  Mit Zitat antworten Zitat
omata

Registriert seit: 26. Aug 2004
Ort: Nebel auf Amrum
3.154 Beiträge
 
Delphi 7 Enterprise
 
#5

AW: Brauche Hilfe bei Rekursion

  Alt 3. Jan 2012, 23:47
Bitte auch Quellen angeben - danke!
Ich hatte den Quellcode aus einer meiner Anwendungen herauskopiert, ich wusste nicht mehr, wo ich den her hatte. Ich hasste Ausrufezeichen. Es kommt nicht nochmal vor, dass ich dir helfe.
  Mit Zitat antworten Zitat
Furtbichler
(Gast)

n/a Beiträge
 
#6

AW: Brauche Hilfe bei Rekursion

  Alt 4. Jan 2012, 08:03
Mit Verlaub: Der Code ist so banal, das man auch ohne Quellenangabe hinkommen dürfte.
  Mit Zitat antworten Zitat
Benutzerbild von p80286
p80286

Registriert seit: 28. Apr 2008
Ort: Stolberg (Rhl)
6.659 Beiträge
 
FreePascal / Lazarus
 
#7

AW: Brauche Hilfe bei Rekursion

  Alt 4. Jan 2012, 08:16
Bitte auch Quellen angeben - danke!
Ich hatte den Quellcode aus einer meiner Anwendungen herauskopiert, ich wusste nicht mehr, wo ich den her hatte.
Der Code ist so alt, daß die ursprüngliche Quelle in der grauen Vorzeit verschwunden ist. Ich kenn ihn aus einem TP-Lehrbuch. Allerdings ohne try finally.

Gibt's da vielleicht einenCopyrightjunkie ?

Gruß
K-H
Programme gehorchen nicht Deinen Absichten sondern Deinen Anweisungen
R.E.D retired error detector
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.625 Beiträge
 
Delphi 12 Athens
 
#8

AW: Brauche Hilfe bei Rekursion

  Alt 4. Jan 2012, 08:19
[OT]
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
begin
  ShowMessage('Hallo Welt');
end;
Leider weiß ich die Quelle nicht mehr . [/OT]

Man kann es aber auch wirklich übertreiben.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Benutzerbild von Bummi
Bummi

Registriert seit: 15. Jun 2010
Ort: Augsburg Bayern Süddeutschland
3.470 Beiträge
 
Delphi XE3 Enterprise
 
#9

AW: Brauche Hilfe bei Rekursion

  Alt 4. Jan 2012, 08:24
@DeddyH http://en.wikipedia.org/wiki/Hello_world_program
Thomas Wassermann H₂♂
Das Problem steckt meistens zwischen den Ohren
DRY DRY KISS
H₂ (wenn bei meinen Snipplets nichts anderes angegeben ist Lizenz: WTFPL)
  Mit Zitat antworten Zitat
Furtbichler
(Gast)

n/a Beiträge
 
#10

AW: Brauche Hilfe bei Rekursion

  Alt 4. Jan 2012, 08:25
Leider weiß ich die Quelle nicht mehr
Ach nein?

So kann man sich auch mit fremden Federn schmücken.

Ich möchte hiermit den Code "If" zum Patent anmelden!
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 22:15 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