Datenbank

Gast #115208
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
Gast
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

Eine eigene Frage? Dieser Thread ist über 22 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.