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
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
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.