Announcement

Collapse
No announcement yet.

Alle Ordner mit dem Namen 'temp\' auf einer Partition finden?

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Alle Ordner mit dem Namen 'temp\' auf einer Partition finden?

    Hallo!

    Ich suche eine Funktion, mit der ich z.B. alle Ordner auf der
    Partition: "C:" mit dem Namen: "temp" suchen kann.
    Mit Findfirst & Findnext komme ich wohl nicht ganz klar,
    da ich schon einige Beispiele aus dem Forum probiert habe.
    Diese Beispiele beziehen sich wohl immer auf alle Dateien, die
    in der Ordnerstruktur enthalten sind. Ich aber benötige nur die
    Pfade der Ordner mit bestimmten Namen.
    Ein kleiner Source, der mich voran bringt wäre super!

    Besten Dank im voraus.
    MfG
    Frank Meissner

  • #2
    Moin Frank,<br>
    <br>
    das müsste sich mit der "üblichen" Routine, die sämtliche Dateien und Ordner findet auch machen lassen.<br>
    (So eine sollte sich hier durchaus finden lassen)<br>
    Nur:<br>
    1. Dateien werden einfach nicht berücksichtigt.<br>
    2. Ein Pfad wandert nur dann in die Ergebnisliste, wenn der SearchRec.Name = 'temp' ist, wobei in so einem Falle natürlich trotzdem weitergesucht wird, da ja unterhalb dieses Ordners noch weitere Ordner Namens Temp vorhanden sein können.<br>
    <br>
    Nur mal so interessehalber:<br>
    Geht's Dir jetzt um Ordner die Temp heissen, oder um welche die die Funktion eines Ordners für temporäre Dateien haben. Mit letzterem meine ich die, die, z.B., in den Umgebungsvariablen TMP bzw. TEMP stehen?<br>
    <br>
    Ciao<br>
    Chri

    Comment


    • #3
      Hallo!

      Der kleine Beispielsource müsste helfen.
      Du benötigst zum Nachvollziehen:
      - eine Form
      - eine ListBox
      - einen CommandButton

      Gruss, Jochen

      <PRE>
      unit Unit1;

      interface

      uses
      Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
      StdCtrls;

      type
      TForm1 = class(TForm)
      Button1: TButton;
      ListBox1: TListBox;
      procedure Button1Click(Sender: TObject);
      private
      { Private-Deklarationen }
      function FindFolder(const Path, FolderName: String): String;
      public
      { Public-Deklarationen }
      end;

      var
      Form1 : TForm1;
      implementation

      {$R *.DFM}
      ////////////////////////////////////////////////////////////////////////////////
      function TForm1.FindFolder(const Path, FolderName: String): String;
      var
      SR : TSearchRec;
      sFolder: String;
      begin
      if FindFirst(Path + FolderName, faAnyFile, SR) = 0 then
      begin
      Result := Path + SR.Name;
      FindClose(SR);
      end
      else
      begin
      Result := '';
      if(FindFirst(Path + '*.*', faDirectory or faHidden or faSysFile, SR) = 0) then
      begin
      repeat
      if (SR.Attr and faDirectory <> 0)
      and (SR.Name <> '.')
      and (SR.Name <> '..') then begin
      // Den rechten, letzten Ordnernamen aus SR.Name extrahieren:
      // Kann man sicher eleganter machen, aber es passt schon...
      sFolder := Copy(SR.Name,
      Length(SR.Name) - (Length(Foldername)-1),
      Length(FolderName)-1) + '\';
      if (UpperCase(sFolder) = UpperCase(FolderName)) then
      ListBox1.Items.Add(Path + SR.Name);
      Result := FindFolder(Path + SR.Name + '\', FolderName);
      end; // SR.Attr
      until (Result <> '') or (FindNext(SR) <> 0); // Repeat
      FindClose(SR);
      end;
      end;
      end;
      ////////////////////////////////////////////////////////////////////////////////
      procedure TForm1.Button1Click(Sender: TObject);
      Var
      s: String;
      begin
      s := FindFolder('C:\', 'Temp\');
      end;
      ////////////////////////////////////////////////////////////////////////////////
      end.
      </PRE&gt

      Comment

      Working...
      X