Autor Beitrag
stOrM!
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 22



BeitragVerfasst: Fr 16.06.06 10:20 
Hallo,
kennt sich eventuell jemand mit ICS aus? Ich suche schon ewig nach einer Möglichkeit, einen kompletten Ordner hoch/herunterzuladen...
Bisher ohne erfolg, Demo's gibt es ja genug nur leider immer wieder ohne die obige Möglichkeit.

Ich denke mal das ich eine art der recursion brauche, nur mir ist nicht klar wie man das realisiert, ich kapiers nicht wirklich...

Ich hab nur einen Code-Schnippsel zu Indy gefunden bisher, leider nur zum hochladen eines Ordners, nur Indy benutz ich nicht, hab von so vielen Nachteilen gehört, das ich die Finger davon gelassen habe und zu ICS gewechselt bin.

Wen es interessiert:
ausblenden volle Höhe Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
procedure TForm1.TransferDirectory(ADir: String; ASubDirs: Boolean = True);
var
  Dir: String;
  iIndex : Integer;
  SearchRec : TSearchRec;
begin
  Dir := IncludeTrailingPathDelimiter(ADir);
  FillChar(SearchRec,SizeOf(SearchRec),0);
  if FindFirst(Dir + '*.*', faAnyFile, SearchRec) = 0 then
  begin
    try
      repeat
        if (SearchRec.Name <> '.') and (SearchRec.Name <> '..') then
        begin
          if ((SearchRec.Attr and faAnyFile > 0) or (SearchRec.Attr = 0)) then
          begin
            if ASubDirs then
            begin
              if SearchRec.Attr and faDirectory <> 0 then
              begin
                // This is a Directory, create it on the FTP Server
                // and recurse to transfer all files.
                IdFTP1.MakeDir(SearchRec.Name);
                IdFTP1.ChangeDir(SearchRec.Name);
                TransferDirectory(Dir + SearchRec.Name);
              end
              else
                IdFTP1.Put(Dir + SearchRec.Name, SearchRec.Name);
            end
            else
              IdFTP1.Put(Dir + SearchRec.Name, SearchRec.Name);
          end;
        end;
      until FindNext(SearchRec) <> 0;
    finally
      FindClose(SearchRec);
    end;
  end;
end;

Danke!
s!
Narses
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Administrator
Beiträge: 10185
Erhaltene Danke: 1261

W11x64
TP3 .. D7pro .. D10.2CE
BeitragVerfasst: Fr 16.06.06 11:37 
Moin!

Dann lass dir doch mit Luckies DriveTools eine Dateiliste erstellen und geh die durch. ;)

cu
Narses

_________________
There are 10 types of people - those who understand binary and those who don´t.
stOrM! Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 22



BeitragVerfasst: Fr 16.06.06 11:47 
user profile iconNarses hat folgendes geschrieben:
Moin!

Dann lass dir doch mit Luckies DriveTools eine Dateiliste erstellen und geh die durch. ;)

cu
Narses


:-)Versteh ich grad nicht richtig oder ich sitzt auf der Leitung...
Obiger Code ist doch für den lokalen Ordner der dann per Indy hochgeladen wird, oder können die Drivetools auch nen FTP durchsuchen? Ich kapier grad den zusammenhang mit meiner Frage nicht sorry :-(
Narses
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Administrator
Beiträge: 10185
Erhaltene Danke: 1261

W11x64
TP3 .. D7pro .. D10.2CE
BeitragVerfasst: Fr 16.06.06 12:02 
Moin!

Du hast doch Probleme mit der Rekursion, war jedenfalls deine Aussage. Fazit: Lass dir eine Dateiliste erstellen und geh die durch. Damit ist das Problem nicht mehr rekursiv, sondern (über den Umweg Speicherplatz) interativ (einfache Schleife). ;)

Mit dem Hochladen einzelner Dateien hast du ja keine Probleme (hast du zumindest nicht geschrieben). ;)

cu
Narses

_________________
There are 10 types of people - those who understand binary and those who don´t.