![]() |
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:
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:
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; 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 |
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 ... |
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..." |
Re: IdFTP, Ordnerstruktur auflisten
Hast du es schon instantiiert?
|
Re: IdFTP, Ordnerstruktur auflisten
Ja, würden euch weitere Ausschnitte helfen?
|
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 05:16 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz