Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Netzwerke (https://www.delphipraxis.net/14-netzwerke/)
-   -   Delphi IdFTP, Ordnerstruktur auflisten (https://www.delphipraxis.net/59329-idftp-ordnerstruktur-auflisten.html)

LucasL 20. Dez 2005 19:07


IdFTP, Ordnerstruktur auflisten
 
Hallo miteinander,

ich bin einwenig verzweifelt. In der Unit meines Hauptformulars habe ich ein IdFTP-Objekt (Indy 10) und ich möchte damit einen Verzeichnisbaum in einem TTreeView-Objekt in einem anderen Formular erstellen.

Klappt eigentlich(!) auch wunderbar, indem ich aus dem Hauptformular rekursiv das IdFTP-Objekt anzapfe und die Ordner dann in das andere Formular übertrage.

Hier mal die beiden wichtigsten Funktionen dazu:

Code:
function ListDirs(var IdFTP : TIdFTP) : TStringList;
* var
* * StrFTP : TStringList;
* * i : integer;
begin
* StrFTP := TStringList.Create;
* IdFTP.List(StrFTP, '', false);
* for i := (StrFTP.Count - 1) downto 0 do
* * if (StrFTP.Strings[i] = '') or
* * * *(StrFTP.Strings[i] = '.') or
* * * *(StrFTP.Strings[i] = '..') or
* * * *(Pos('.', StrFTP.Strings[i]) <> 0) then
* * * StrFTP.Delete(i);
* ListDirs := StrFTP;
end;

procedure FillTree(parent : TTreenode; var Tree : TTreeView; var IdFTP : TIdFTP);
* var
* * StrFTP : TStringList;
* * Node : TTreeNode;
* * i : integer;
begin
* try
* * StrFTP := ListDirs(IdFTP);
* except
* * exit;
* end;
* for i := 0 to StrFTP.Count - 1 do
* begin
* * Node := Tree.Items.AddChild(parent, StrFTP.Strings[i]);
* * IdFTP.ChangeDir(Node.Text);
* * FillTree(Node, Tree, IdFTP);
* * IdFTP.ChangeDirUp;
* end;
end;
Leider dauert das ganze bei vielen Ordnern verdammt lange! Also hatte ich mir überlegt, ich lade einfach bei Bedarf, also bei jedem "Anklicken eines Knotens" (onChange) in der Treeview, die entsprechenden Unterordner hinzu. Und jetzt tritt das eigentliche Problem auf:

Ich kriege ums Verrecken keinen Zugriff aus dem zweiten Formular auf das IdFTP-Objekt in der Hauptunit, sodass ich darauf Operationen wie ChangeDir anwenden könnte (Kommt immer Zugriffsverletzung, etc.)!

Ich bräuchte also entweder eine Lösung, die das Auflisten der Ordnerstruktur performanter, oder den problemlosen Zugriff auf das IdFTP-Objekt aus anderen Units ermöglicht.

Bin für jeden Lösungsvorschlag dankbar!

Gruß,
Lucas

jfheins 20. Dez 2005 19:11

Re: IdFTP, Ordnerstruktur auflisten
 
Du müsstest da IdFtp-Objekt entweder
-public machen und per Form1.IdFtp drauf zugreifen oder
-global deklarieren

dann sollte es gehen ...

LucasL 20. Dez 2005 20:01

Re: IdFTP, Ordnerstruktur auflisten
 
hm, aber auch wenn ichs global in der 2. Unit deklariere und dann versuch aus der 1. Unit (uses "2. Unit") auf das IdFTP-Objekt zuzugreifen bekomm ich leider ne Access Violation :gruebel:

Exception:
"Lesen von Adresse 000..."

3_of_8 20. Dez 2005 20:13

Re: IdFTP, Ordnerstruktur auflisten
 
Hast du es schon instantiiert?

LucasL 20. Dez 2005 21:07

Re: IdFTP, Ordnerstruktur auflisten
 
Ja, würden euch weitere Ausschnitte helfen?

LucasL 21. Dez 2005 16:40

Re: IdFTP, Ordnerstruktur auflisten
 
Ich hab das Problem gelöst. Hab einfach nochmal Ordnung in das ganze gebracht und nun funzts. Danke trotzdem für eure Zeit und frohes Fest :wink:


Alle Zeitangaben in WEZ +1. Es ist jetzt 02:57 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz