![]() |
TreeView aus Datei einlesen
Ich habe ein Problem beim Einlesen eines TreeView Inhaltes aus einer Datei.
Ich habe einen Verzeichnisbaum mit PDF-Dateien, den ich in einen TreeView einlese um diesen dann mit einer Suchfunktion zu durchsuchen und den Eintrag dann direkt mit dem Adobe ActiveX anzeigen zu lassen. Da der Lesevorgang von der Festplatte zu lange dauert und nicht immer notwendig ist, speichere ich den Inhalt in eine Datei mit SaveToFile. Wenn ich diese Datei mit LoadFromFile wieder einlese, sieht das TreeView zuerst sehr gut aus. Wenn ich dann aber eine Datei selektiere erhalte ich eine Exception. Meine Routine sieht wie folgt aus: Var Info : pNodeInfo; PdfDatei : String; Begin if TreeView.selected <> Nil then begin Info := TreeView.selected.data; PdfDatei := Info^.Name <=== hier kommt dann die Exception. :( Es liegt irgendwie daran, dass beim Einlesen mit LoadFromfile die Node Informationen nicht übernommen werden. Was muss ich machen, damit diese Infos wieder hergestellt werden? Wäre super wenn mir da jemand helfen kann. :lol: Gruß tf2006 |
Re: TreeView aus Datei einlesen
Herzlich willkommen in der Delphi-PRAXiS, tf2006.
Die Methode SaveToFile() speichert die Knotenbeschriftungen in einer strukturierten Textdatei, andere Informationen werden laut Dokumentation nicht gespeichert. Du kannst die Textdatei in einem Editor öffnen und das einfache Format studieren. Kannst du ein paar nähere Informationen geben, warum du die Baumansicht deiner PDF-Dokumente nicht direkt ans Dateisystem binden willst? Freundliche Grüße |
Re: TreeView aus Datei einlesen
Hallo Marabu,
vielen dank für die superschnelle Reaktion Wenn ich den Tree direkt einlese dauert das ca. 20 sec. Lese ich die Textdatei ein, geht das super schnell. Sind halt sau viele Einträge. Ich habe mir die Textdatei schon angesehen. Ich weis aber nicht was ich daran erkennen soll. Da steht der Baum drin. Wenn ich das alles richtig verstehe, dann sind die Node Infos irgendwelche HEX-Schlüssel und die werden beim LaofFromFile so nicht wieder hergestellt :roll: Aber was meinst du mit direkt anbinden an das Dateissystem? Gruß tf2006 |
Re: TreeView aus Datei einlesen
Achim meint, diese dynamisch zu erzeugen (aus aktuellem Dateisystem)
|
Re: TreeView aus Datei einlesen
Äh dynamisch :?: wie geht denn das?
|
Re: TreeView aus Datei einlesen
Nicht aus der Textdatei sondern immer neu erzeugen.
-Ist der Indexdienst aktiv? -Kannst du den Suchscope einschränken? |
Re: TreeView aus Datei einlesen
Schade, dass D5 die Komponente TShellTreeView noch nicht kennt.
Wozu referenzierst du den Dateinamen der PDF-Datei in Node.Data? Ist er nicht aus den Knotenbezeichnern ableitbar? Beim Aufbau der TreeView kannst du viel Zeit sparen, wenn du nur wirklich gerade benötigte Einträge erzeugst. Dabei verwendest du sicher auch die TTreeView.Items-Methoden BeginUpdate() und EndUpdate() - oder? |
Re: TreeView aus Datei einlesen
Ich muss leider immer alle Einträge durchsuchen und die Sache mit der Node Info
funktioniert ja auch sehr gut. Wenn ich den Verzeichnisbaum neu einlese, also nicht aus der Datei, dann arbeite ich mit Begin und EndUpdate. Beim lesen aus der Datei nicht. Geht das überhaupt und wenn wie. Aber mit Node Info habe ich ja alles was ich brauche, geht nur leider so nicht, wenn ich mit LoadFromFile arbeite. Gruß tf2006 |
Re: TreeView aus Datei einlesen
Okay, nochmal anders gefragt:
Welche Bedeutung haben die Knoten in deiner TreeView, wieviele gibt es insgesamt und welchen Grad / welche Höhe hat der Baum? Funktioniert dein Programm auch auf anderen Rechnern oder nur auf deinem eigenen? |
Re: TreeView aus Datei einlesen
Also der Baum hat so insgesamt 13000 Einträge und besteht aus einem Artikelmatchcode.
Das Programm funktioniert grundsätzlich mit jedem beliebigen Baum, wobei ich nur die PDF-Datei des einzelnen Artikels anzeige, wenn dieser Erfolgreich über einen Suchstring gefunden wurde. Daher benötige ich auch immer den kompletten Baum, da sich in der Artikel Nr ein Teilstring befinden kann, nach dem ich suche. Wie z.B. x-Obst +-Apfel ------Rot.pdf ------RotKlein.pdf ------RotGross.pdf ------RotGrossAfrika.pdf ------RotGrün.pdf ------RotGrün.pdf ------RotGrünKlein.pdf +-Birne ------Grün.pdf ------GrünSüdAfrika.pdf usw. Ich suche dann z.B. nur nach Afrika. In meiner Node Info steht dann die Dateiinfo mit der ich dann mit dem AcroPDF ActiveX die Datei mit AcroPdf.LoadFile(DateiName) die Datei Anzeige. Das Ganze wird mit diese Prozedur aufgerufen (nur ein Auszug) Var Info : pNodeInfo; begin ..... Info := TreeView.Selected.Data: DateiName := Info^.Name; ..... Gruß tf2006 |
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:40 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