Ich versuche, eine Verzeichnisbaum-Benutzeroberfläche einer unbekannten Menge von verschachtelten Ordnern anzuzeigen, die aus einer flachen Datei gelesen wird. Meine Idee war es, eine Struktur zu verwenden, die für Kinder und Eltern, wie so zeigen könnte:Ein bisschen verwirrt über den Geltungsbereich und wie verschachtelte Strukturen für den Verzeichnisbaum erstellt werden
struct audioSelectTreeItem {
FString folderName;
FString folderPath;
struct audioSelectTreeItem* folderParentItem;
TArray<struct audioSelectTreeItem*> childFolderItems;
};
Wenn ich lese die Datei der gespeicherten Verzeichnisse speichere ich alle Unterordner in childFolderItems und die Eltern in folderParentItem. Auf diese Weise, wenn jemand einen Ordner hochgehen möchte, schaue ich auf folderParentItem und lese dann seine Unterordner mit childFolderItems aus.
Das Problem, auf das ich stoße, ist, wie man das speichert. Ich habe eine Funktion erstellt, die Ordner und untergeordnete Elemente durchläuft und alle diese Strukturen erstellen und speichern kann. Ich denke jedoch, das Problem ist, wenn ich eine Struktur in einer Schleife erstellen, dann speichern Sie einen Zeiger auf es in der vorherigen Struktur (Kinder Ordner) Ich kann nicht darauf zugreifen, von irgendwo sonst im Programm.
Gibt es eine Möglichkeit, diese permanenter zu erstellen, und wie würde ich darüber hinausgehen, wenn Sie fertig sind?
Bearbeiten: schrieb, als ob ich Live-Verzeichnisse lesen. War eine Textdatei mit Verzeichnisinformationen, die ich in eine Baumschnittstelle einfügen muss.
Update: Hier ist ein kleines Beispiel dafür, was die Schleife tut:
void AMyPlayerController::showAudioPicks() {
for (int counter = startCount; counter < fileStringArray.Num(); counter++) { //startcount 3
audioSelectTreeItem newTreeItem;
newTreeItem.folderPath = fileStringArray[counter];
mainListTree.childFolderItems.Add(&newTreeItem);
...
Also mein Problem liegt das diese neue audioSelectTreeItem mit dem Erstellen von in structs hinzuzufügen verschachtelt, aber sie halten zugänglich anderswo im Programm.
Rufen Sie die benutzerdefinierte Funktion 'GetDirectoryContent (audioSelectTreeItem p_asti)' auf, um Unterordner und Dateien in der 'Selbstwiederholungsschleife' anzuzeigen. Sie benötigen nur Adspath des ausgewählten Ordners und Vektors, in dem Sie die Daten speichern möchten. –
@ A.Godnov Entschuldigung Ich schrieb, als ob ich aus einem Live-Verzeichnis lesen würde. Ich tat das früher und lese aus einer gespeicherten Datei von "gespeicherten Verzeichnissen". – Shawn
Was ist das Format der Datei, die Sie gerade lesen? –