Autor Beitrag
madstudent
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 35

Win XP, Win Vista
Delphi 2009 Prof.
BeitragVerfasst: Fr 28.08.09 11:02 
Hallo

ich check es wohl mal wieder nicht. Ich möchte eine oder mehrere Dateien von einem bestimmten FTP-Server downloaden. Ich hab hier schon ein paar Codes gesehen die auch wunderbar funktionieren, wenn man eine einzelne bestimmte Datei downloaden will. Das ist soweit klar. Ich benutze IdFTP.Get und das funktioniert bei mir auch, allerdings immer nur die erste aufgelistete Datei. Mir ist auch vollkommen klar weshalb nur die erste (Ich hab wie man sieht auf das erste Element in der Liste verwiesen). Wenn man nun aber erst die 4. Datei in der Liste und dann die 2. Datei downloaden will, wie komm ich dahin. Es soll eben eine x-beliebige Datei vom FTP-Server gedownloadet werden in einer x-beliebigen Reihenfolge. Wer kann mir mal auf die Sprünge helfen? Aber bitte nicht nur solche Stichworte wie "rekursiv angehen". Ein bischen mehr Input bräuchte ich schon. :idea:

Hier mein Code:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
// **** Download aufrufen **** //
procedure TForm1.DownClick(Sender: TObject);
begin
  SaveDialog1.Execute;
  IdFTP1.Get(Liste.Items[0].FileName, SaveDialog1.FileName,false,false);
  Download.Position := 100;
end;


Moderiert von user profile iconNarses: Delphi-Tags hinzugefügt
Moderiert von user profile iconNarses: Topic aus Multimedia / Grafik verschoben am Fr 28.08.2009 um 11:39
Andreas L.
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 1703
Erhaltene Danke: 25

Windows Vista / Windows 10
Delphi 2009 Pro (JVCL, DragDrop, rmKlever, ICS, EmbeddedWB, DEC, Indy)
BeitragVerfasst: Fr 28.08.09 13:43 
Das heißt du weißt in vornherein nicht welche Datei heruntergeladen wird? Also wird diese vom User ausgewählt? Dann brauchst du doch nur deine Liste nach der Datei zu durchsuchen und den Index merken.

ausblenden 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:
procedure TForm1.DownloadFile(ASource, ADest: String);
var
  iFile: Integer;
begin
  for iFile := 0 to Liste.Count -1 do
  begin
    if Liste[iFile].FileName = ASource then
    begin
      IdFTP.Get(Liste[iFile].FileName, ADest, False, False);
      Exit;
    end;
  end;
end;

procedure TForm1.DownClick(Sender: TObject);
begin
  if SaveDialog1.Execute then
  begin
    try
      DownloadFile(Edit1.text, SaveDialog1.FileName); //wenn die zu herunterladende Datei in einem Edit steht
    except
      ShowMessage(E.Message);
    end;
  end;
end;
madstudent Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 35

Win XP, Win Vista
Delphi 2009 Prof.
BeitragVerfasst: Mo 31.08.09 08:32 
Hallo Andreas

vielen Dank. Das hat mich echt weitergebracht. Ich hab wohl mir wohl selber im Weg gestanden. Hier meine passgenaue Lösung:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
// **** Download aufrufen **** //
procedure TForm1.DownClick(Sender: TObject);
var iFile: integer;
begin
  for iFile := 0 to Liste.Count -1 do
    begin
      if TreeView1.Items[iFile].Selected then
        begin
          SaveDialog1.Execute;
          IdFTP1.Get(Liste.Items[iFile].FileName, SaveDialog1.FileName,false,false);
          Download.Position := 100;
        end;
    end;
end;


Moderiert von user profile iconNarses: Delphi-Tags hinzugefügt