AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

TreeView aus Datei einlesen

Ein Thema von tf2006 · begonnen am 3. Mär 2008 · letzter Beitrag vom 4. Mär 2008
Antwort Antwort
Seite 1 von 2  1 2      
tf2006

Registriert seit: 28. Feb 2008
6 Beiträge
 
Delphi 5 Enterprise
 
#1

TreeView aus Datei einlesen

  Alt 3. Mär 2008, 10:51
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.

Gruß

tf2006
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#2

Re: TreeView aus Datei einlesen

  Alt 3. Mär 2008, 11:28
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
  Mit Zitat antworten Zitat
tf2006

Registriert seit: 28. Feb 2008
6 Beiträge
 
Delphi 5 Enterprise
 
#3

Re: TreeView aus Datei einlesen

  Alt 3. Mär 2008, 11:45
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

Aber was meinst du mit direkt anbinden an das Dateissystem?

Gruß

tf2006
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.858 Beiträge
 
Delphi 11 Alexandria
 
#4

Re: TreeView aus Datei einlesen

  Alt 3. Mär 2008, 11:47
Achim meint, diese dynamisch zu erzeugen (aus aktuellem Dateisystem)
Markus Kinzler
  Mit Zitat antworten Zitat
tf2006

Registriert seit: 28. Feb 2008
6 Beiträge
 
Delphi 5 Enterprise
 
#5

Re: TreeView aus Datei einlesen

  Alt 3. Mär 2008, 12:09
Äh dynamisch wie geht denn das?
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.858 Beiträge
 
Delphi 11 Alexandria
 
#6

Re: TreeView aus Datei einlesen

  Alt 3. Mär 2008, 12:11
Nicht aus der Textdatei sondern immer neu erzeugen.
-Ist der Indexdienst aktiv?
-Kannst du den Suchscope einschränken?
Markus Kinzler
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#7

Re: TreeView aus Datei einlesen

  Alt 3. Mär 2008, 13:43
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?
  Mit Zitat antworten Zitat
tf2006

Registriert seit: 28. Feb 2008
6 Beiträge
 
Delphi 5 Enterprise
 
#8

Re: TreeView aus Datei einlesen

  Alt 3. Mär 2008, 16:17
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
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#9

Re: TreeView aus Datei einlesen

  Alt 3. Mär 2008, 16:33
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?
  Mit Zitat antworten Zitat
tf2006

Registriert seit: 28. Feb 2008
6 Beiträge
 
Delphi 5 Enterprise
 
#10

Re: TreeView aus Datei einlesen

  Alt 4. Mär 2008, 10:14
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
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 11:47 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