Jest możliwość aby IdFTP wrzucał mi na serwer całe wyznaczone (z memo) foldery wraz z zawartością? Jak jest to prosze podać jak bo google nie znalazło :/

- Rejestracja:około 17 lat
- Ostatnio:około 3 lata
- Lokalizacja:Szczecin
- Postów:4191
Nie wiem czy dobrze kombinuje ale na http://www.festra.com/eng/snip04.htm masz przykład
funkcji która generuje listę plików w danym katalogu i wszystkich podkatalogach o podanej
masce (możesz podać '.' - dla wszystkich plików). A później zrobić coś w stylu kodu na
poniższej stronie (przewiń strone do dołu lub wcisnij End żeby zobaczyć odpowiedzi.):
http://www.experts-exchange.com/Programming/Languages/Pascal/Delphi/Q_22889148.html
tylko że tutaj jest dla plików .csv, ale można to przerobić. Mam nadzieję, że Cię nieco
naprowadziłem, sam póki co kombinuje z tą procką do wyszukiwania podkatalogów, bo przy
większej ilości katalogów trwa ona trochę długo i chćę prawidłowo pokazać jej postęp.
EDIT: dzięki poniższemu kodowi do StringListy trafia lista plików o masce . oraz katalogi,
które należy utworzyc - zakończone dwoma znakami kropki. Później tak jak pisze kamerok
po połączeniu z serwerem w pętli wysyłasz pliki z listy na FTP, tworząc odpowiednio katalogi.
function TMainForm.IsDirectory(SR : TSearchRec) : boolean;
begin
isDirectory := ((sr.Attr and faDirectory > 0)
and (sr.Name <> '..'));
end;
procedure TMainForm.FindFiles(FilesList: TStringList; StartDir, FileMask: string);
var
SR: TSearchRec;
DirList: TStringList;
IsFound: Boolean;
i: integer;
begin
if StartDir[length(StartDir)] <> '\' then
StartDir := StartDir + '\';
IsFound := (FindFirst(StartDir+FileMask, faAnyFile{-faDirectory}, SR) = 0);
while IsFound do begin
if IsDirectory(SR) then
else
FilesList.Add(StartDir + SR.Name);
IsFound := FindNext(SR) = 0;
end;
FindClose(SR);
DirList := TStringList.Create;
IsFound := FindFirst(StartDir+'*.*', faAnyFile, SR) = 0;
while IsFound do
begin
if ((SR.Attr and faDirectory) <> 0)
and (SR.Name[1] <> '.')
then
DirList.Add(StartDir + SR.Name);
IsFound := FindNext(SR) = 0;
end;
FindClose(SR);
for i := 0 to DirList.Count - 1 do
FindFiles(FilesList, DirList[i], FileMask);
DirList.Free;
end;
procedure TMainForm.Button1Click(Sender: TObject);
var
FilesList: TStringList;
begin
FilesList := TStringList.Create;
try
FindFiles(FilesList, DirLabel.Caption, '*.*');
FindFilesListBox.Items.Assign(FilesList);
finally
FilesList.Free;
end;
end;
Same nazwy katalogów do utworzenia można sprawdzić na przykład w taki sposób.
Poniższa procedura jest wyowłana po drukrotnym kliknięciu na ListBox z listą plików,
ale możesz ją użyć w pętli i ewentualnie zmodyfikować. Mam nadzieję że pomogłem.
procedure TMainForm.FindFilesListBoxDblClick(Sender: TObject);
var
DirName, ItemName : string;
begin
ItemName := ExtractFileName(FindFilesListBox.Items[FindFilesListBox.ItemIndex]);
if ItemName = '..' then
begin
DirName := ExtractFileDir(FindFilesListBox.Items[FindFilesListBox.ItemIndex]);
repeat
Delete(DirName, 1, Pos('\', DirName));
until
Pos('\', DirName) = 0;
ShowMessage(DirName);
end;
end;
Zarejestruj się i dołącz do największej społeczności programistów w Polsce.
Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.