Autor Beitrag
areuter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 75



BeitragVerfasst: So 20.03.05 14:22 
hallo.
irgendwie komme ich hier mit diesen ganzen threads und der delphi-hilfe nicht zurecht.
kann mir bitte jemand helfen.
wie kann ich ein verzeichnis auslesen und die dateien finden? ist das wirklich so schwer? ich möchte eigentlich nur den namen einer datei (*.db) aus einem verzeichnis (c:\test) herausfinden und diesen als z.b. label1.caption anzeigen lassen. muss ich irgendetwas in der uses deklarieren?
vielen dank im voraus für die hilfe!
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
procedure TForm1.Button1Click(Sender: TObject);
var Srec: TSearchRec;
    found: integer;
begin
found:= findfirst(???); // was muss hier rein und was bedeutet dies?
while found=0 do
begin
label1.caption:= // ???   
found:=findnext(Srec); // was hat Srec zu bedeuten (wert?)
  end;
findclose(Srec);
Diabele$
ontopic starontopic starontopic starontopic starontopic starofftopic starofftopic starofftopic star
Beiträge: 53



BeitragVerfasst: So 20.03.05 14:26 
Hatte ich auch gerade nachgeschaut:

www.delphi-forum.de/viewtopic.php?t=1107

Bloß funzt das mit den Unterverzeichnissen nicht so richtig:
Ich gebe bei aWithSub true ein, aber er listet mir trotzdem nur die Dateien aus dem Standardpfad (also aPath) auf, obwohl ich weiß, dass in den Unterverzeichnissen auch Dateien liegen, die dem Filter entsprechen. :(

Oder liegt das an mir :?: :?: :?:


Zuletzt bearbeitet von Diabele$ am So 20.03.05 14:32, insgesamt 1-mal bearbeitet
mirage228
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 338

Win 7 Prof.
Delphi 2005 Prof., Delphi 2010 Prof.
BeitragVerfasst: So 20.03.05 14:32 
Hi,

versuchs mal mit dem Code, der funktioniert auf jeden Fall:

ausblenden 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:
procedure FileList(const APath, AExt: string; ARecurse: Boolean; 
  AList: TStrings); 
var 
  F    : TSearchRec; 
  Path : string
begin 
  Path := IncludeTrailingPathDelimiter(APath); // nur für Delphi 4 und höher! 
  if (ARecurse) and 
    (FindFirst(Path + '*.*', faAnyFile, F) = 0then 
  try 
    repeat 
      if (F.Name <> '.'and (F.Name <> '..'and 
        ((F.Attr and faDirectory) = faDirectory) then 
        FileList(Path + F.Name, AExt, ARecurse, AList); 
    until FindNext(F) <> 0
  finally 
    FindClose(F); 
  end
  if FindFirst(Path + AExt, faAnyFile, F) = 0 then 
  try 
    repeat 
      if (F.Name <> '.'and (F.Name <> '..'and 
        ((F.Attr and faDirectory) <> faDirectory) then 
        AList.Add(Path + F.Name); 
    until FindNext(F) <> 0
  finally 
    FindClose(F); 
  end
end;


Bei dem Code aus Deinem Link scheint es, als ob nur in Unterverzeichnissen weitergesucht, falls im ersten Verzeichnis etwas gefunden wurde. Habe mir den Code aber nicht näher angeschaut...

mfG
mirage228

_________________
May the source be with you, stranger.
areuter Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 75



BeitragVerfasst: So 20.03.05 14:34 
vielen dank für die super schnelle antwort!
werde es gleich mal ausprobieren.
gruss und noch einen schönen sonntag
arne
Diabele$
ontopic starontopic starontopic starontopic starontopic starofftopic starofftopic starofftopic star
Beiträge: 53



BeitragVerfasst: So 20.03.05 14:44 
Ja, bei dem Code funktioniert's perfekt :wink:
areuter Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 75



BeitragVerfasst: So 20.03.05 15:05 
für alle, die eine kleine einfach routine haben möchten:
sucht nach einer .exe und zeigt diese als label an.
grüsse arne
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
procedure TForm1.Button1Click(Sender: TObject);
Var
  FindRec: tSearchRec;
Begin
  If FindFirst ('c:\verzeichnis\' + '*.exe', faAnyFile, FindRec) = 0 Then
    Repeat
      If (FindRec.Name <> '.'and (FindRec.Name <> '..'Then
      label1.caption:=FindRec.Name;
    Until FindNext (FindRec) <> 0;

  FindClose (FindRec);

end;
end.
mimi
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 3458

Ubuntu, Win XP
Lazarus
BeitragVerfasst: So 20.03.05 16:15 
ich habe herrausgefunden das es besser ist:
FindFirst ('c:\verzeichnis\' + '*.exe'+#0 zu machen, warum weiß ich nicht, aber so funktioniert es aufjedenfall...

_________________
MFG
Michael Springwald, "kann kein englisch...."