Autor Beitrag
hpburner
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 20



BeitragVerfasst: Mo 10.02.03 23:05 
Hallo

ich habe ein Problem ich will per Tool wo man nur die IP Adresse eingeben muss auf einen FTP connecten (XBox) und dort alle files die auf einem bestimmten laufwerk sind (laufwerk D:) markieren und rüber auf meine Festplatte holen.

Das alles soll am besten per Indy Komponenten verwirklicht werden (Zumindest weiss ich, dass es damit möglich ist) www.nevrona.com/Indy/.

Leider kenne ich mich damit nicht aus und weiss nicht wirklich wie ich das anstellen kann daher bräucht ich mal eure Hilfe ;)

Danke im Vorraus für Hilfe

cu
derDoc
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 623

Win Vista Prof
D2007 Prof
BeitragVerfasst: Sa 22.02.03 11:03 
Also du benutzt die idFTP Komponente aus dem Register Indy-Clients.
Dann gibst du dieser alle benötigten Daten (z.B. Benutzername, Password, Port und Servername).
Nun kannst du mit
ausblenden Quelltext
1:
procedure List(ADest: TStrings; const ASpecifier: string; const ADetails: boolean);					

der StringList ADest alle auf dem Server liegenden Dateien übergeben und diese dann in einer for-Schleife mit
ausblenden Quelltext
1:
procedure Get(const ASourceFile: string; const ADestFile: string; const ACanOverwrite: boolean); overload;					

herunterladen.

_________________
MfG derDoc
There are only 10 types of people: those who understand binary and those who don't.
hpburner Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 20



BeitragVerfasst: Mi 12.03.03 22:59 
danke dir (sorry das ich solange nicht antworten konnte) für deine Hilfe !

also das hier ist mein bisheriger sourcecode (die xbox akzeptierts und m connecten + aus DVD laufwerk wechseln funzt 1A) :

ausblenden Quelltext
1:
2:
3:
4:
5:
6:
  XFTP.Username := EUser.Text;
  XFTP.Password := EPassword.Text;
  XFTP.Host := IP_Part_1.Text+'.'+IP_Part_2.Text+'.'+IP_Part_3.Text+'.'+IP_Part_4.Text;
  XFTP.Connect();
  XFTP.ChangeDir('/D/'); //XBOX DVD-ROM
  XFTP.List(nil,'',true); // shortlist unterstüzt die xbox nich ...



So nur das mit dem im laufwerk (verzeichniss wird ja gemappt vom xbox ftp prog) /D/ bleiben und alle files und Ordner ziehen hab ich nicht hinbekommen
wenn einer mir das noch genauer erklären könnte wäre ich dankbar

cu
derDoc
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 623

Win Vista Prof
D2007 Prof
BeitragVerfasst: Do 13.03.03 10:26 
Also ich würde mit List(StrList, '', false); arbeiten, denn mit nil bekommst du die Dateien ja nicht in eine Stringlist.

_________________
MfG derDoc
There are only 10 types of people: those who understand binary and those who don't.
hpburner Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 20



BeitragVerfasst: Do 13.03.03 19:25 
jo ok habs jetzt so gemacht

ausblenden Quelltext
1:
2:
for i := 1 to xftp.ListResult.Count  do
xftp.Get(xftp.ListResult.Strings[i - 1],includetrailingbackslash(getcurrentdir)+xftp.ListResult.Strings[i - 1], true, true);


tjaja nun bekommt er ja alle files die in /D/ liegen aber wie nun in die einzelnen ordner wechseln und das gleiche machen ?!

da hab ich echt keinen plan
kann man da evtl. was mit xftp.directorylisting... machen ?!


cu und thx
hpburner Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 20



BeitragVerfasst: Fr 14.03.03 14:24 
ausblenden Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
procedure KopiereAlles(Verz: string);
var i : integer;
begin
xftp.ChangeDir(Verz); //In angegebenes Verzeichnis wechseln
XFTP.List(listboxxftp.Items,'',false);
for i := 1 to xftp.ListResult.Count  do //       'Jeden einzelnen Eintrag behandeln
 try //Davon ausgehen, dass es sich um eine Datei handelt
  xftp.Get(xftp.ListResult.Strings[i -1],includetrailingbackslash(getcurrentdir)+xftp.ListResult.Strings[i - 1],true, true);
  except; //Fehler beim Kopieren, wahrscheinlich ein Ordner und keine Datei. Daher die function nochmal aufrufen mit neuem Parameter
  KopiereAlles(verz+'/'+xftp.ListResult.Strings[i -1])
  end;
end;



soo jetzt hab ichs so mal versucht
mehr oder weniger rekursiv klappt aber so auch nicht weil er nur die dateien anzeigt in listboxxftp und keine directorys wenn ADetails false ist...

weiss einer wie ich das egscheit zum laufen bekommen kann ?!?!

danke für Hilfe