|
| Hent Mapper Fra : Henning Madsen |
Dato : 08-01-02 20:31 |
|
Er der en venlig sjæl som kan give mig en løsning på hvordan man
henter navnene på mapper.
Jeg har lavet et program der henter EXE filer i mappen 'Eksempler'.
I mappen ligger også flere mapper med Delphi programmer, det
Er disse programmers EXE filer der manuelt er flyttet ud i
mappen 'eksempler', men det var jo meget smartere at programmet
selv åbnede mappen og hentede EXE filen.
Det nuværende program ser således ud og kan nok bedre vise hvad det er jeg
mener.
Øverste if linie er hvordan jeg troede det ku løses, men ak det øvrige
virker ok.
procedure TForm1.Button1Click(Sender: TObject);
Var
sr : TSearchRec; // indeholder resultatet fra findfirst og findnext
S : String;
T : Integer;
begin
S := 'ListBox';
file://If FindFirst('D:\Egne
Programmer\Komponenter\Eksempler\',faDirectory,sr) = 0 then Begin
If FindFirst('D:\Egne
Programmer\Komponenter\Eksempler\*.EXE',faAnyFile,sr) = 0 then Begin
If Pos(UPPERCASE(S),UPPERCASE(sr.Name)) = 1 Then
ListBox1.Items.Add(sr.Name);
End;
While FindNext(sr) = 0 do Begin
If Pos(UPPERCASE(S),UPPERCASE(sr.Name)) = 1 Then ListBox1.Items.Add
(sr.Name);
End;
På forhånd tak for et eventuel svar fra en nybegynder.
Med venlig hilsen
Henning Madsen.
| |
René Jensen (08-01-2002)
| Kommentar Fra : René Jensen |
Dato : 08-01-02 22:35 |
|
Henning Madsen wrote:
> Jeg har lavet et program der henter EXE filer i mappen 'Eksempler'.
> I mappen ligger også flere mapper med Delphi programmer, det
> Er disse programmers EXE filer der manuelt er flyttet ud i
> mappen 'eksempler', men det var jo meget smartere at programmet
> selv åbnede mappen og hentede EXE filen.
Du kan bruge nedenstående kode til at finde filer fra en bestem mappe og
dens undermapper.
<start>
procedure FindFiles(Path: string; Filter: string; var FileList:
TStringList);
var
SearchRec: TSearchRec;
begin
if Path[Length(Path)] <> '\' then
Path := Path + '\';
if FindFirst(Path + '*.*', faAnyFile, SearchRec) = 0 then
begin
if SearchRec.Attr and faDirectory = faDirectory then
begin
if (SearchRec.Name <> '.') and (SearchRec.Name <> '..') then
FindFiles(Path + SearchRec.Name, Filter, FileList);
end
else
if UpperCase(ExtractFileExt(SearchRec.Name)) =
UpperCase(ExtractFileExt(Filter)) then
FileList.Add(Path + SearchRec.Name);
while FindNext(SearchRec) = 0 do
if SearchRec.Attr and faDirectory = faDirectory then
begin
if (SearchRec.Name <> '.') and (SearchRec.Name <> '..') then
FindFiles(Path + SearchRec.Name, Filter, FileList);
end
else
if UpperCase(ExtractFileExt(SearchRec.Name)) =
UpperCase(ExtractFileExt(Filter)) then
FileList.Add(Path + SearchRec.Name);
end;
end;
<end>
Du kalder proceduren 7med 3 parametre:
1. Path: Enten fuld eller relativ sti navn til den mappe, du ønsker at
lede efter filer.
2. Filter: Angiv *.* for at få alle filer, og i dit tilfælde brug *.exe.
3. FileList: En variabel af type TStringList. Husk at oprette og
initiliasere den før du kalder proceduren, og efter du har kaldt
proceduren, vil din variabel indeholde alle filer, som matcher dit
filter.
--
Med venlig hilsen,
René Jensen
Once a upon a time a wise man said to me:
"I consider Windows like I consider bad weather ... I accept it and hope
for something better"
| |
|
|