Audi Geschrieben 18. Juli 2008 Geschrieben 18. Juli 2008 Hallo, ich habe ein Problem, bin dabei einen Datei Parser zu schreiben und möchte die Dateiverknüpfungen aller Dateien die z.B mit der Endung .txt enden in einer Baumstrucktur darstellen, wie mache ich dass am besten? Sollte nicht so aufwendig sein nur dass man nachvollziehen kann welche Datei mit welcher verknüpft ist! danke Zitieren
Guybrush Threepwood Geschrieben 18. Juli 2008 Geschrieben 18. Juli 2008 Falls du einen TreeView auf der Benutzeroberfläche meinst kommt das ganz darauf an womit bzw. wofür due Entwickelst. Zitieren
Audi Geschrieben 18. Juli 2008 Autor Geschrieben 18. Juli 2008 Falls du einen TreeView auf der Benutzeroberfläche meinst kommt das ganz darauf an womit bzw. wofür due Entwickelst. Ich habe keine Benutzeroberfläche, es wird beim Programmstart gefragt in welchem Verzeichnis gesucht werden soll, dann wird gesucht und als nächstes sollte die Ausgabe einer Baumstrucktur erfolgen, wenn es zusammenhänge gibt. Zitieren
Klotzkopp Geschrieben 18. Juli 2008 Geschrieben 18. Juli 2008 Was meinst du mit "Dateiverknüpfung"? Wie soll die Baumstruktur organisiert sein? Von welchen Zusammenhängen sprichst du? P.S.: Kein 'c' in Struktur Zitieren
Audi Geschrieben 18. Juli 2008 Autor Geschrieben 18. Juli 2008 Was meinst du mit "Dateiverknüpfung"? Wie soll die Baumstruktur organisiert sein? Von welchen Zusammenhängen sprichst du? P.S.: Kein 'c' in Struktur also es ist so aufgebaut: es werden .pro Dateien gesucht, geöffnet, es wird nach includes geparst (so stehen die dann da: #include(bla bla.pro)) das was in der Klammer der include steht ist eine Verknüpfung zur nächsten .pro usw. diese Dateizusammenhänge sollen dann in einer Baumstrucktur ausgegeben werden. Zitieren
flashpixx Geschrieben 18. Juli 2008 Geschrieben 18. Juli 2008 Hallo, naja das hört sich für mich an, dass Du im Grunde immer die Datei und von dort abhängig die "Kind"-Dateien haben willst usw. Achtung: Das kann eine Endlosschleife in der Rekursion geben , denn es können Zyklen in den Includes entstehen, die Du natürlich passend behandeln musst. Schreibe Dir eine Klasse "Tree", in der eben ein String für die Daten und ein Zeiger auf weitere Treeobjekte enthalten ist. Dann liest Du den Dateibaum und durchläuft ihn Datei für Datei, liest die Includes, erzeugt einen neuen Tree / Node, packst die Daten rein. Zum Schluss für die Ausgabe traversierst Du den Baum in der passenden Reihenfolge (pre, in, post order). Ich denke mal Du solltest in-order verwenden, beginnend bei dem Wurzelknoten HTH Phil Zitieren
Klotzkopp Geschrieben 18. Juli 2008 Geschrieben 18. Juli 2008 Was du da hast, ist nicht zwangsläufig ein Baum. Beispiel: a bindet b und c ein b bindet d ein c bindet d ein Das lässt sich nicht als Baum darstellen, weil es mehr als einen "Weg" von a nach d gibt (über b und über c). Das wäre dann ein ganz normaler Graph (ein Baum ist ein besonderer Graph). Wenn du garantieren kannst, dass es sich um eine Baumstruktur handelt, kannst du einfach eine struct für eine solche Datei definieren, die einen std::vector derselben struct enthält, in dem die verknüpften Dateien abgelegt sind. Wenn du keinen Baum hast, musst du anders vorgehen. Ich würde erst mal alle Dateien in einem std::vector anlegen, und dann über eine Liste von Zeigern die Verknüpfungen abbilden. Die Ausgabe hängt auch stark davon ab, ob das nun wirklich ein Baum ist oder nicht. Zitieren
Audi Geschrieben 18. Juli 2008 Autor Geschrieben 18. Juli 2008 Was du da hast, ist nicht zwangsläufig ein Baum. Beispiel: a bindet b und c ein b bindet d ein c bindet d ein Das lässt sich nicht als Baum darstellen, weil es mehr als einen "Weg" von a nach d gibt (über b und über c). Das wäre dann ein ganz normaler Graph (ein Baum ist ein besonderer Graph). Wenn du garantieren kannst, dass es sich um eine Baumstruktur handelt, kannst du einfach eine struct für eine solche Datei definieren, die einen std::vector derselben struct enthält, in dem die verknüpften Dateien abgelegt sind. Wenn du keinen Baum hast, musst du anders vorgehen. Ich würde erst mal alle Dateien in einem std::vector anlegen, und dann über eine Liste von Zeigern die Verknüpfungen abbilden. Die Ausgabe hängt auch stark davon ab, ob das nun wirklich ein Baum ist oder nicht. du hast recht! ist dann kein richtiger Baum wie du oben beschrieben hast! also ein "Grap" und wie sollte ich am besten den "Baum" ausgeben? ohne benutzeroderfläche? in der kommandozeile ja nicht!? danke Zitieren
Klotzkopp Geschrieben 18. Juli 2008 Geschrieben 18. Juli 2008 Du könntest eine DOT-Datei erstellen und das ganze dann durch Graphviz jagen, um beispielsweise eine Bitmapdatei daraus zu machen. Zitieren
Audi Geschrieben 18. Juli 2008 Autor Geschrieben 18. Juli 2008 Du könntest eine DOT-Datei erstellen und das ganze dann durch Graphviz jagen, um beispielsweise eine Bitmapdatei daraus zu machen. ok so mache ich es dann! mal schauen wie es dann aussiet;) Zitieren
Audi Geschrieben 21. Juli 2008 Autor Geschrieben 21. Juli 2008 ok so mache ich es dann! mal schauen wie es dann aussiet;) ich habs bissel einfacher gestaltet über XML danke allen für die Hilfe!!! Zitieren
flashpixx Geschrieben 21. Juli 2008 Geschrieben 21. Juli 2008 Warum über XML? Ist das nicht für die einfache Dateiverwaltung zu "groß" dimensioniert? Wie gehst Du damit um, dass Du redundante Pfade zu den Blättern hast? Phil Zitieren
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.