Verzeichnisstruktur lesen

Gast #1099539
Hallo,

ich versuche mich nun auch, welche Überraschung, mit einem eigenen 
MP3-Player. Der Grundgedanke ist, die Verzeichnisstruktur auf einer 
SD-Karte zu lesen und in einem File abzulegen. Als Beispiel soll so 
etwas vorhanden sein:
Directory0
 Subdirectory00
  File0
  File1
 Subdirectory01
  File0
  File1
  File2
  File3
Directory1
 Subdirectory10
 Subdirectory11
usw.
Genau so soll es dann auch im List-File stehen. Aber genau da habe ich 
meine Denkblockade. Würde ich ebenenweise scannen, hätte ich keine 
Zuordnung der Files zum Verzeichnis mehr. Würde ich mich von einem 
Verzeichnis beginnend immer so weit nach unten hangeln, bis ich Files 
finde, hätte ich zwar die gewünschte Zuordnung. Ich müßte mich aber 
wieder zurückbewegen und dabei merken, welche Verzeichnisse ich bereits 
bearbeitet habe. Dazu bräuchte ich aber Speicher, den ich nicht habe.
Hat jemand eine Idee, wie man das elegant lösen könnte?

Gruß Matthias
Gast
>Würde ich mich von einem
>Verzeichnis beginnend immer so weit nach unten hangeln, bis ich Files
>finde, hätte ich zwar die gewünschte Zuordnung.

Schon da wird es Probleme geben. Verzeichnis und Dateieinträge
können wild durcheinander auf der SD liegen.
Und alphabetisch sortiert ist ebenfalls Glückssache.
Gast
Würde iich es auf einem Pc machen wollen, hätte ich ja Speicher :)
Nein, die Plattform ist ein 644P. Das meiste des RAMs geht schon für die 
Dateiverwaltung drauf. Sicherlich könnte man mit externem RAM arbeiten. 
Ich habe aber gerade so ein kleines Modul ohne externem RAM. Deshalb kam 
ich auf die Idee, die Liste auf der Karte abzuspeichern. Aber selbst 
wenn ich genug RAM hätte, erscheint mir die Vorgehensweise nicht ganz 
trivial.

Gruß Matthias
Gast
Hi

Hatte das zu 286er Zeiten in ASM ungefähr wie folgt gemacht:
1
(00) .
2
(01) 00 File_1_in_Root
3
(02) 00 File_2_in_Root
4
(03) 00 U-Verz_1_von_Root_1
5
(04) 03 File_in_U-Verz_1_von_Root_1
6
(05) 00 File_3_in_Root
7
(06) 03 U-Verz_1.1_von_U-Verz_1
8
(07) 03 File_1_in_Verzeichnis -> root/u-verz-1/
9
(08) 06 File_1_in_Verzeichnis -> root/u-verz_1/u-verz-1.1/
10
...

Die vorderen Zahlen in Klammern entspricht dem Speicherort (bei DOS 
damals war bei 8+3 Zeichen Schluß, konnte man leicht und gleichmäßig im 
SPeicher verteilen) bzw. der Nummer des Datensatz.
Die Zahl dahinter beschreibt, in welchem Verzeichnis der Eintrag liegt, 
erst, wenn wir beim rückwärts gehen auf 00 kommen, ist der Pfad komplett 
zusammen gestellt und das File kann geöffnet werden.
Die Zahl ohne Klammern ist auch das Erste, was im Speicher steht.
Bestimmt nicht optimal, hat damals aber durchaus gereicht (aber kA, was 
ich damit gemacht hatte ...)

Wenn's hilft, bitte :)

MfG
Wenn die Reihenfolge beliebig sein darf, dann geht es einfach:
Du brauchst nur eine Funktion die ein Verzeichnis ausliest. Findet diese 
eine Datei, wird der Name in die Liste gespeichert. Findet sie ein 
Verzeichnis, ruft sich die Funktion selbst wieder auf, mit dem neuen 
Verzeichnis als Parameter. Fertig.
Gast
@Gast Posti
Ich glaub, da brauche ich etwas länger, bis ich es verstanden habe.
Danke erst mal!

@Benedikt
Die Reihenfolge ist nicht beliebig. Ich möchte damit ereichen, dass ich 
sowohl um einzelne Files (respektive Titel) bzw. Verzeichnisse 
(respektive CDs) vor und zurücknavigieren kann.

Gruß Matthias

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 17 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.