hallo,
ich möchte einen ftp-clienten programmieren, welcher mir den verzeichnis-stamm-baum eines ftp-servers in einer treeview komponente darstellen soll (also genau wie im windows-explorer).
Hier mein bisheriger Quelltext:
======================
procedure TForm1.ConnectButtonClick(Sender: TObject);
var
FTP_Inhalt : TStringList;
i,j : integer;
begin
With IdFTP1 do
begin
Host:='127.0.0.1';
Username:='Anonymous';
Password:='MyPasswort';
Connect();
end;
if IdFtp1.Connected=true then
begin
FTP_Inhalt:=TStringList.Create;
IdFtp1.list(FTP_Inhalt,'',false);
j:=Ftp_Inhalt.Count;
for i:=0 to j-1 do
begin
TreeView1.items.Add(nil,FTP_Inhalt[i]);
end;
FTP_Inhalt.Free;
end;
end;
Hier ein beispiel, wie ich mir mein programm vorstelle:
===================================
procedure TForm1.GetDirectories(Tree: TTreeView; Directory: string; Item:
TTreeNode; IncludeFiles: Boolean);
var
SearchRec: TSearchRec;
ItemTemp: TTreeNode;
begin
Tree.Items.BeginUpdate;
if Directory[Length(Directory)] <> '\' then Directory := Directory + '\';
if FindFirst(Directory + '*.*', faDirectory, SearchRec) = 0 then
begin
repeat
if (SearchRec.Attr and faDirectory = faDirectory) and (SearchRec.Name[1] <>
'.') then
begin
if (SearchRec.Attr and faDirectory > 0) then
Item := Tree.Items.AddChild(Item, SearchRec.Name);
ItemTemp := Item.Parent;
GetDirectories(Tree, Directory + SearchRec.Name, Item, IncludeFiles);
Item := ItemTemp;
end
else if IncludeFiles then
if SearchRec.Name[1] <> '.' then
Tree.Items.AddChild(Item, SearchRec.Name);
until FindNext(SearchRec) <> 0;
FindClose(SearchRec);
end;
Tree.Items.EndUpdate;
end;
// Ausführen:
procedure TForm1.Button1Click(Sender: TObject);
var
Node: TTreeNode;
Path: string;
Dir: string;
begin
Dir := 'c:\'; // hier sollte der ftp verzeichnisstammbaum stehen!!
Screen.Cursor := crHourGlass;
TreeView1.Items.BeginUpdate;
try
TreeView1.Items.Clear;
GetDirectories(TreeView1, Dir, nil, True);
finally
Screen.Cursor := crDefault;
TreeView1.Items.EndUpdate;
end;
end;
So, wie kann ich das "GetDirectories - beispiel" in mein quelltext einbauen???
ich bin leider noch delphi-anfänger und wäre für einen code-schnipsel sehr dankbar.
freue mich auf eure beiträge und
bedanke mich im voraus!
ich möchte einen ftp-clienten programmieren, welcher mir den verzeichnis-stamm-baum eines ftp-servers in einer treeview komponente darstellen soll (also genau wie im windows-explorer).
Hier mein bisheriger Quelltext:
======================
procedure TForm1.ConnectButtonClick(Sender: TObject);
var
FTP_Inhalt : TStringList;
i,j : integer;
begin
With IdFTP1 do
begin
Host:='127.0.0.1';
Username:='Anonymous';
Password:='MyPasswort';
Connect();
end;
if IdFtp1.Connected=true then
begin
FTP_Inhalt:=TStringList.Create;
IdFtp1.list(FTP_Inhalt,'',false);
j:=Ftp_Inhalt.Count;
for i:=0 to j-1 do
begin
TreeView1.items.Add(nil,FTP_Inhalt[i]);
end;
FTP_Inhalt.Free;
end;
end;
Hier ein beispiel, wie ich mir mein programm vorstelle:
===================================
procedure TForm1.GetDirectories(Tree: TTreeView; Directory: string; Item:
TTreeNode; IncludeFiles: Boolean);
var
SearchRec: TSearchRec;
ItemTemp: TTreeNode;
begin
Tree.Items.BeginUpdate;
if Directory[Length(Directory)] <> '\' then Directory := Directory + '\';
if FindFirst(Directory + '*.*', faDirectory, SearchRec) = 0 then
begin
repeat
if (SearchRec.Attr and faDirectory = faDirectory) and (SearchRec.Name[1] <>
'.') then
begin
if (SearchRec.Attr and faDirectory > 0) then
Item := Tree.Items.AddChild(Item, SearchRec.Name);
ItemTemp := Item.Parent;
GetDirectories(Tree, Directory + SearchRec.Name, Item, IncludeFiles);
Item := ItemTemp;
end
else if IncludeFiles then
if SearchRec.Name[1] <> '.' then
Tree.Items.AddChild(Item, SearchRec.Name);
until FindNext(SearchRec) <> 0;
FindClose(SearchRec);
end;
Tree.Items.EndUpdate;
end;
// Ausführen:
procedure TForm1.Button1Click(Sender: TObject);
var
Node: TTreeNode;
Path: string;
Dir: string;
begin
Dir := 'c:\'; // hier sollte der ftp verzeichnisstammbaum stehen!!
Screen.Cursor := crHourGlass;
TreeView1.Items.BeginUpdate;
try
TreeView1.Items.Clear;
GetDirectories(TreeView1, Dir, nil, True);
finally
Screen.Cursor := crDefault;
TreeView1.Items.EndUpdate;
end;
end;
So, wie kann ich das "GetDirectories - beispiel" in mein quelltext einbauen???
ich bin leider noch delphi-anfänger und wäre für einen code-schnipsel sehr dankbar.
freue mich auf eure beiträge und
bedanke mich im voraus!