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
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
Waar ga je de mist in? Het aanmaken van de map, het switchen naar de map, ...?
Marcel
Met de volgende code vul ik een stringlist.
Nu wordt netjes de stringlist gevuld, inclusief een eventuele subdirectory.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;
Maar wat als die subdirectory ook nog subdirectory's heeft?
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:
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 if (Res.Attr and faDirectory) = faDirectory) then begin if (Res.Name <> '.') and (Res.Name <> '..') then //'Speciale' mappen overslaan. FindAll(IncludeTrailingPathDelimiter(Path) + Res.Name); end else // Alleen bestanden toevoegen? Anders de else weghalen List.Add(Res.Name); EOFound:= FindNext(Res) <> 0; end; FindClose(Res) ; end;
Of je gebruikt NLDFileSearch, al vermoed ik dat die inmiddels al wel aangedragen zal zijn.
[edit]
Inderdaad
|
V
1+1=b
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
Hebben jullie toevallig een voorbeeldje met NLDFileSearch?
Die link van Marcel staat er toch vol mee? Bovenste post in het lijstje is de officiële aankondiging inclusief voorbeelden.
1+1=b
Nou ik heb het volgende:
Hoe kan ik nu de gevonden subdirectories ook uitlezen?Code:NLDGetFiles('c:\',Listbox1.Items,[]);
Welke versie van NLDFileSearch gebruik je? Bij mijn versie staat in de uitleg:
delphi Code:
{ :$ Provides various search options. :: soRecursive Search the subdirectories as well. /n :: soNoDirs Return files only. /n :: soDirsOnly Return directories only. /n :: This flag is ignored if soNoDirs is set. /n :: soExcludePath Return the filename only. /n :: soRelativePaths Return the filename, including the relative /n :: path, excluding the leading path separator. /n :: This flag is ignored if soExcludePaths is set. /n :: soUseMaskForDirs Apply the mask to directories as well as files. /n :: soProcessMessages Call Application.ProcessMessages in each iteration. /n } TFSOption = (soRecursive, soNoDirs, soDirsOnly, soExcludePath, soRelativePaths, soUseMaskForDirs, soProcessMessages);
Dus een lege AOptions doet geen recursieve actie.
Marcel
Bij mij staat ie ook al in de post waar ik naar refereerde, vlak onder 'simpele voorbeeldjes'
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?Zoekt alle mp3 bestanden in d:\media\audioCode:NLDGetFiles('d:\media\audio\*.mp3', ListBox1.Items, [soRecursive, soNoDirs]);
1+1=b
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
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);
Beetje flauw, ik ben de moeilijkste niet wat betreft zelf uitzoeken. Ik kom deze keer gewoon moeilijk door het probleem heen.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?
There are currently 1 users browsing this thread. (0 members and 1 guests)
Bookmarks