Entwickler-Ecke

Internet / Netzwerk - FTP Verzeichnisstammbaum in Treeview


lamorking - So 20.03.05 14:48
Titel: FTP Verzeichnisstammbaum in Treeview
hallo,

ich möchte einen ftp-clienten programmieren, welches mir den verzeichnis-stamm-baum eines ftp-servers in einer treeview komponente darstellen soll (also wie im windows-explorer). hat vielleicht jemand einen code-schnippsel/ -beispiel für mich?

ps: erfahrung mit delphi hab ich zwar, nur der crack bin ich nicht.. (programmierpausen gemacht). freue mich auf eure beiträge und bedanke mich im voraus!

Moderiert von user profile iconTino: Überflüssige Absätze entfernt.


Pierre - Fr 25.03.05 17:15

Hallo,
was Du machen willst, habe ich zwar noch nicht programmiert, möchte Dir aber trotzdem einige Dinge ans Herz legen:
1. Mit welcher Komponente willst Du die FTP - Anbindung programmieren?
(Netmaster, Indy usw.)
2. Wenn Deine Komponente kein TREEVIEW-ähnlichen Befehl enthält,
dann schau nach den Beispielen wie man eine Festplatte rekursiv
durchsucht, denn Verzeichnisse und Dateien lassen sich relativ einfach
vom FTP-Server in einer Stringliste hineinladen.
Gruß Pierre


lamorking - Sa 02.04.05 21:30

hallo pierre!

habe vor indy v. 9 zu benutzen.

zum beispiel "Festplatte rekursiv durchsuchen"

das beispiel kenne ich, nur weiter hats mich leider net gebracht, weil ich einfach zu wenig erfahrung hab. du sagst das so leicht, nur für mich ist es (noch) wie fliegen ohne flügel^^.

kannst du mir nicht ein beispiel posten?B?I?T?T?E?

mfg


Pierre - So 03.04.05 12:40

Hallo,

wie schon geschrieben, habe ich dieses Problem bisher nicht selbst umgesetzt.
Ich kann Dir nur folgendes mit auf den Weg geben:

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:
// hiermit legst Du zu Zugang fest, kannst dieses auch über einen edit variabel machen
 idFTP1.Host:='www.domain_xyz.de'
 idFTP1.Username:='Benutzer';
 idFTP1.Password:='meinGeheimnis';

// jetzt gehst Du rein
 idFTP1.connect;

// hier schaust Du, ob Du u.U. nicht reingekommen bist, laß es Dir anzeigen
// Gründe sind: Rechner Online? siehe FAQs und die Groß- und Kleinschreibung
//if idftp1.connected then ... else .... ;

//erst einmal den Verzeichnis-Inhalt holen:
// wobei mit true auch die Parameter der Inhalte übertragen werden
// ist es ein Verzeichnis, dann mußt Du später dort tiefer gehen!

// auch solltest Du wissen, dass sehr häufig, aber nicht immer
// '..' und '.' in den Verzeichnissen liegen können

// mit false bekommst Du nur die Namen
 IDFTP1.List(ListBox1.Items,'',true);

// mit listbox1.Items.count hast Du dann die Anzahl der Dateien/Verzeichnisse
// mit for i:=0 to listbox1.Items.count-1 do ... kannst Du diese Liste durchlaufen

  // jetzt das Beispiel für einen Verzeichniswechsel 
  try
  idftp1.changeDIR('/xyz/'); mit xyz als Verzeichnisname
  except
  // hier feststellen, daß man doch nicht ins Verzeichnis hineinkam
  end



// zum Schluß beende Verbindung zum Server
if idftp1.connected then idftp1.quit;

// Rechner Offline? siehe FAQs


Ich würde damit versuchen, "den Server wie eine Festplatte rekursiv zu durchsuchen". Dabei gibt es sicherlich recht elegante Methoden, welche
an die Stelle der Listbox kämen.

Ich hoffe, es hilft.

Gruß Pierre

Moderiert von user profile iconAXMD: Code- durch Delphi-Tags ersetzt.


lamorking - So 03.04.05 14:09

hi,

ok thx, werde versuchen dein lösungsweg umzusetzen.

tschö


wdbee - So 03.04.05 14:17

Aber probier das mit dem FTP-ChDir mal an dem Server aus, für den du das später nutzen willst. Ich hab nämlich festellen müssen, das die verschiedenen Implementationen für FTP-Server sich in diesem Punkt unterschiedlich verhalten.