Avatar billede tknudsen Nybegynder
21. december 1999 - 15:53 Der er 6 kommentarer og
1 løsning

findfile komponent ?

Findes der en kompnent som finder en angiven fil fra et angivent startsted ?

f.eks.:

søging:
startsted : c:\program files
filnavn : win32.hlp

resultat:
F:\Program Files\Borland\Borland Shared\MSHelp\win32.hlp
Avatar billede lrj Nybegynder
21. december 1999 - 16:36 #1
Og hvad hvis filen findes mere end 1 sted?
Avatar billede delphi Nybegynder
21. december 1999 - 16:38 #2
Skal resultatet være første fundne fil eller en list af alle matchende filer?


Hvis du istedet for en komponent kan bruge en funktion, så kan du i spørgsmålet http://www.eksperten.dk/spm.asp?id=7369, som egentligt omhandler max tilladt størrelse af et directory, finde en algoritme, der omhandler det meste af det du efterspørger.

Algoritmen må stort set være noget i retning af:  (Frit fra leveren - uafprøvet).

Function FindFile(StartPath, SearchName : String) : String;  // evt. TStringList
Var
  sr  : TSearchRec;
  Temp : String;
Begin
  Result := '';  //  Tom string - www.eksperten.dk kan ikke vise to '-tegn rigtigt!

  If FindFirst(Directory+'\*.*', faAnyFile, sr) = 0 then
    Repeat
      // Fil eller Dir med rigtigt navn fundet?
      If sr.Name = SearchName Then
        Begin
          Result := sr.Name;  // Hvis en liste af fundne filer ønskes, så brug istedet
          Break;              // SomeStringList.Add(sr.Name); og drop Break;
        End;

      // Er der fundet et dir (men ikke '.' og '..') så lav et rekursivt kald.
      If (Copy(sr.Name, 1, 1)<>'.') And (sr.Attr And faDirectory = 0) Then
        Begin
          Temp := FindFile(sr.Name, SearcName);
          If Temp<>'' Then    // Tom string igen
            Begin
              Result := Temp; // Igen: Du kan istedet add'e den fundne værdi
              Break;        // til en stringlist.
            End;
        End; 
    Until FindNext(sr)<>0;

  FindClose(sr);
End;
 

NiP/Delphi
Avatar billede tknudsen Nybegynder
21. december 1999 - 16:39 #3
hmm - evt en listning af SAMTLIGE matches !?

eksemplet er lidt sygt idet der er fundet en fil på f: efter der er søgt på c: - sorry
Avatar billede delphi Nybegynder
21. december 1999 - 16:41 #4
Jegfinder det iøvrigt komisk at din søgning har som startsted: c:\program files
men at du som resultat vil acceptere: F:\Program Files....

Hvad er din grænseværdi?  Hvis filen ikke findes på nogle lokale drev, så skal den måske begynde at finde filen på nettet, istakken af CD'er og disketter, på ungernes playstation eller hur?

NiP

Avatar billede tknudsen Nybegynder
21. december 1999 - 16:43 #5
det er surt med overlappende kommentarer :)
Avatar billede delphi Nybegynder
21. december 1999 - 16:49 #6
Tjaa - jeg gider ikke mere - jeg vil hjem!

NiP
Avatar billede tknudsen Nybegynder
22. december 1999 - 12:50 #7
delphi >> jeg har brugt dele af din løsning som er god - thnx
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester