Entwickler-Ecke

Dateizugriff - Nach einem Ordner suchen


Olex - Mo 18.06.07 10:07
Titel: Nach einem Ordner suchen
Hi ich würde gerne nkleines tool basteln im welchen ich nach ordnern suchen kann. SAgen wir ma an ich hab n text feld da gebe ich den Ordnernamen ein und dast ool sucht nach diesem verzeichniss und wenn es gefunden wird in ne listbox schreiben.

Ich weis aber nicht wie ich anfangen soll ich habe im forum schon was gefunden komme damit aber nicht klar. zB

http://www.delphi-forum.de/viewtopic.php?t=59057&highlight=ordner+suchen

das hab ich hier so zusammen geschustert


Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
54:
55:
56:
57:
58:
59:
60:
61:
62:
63:
64:
65:
unit Unit1;

interface

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

type
  TForm1 = class(TForm)
    Edit1: TEdit;
    Button1: TButton;
    procedure Button1Click(Sender: TObject);


  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}
procedure SucheOrdner(OrdnerName, SuchPfad: String;  
  var ErgebnisListe: TStringList);
var
  SR: TSearchRec;
begin
  if  (Length(OrdnerName) > 0)
  and (AnsiLastChar(OrdnerName) <> '\'then
    OrdnerName := OrdnerName + '\';
  if FindFirst(SuchPfad + '*.*', faAnyFile, SR) = 0 then begin
    repeat
      if  (SR.Name <> '.')
      and (SR.Name <> '..'then begin
        if CompareText(SR.Name, OrdnerName) = 0 then
          ErgebnisListe.Add(SuchPfad + SR.Name);
        if (SR.Attr AND faDirectory) > 0 then
          SucheOrdner(OrdnerName, SuchPfad + SR.Name, ErgebnisListe);  
      end;  
    until FindNext(SR) <> 0;  
  end;  
  FindClose(SR);
end;

procedure TForm1.Button1Click(Sender: TObject);
var dieliste:TStringList;
 var ErgebnisListe:TStringList;
var i:integer;
begin

ErgebnisListe := TStringList.Create;
SucheOrdner(Edit1.Text,'c:\',dieliste);

For i:=0 to ErgebnisListe.Count-1 do
 ShowMessage(ErgebnisListe[i]);


end;

end.


kann mir da einer helfen


ZeitGeist87 - Mo 18.06.07 10:58
Titel: Re: Nach einem Ordner suchen
user profile iconOlex hat folgendes geschrieben:
Hi ich würde gerne nkleines tool basteln im welchen ich nach ordnern suchen kann. SAgen wir ma an ich hab n text feld da gebe ich den Ordnernamen ein und dast ool sucht nach diesem verzeichniss und wenn es gefunden wird in ne listbox schreiben.

Ich weis aber nicht wie ich anfangen soll ich habe im forum schon was gefunden komme damit aber nicht klar. zB

http://www.delphi-forum.de/viewtopic.php?t=59057&highlight=ordner+suchen

das hab ich hier so zusammen geschustert


Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
54:
55:
56:
57:
58:
59:
60:
61:
62:
63:
64:
65:
unit Unit1;

interface

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

type
  TForm1 = class(TForm)
    Edit1: TEdit;
    Button1: TButton;
    procedure Button1Click(Sender: TObject);


  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}
procedure SucheOrdner(OrdnerName, SuchPfad: String;  
  var ErgebnisListe: TStringList);
var
  SR: TSearchRec;
begin
  if  (Length(OrdnerName) > 0)
  and (AnsiLastChar(OrdnerName) <> '\'then
    OrdnerName := OrdnerName + '\';
  if FindFirst(SuchPfad + '*.*',faAnyFile, SR) = 0 then begin //F1 drücken :) faDirectory gibt es auch :)
    repeat
      if  (SR.Name <> '.')
      and (SR.Name <> '..'then begin
        if CompareText(SR.Name, OrdnerName) = 0 then
          ErgebnisListe.Add(SuchPfad + SR.Name);
        if (SR.Attr AND faDirectory) > 0 then
          SucheOrdner(OrdnerName, SuchPfad + SR.Name, ErgebnisListe);  
      end;  
    until FindNext(SR) <> 0;  
  end;  
  FindClose(SR);
end;

procedure TForm1.Button1Click(Sender: TObject);
var dieliste:TStringList;
 var ErgebnisListe:TStringList;
var i:integer;
begin

ErgebnisListe := TStringList.Create;
SucheOrdner(Edit1.Text,'c:\',dieliste);

For i:=0 to ErgebnisListe.Count-1 do
 ShowMessage(ErgebnisListe[i]);


end;

end.


kann mir da einer helfen