Results 1 to 15 of 15

Thread: Subdirectories uploaden

  1. #1

    Subdirectories uploaden

    Hallo allemaal,

    Heeft er iemand code om een directory te doorlopen en deze te uploaden met
    IdFTP?

    Dit lukt me tot nu toe redelijk maar zodra er subdirectories zijn dan raak ik de draad kwijt.

    Groeten Sander

  2. #2
    Waar ga je de mist in? Het aanmaken van de map, het switchen naar de map, ...?
    Marcel

  3. #3
    Met de volgende code vul ik een stringlist.

    Code:
    procedure FindAll (const Path: String; Attr: Integer; List: TStrings) ;
    var Res: TSearchRec;
         EOFound: Boolean;
    begin
       EOFound:= False;
       if FindFirst(Path, Attr, Res) < 0 then exit
       else
         while not EOFound do begin
           List.Add(Res.Name) ;
           EOFound:= FindNext(Res) <> 0;
         end;
       FindClose(Res) ;
    end;
    Nu wordt netjes de stringlist gevuld, inclusief een eventuele subdirectory.
    Maar wat als die subdirectory ook nog subdirectory's heeft?

  4. #4
    Dan moet je dezelfde routine aanroepen voor die directory. Daarvoor kun je gewoon dezelfde routine gebruiken, alleen moet breid je die een beetje uit:

    Delphi Code:
    1. procedure FindAll (const Path: String; Attr: Integer; List: TStrings) ;
    2. var Res: TSearchRec;
    3.      EOFound: Boolean;
    4. begin
    5.    EOFound:= False;
    6.    if FindFirst(Path, Attr, Res) < 0 then exit
    7.    else
    8.      while not EOFound do
    9.      begin
    10.  
    11.        if (Res.Attr and faDirectory) = faDirectory) then
    12.        begin
    13.          if (Res.Name <> '.') and (Res.Name <> '..') then //'Speciale' mappen overslaan.
    14.            FindAll(IncludeTrailingPathDelimiter(Path) + Res.Name);
    15.        end
    16.        else // Alleen bestanden toevoegen? Anders de else weghalen
    17.          List.Add(Res.Name);
    18.  
    19.        EOFound:= FindNext(Res) <> 0;
    20.      end;
    21.    FindClose(Res) ;
    22. end;

    Of je gebruikt NLDFileSearch, al vermoed ik dat die inmiddels al wel aangedragen zal zijn.

    [edit]
    Inderdaad
    |
    V
    1+1=b

  5. #5
    Ah, we zijn nog niet aan het FTP'en. Om oneindig subdirectories aan te kunnen zul je je routine op moeten splitsen in een routine die een directory als parameter heeft, die routine roep je vervolgens recursief aan.

    Of je maakt het je makkelijk en gebruikt NLDFileSearch (dat doe ik ook in zo'n geval).
    Marcel

  6. #6
    Hebben jullie toevallig een voorbeeldje met NLDFileSearch?

  7. #7
    Die link van Marcel staat er toch vol mee? Bovenste post in het lijstje is de officiële aankondiging inclusief voorbeelden.
    1+1=b

  8. #8
    Nou ik heb het volgende:

    Code:
    NLDGetFiles('c:\',Listbox1.Items,[]);
    Hoe kan ik nu de gevonden subdirectories ook uitlezen?

  9. #9
    Welke versie van NLDFileSearch gebruik je? Bij mijn versie staat in de uitleg:

    delphi Code:
    1. {
    2.     :$ Provides various search options.
    3.  
    4.     :: soRecursive        Search the subdirectories as well. /n
    5.     :: soNoDirs           Return files only. /n
    6.     :: soDirsOnly         Return directories only. /n
    7.     ::                    This flag is ignored if soNoDirs is set. /n
    8.     :: soExcludePath      Return the filename only. /n
    9.     :: soRelativePaths    Return the filename, including the relative /n
    10.     ::                    path, excluding the leading path separator. /n
    11.     ::                    This flag is ignored if soExcludePaths is set. /n
    12.     :: soUseMaskForDirs   Apply the mask to directories as well as files. /n
    13.     :: soProcessMessages  Call Application.ProcessMessages in each iteration. /n
    14.   }
    15.   TFSOption = (soRecursive, soNoDirs, soDirsOnly, soExcludePath,
    16.                soRelativePaths, soUseMaskForDirs, soProcessMessages);

    Dus een lege AOptions doet geen recursieve actie.
    Marcel

  10. #10
    Bij mij staat ie ook al in de post waar ik naar refereerde, vlak onder 'simpele voorbeeldjes'
    Code:
    NLDGetFiles('d:\media\audio\*.mp3', ListBox1.Items, [soRecursive, soNoDirs]);
    Zoekt alle mp3 bestanden in d:\media\audio
    Maar, met alle respect natuurlijk, hoe verwacht je je programma werkend te kunnen maken, als je je niet door een twintigtal regels Nederlandstalige uitleg kunt worstelen?
    1+1=b

  11. #11
    Fornicatorus Formicidae VideoRipper's Avatar
    Join Date
    Mar 2005
    Location
    Vicus Saltus Orientalem
    Posts
    5,708
    Quote Originally Posted by GolezTrol View Post
    een twintigtal regels Nederlandstalige uitleg kunt worstelen?
    Nederlandstalig?
    TMemoryLeak.Create(Nil);

  12. #12
    Ja, jeweetwel, in het Nederlands opgesteld.
    http://www.encyclo.nl/zoek.php?woord=nederlandstalig

    Ik heb het over de post waar ik al eerder naar verwees. Ik kan me vergissen, maar het komt toch redelijk in de buurt van Nederlands wat daar staat.
    1+1=b

  13. #13
    Fornicatorus Formicidae VideoRipper's Avatar
    Join Date
    Mar 2005
    Location
    Vicus Saltus Orientalem
    Posts
    5,708
    Het lijkt eerder Swahili als je het mij vraagt...

    Hahahaha, ik had de link wel even gevolgd, maar kwam op een draadje met iets meer
    dan 20 Nederlandse regels, dus dacht dat je die niet bedoelde...
    Toen keek ik naar het commentaar in Marcel's post... maar dat was Engels

    Indien gewenst kan ik mijn huidige titel (links) aanpassen in M**reN**ker oid
    TMemoryLeak.Create(Nil);

  14. #14
    Maar, met alle respect natuurlijk, hoe verwacht je je programma werkend te kunnen maken, als je je niet door een twintigtal regels Nederlandstalige uitleg kunt worstelen?
    Beetje flauw, ik ben de moeilijkste niet wat betreft zelf uitzoeken. Ik kom deze keer gewoon moeilijk door het probleem heen.

  15. #15
    Je hebt gelijk, sorry.
    1+1=b

Thread Information

Users Browsing this Thread

There are currently 1 users browsing this thread. (0 members and 1 guests)

Bookmarks

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •