www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Datenbank


Autor: Rolf Gasser (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

ich möchte eine Menüstruktur in einem Konfigurationsfile ablegen.
Dieses File soll in ein Flash gespeichert werden.
Dazu möchte ich mir eine Mikro-Datenbank bauen, mit
Zugriffsfunktionen.
Hat jemand schon mal sowas gebaut?Oder hat jemand ne gute Idee?

Gruss
Karl

Autor: Tim (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Karl,

um möglichst wenig Speicher zu verbrauchen, sollten die Menüeinträge
als 'Baumstruktur' im Speicher ablegt werden.
Die Menüeinträge bestehen dabei aus dem folgenden DatenRecords, die
hintereinander im Speicher abgelegt werden.

type
PMenuItem=^TMenuItem; // Zeiger auf nachfolgende TMenuItem-Struktur
TMenuItem=record
          MenuText:array of Char;
          NextItem:PMenuItem;
          PrevItem:PMenuItem;
          ChildParentItem:PMenuItem;
          end;

MenuText:
=> Text des Menüeintrags
=> nullterminiert, um Textende beim Einlesen zu erkennen.

NextItem:
=> Zeiger auf nachfolgenden Menüeintrag.
=> wenn 'nil' handelt es sich um den unterster MenüEintrag der
aktueller MenüEbene.

PrevItem:
=> Zeiger auf vorhergehenden Menüeintrag.
=> wenn 'nil' handelt es sich um den oberster MenuEintrag der in
aktueller MenüEbene.
=> wenn 'nil' steht in ChildItem das ParentItem, dh. der Menüpunkt,
an dem dieser oberste SubMenüEintrags hängt.

ChildParentItem:PMenuItem
=> Zeiger auf den obersten MenüEintrag eines vorhanden SubMenüs oder
(bei PrevItem=nil) übergeordete MenüEintrag an dem dieser erste
Menüeintrag hängt.
=> wenn 'nil' hängt kein SubMenü an diesem Menüpunkt.

Über 4 MenüTasten (links/rechts/hoch/runter) kann man nun -beginnend
mit RootMenüEintrag (PrevItem&ChildParentItem ist hier 'nil')-  durch
die komplette Menüstruktur wandern.
Erweitert man jeden Record noch um eine Sprungzeiger, so kann man bei
der Auswahl direkt in das entsprechende Unterprogramm springen.

Wenn die PointerSize mit 2Byte angenommen wird, beträgt der
Speicherbedarf für einen MenüEintrag (6+TextLänge+1) Bytes.

Grüße

Tim

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.