PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : GTK: Speicherung v. Inhalten mehrerer Entry



guardian
10-05-2005, 12:17
Hi Leute!

Habe gerade 'ne kleine Gehirnblockade. Es geht darum: ich habe eine Art Datenbankmodul realisiert. Allerdings gibt es das Problem, dass ich momentan keinen Weg weiß, wie ich den Inhalt von x Entry's (sinnvollerweise blockweise) in einer Datei speichern, und bei Bedarf auch wieder laden kann.

Hat jemand von euch mal nen heißen Tipp für mich ?
Vielen Dank im Voraus :)

[0x[90]|
10-05-2005, 15:20
Ich weiss nicht ob ich dich recht verstehe, aber du hast also ein Widget mit einer Anzahl X an Entries und moechtest nun den Inhalt jedes Entries abspeichern.
Falls das so stimmt, wuerde ich das ganze mittels Glade bauen, sodass du die Widget-Lookup Funktion in einer Schleife dazu bringst dir den Widget-Pointer zu jedem Entry zu geben. Dazu musst du die Entries nur nummerisch bezeichnen (sprich: Entry1, Entry2, Entry3) und kannst dann, da du die Lookup Funktion einen String erwartet, "Entry" + i in einen Puffer kopieren und dann das Widget abfragen. Den wiedergegebenen Pointer kannst du anschliessen in die _get_text Funktion stecken und bekommst den Text.
Falls dir dies zu kompliziert ist, solltest du dein Programm evtl. komplett ueberdenken und es so aufbauen, das Werte in einem GString (oder von mir aus gchar **) gespeichert werden, den Entries diese Werte zugewiesen werden und sie dann aus dieser kleinen "Puffer-Datenbank" in deine Datei geschrieben werden.
Um die Daten abzuspeichern, kannst du (je nach groesse deines Projekts) beispielsweise die libxml benutzten. (Sprich: Daten im XML Format abspeichern/laden)

guardian
10-05-2005, 16:07
Hallöchen [0x[90]|,

erst mal vielen Dank für dein Posting!

Habe diese Datenbank mittels Glade erstellt. Wie ich an den Text rankomme ist mir auch klar :)
Das einzige was ich z.Zt. wissen wollte, ist wie man am effektivsten die zwischengepufferten Daten (ausgelesen mittel "gtk_entry_get_text") speicher. Das Ganze allerdings so, dass ich die Datensätze dann auch wieder entsprechend den Entries beim Laden zuweisen kann, ohne eine umständliche Funktion zu schreiben ;)

MfG

[0x[90]|
10-05-2005, 19:34
Das kann ich dir leider nicht beantworten, da ich den Umfang deiner Applikation nicht kenne. Wenn du ein recht kleines Programm hast, wird es wohl damit getan sein, die Daten einfach Zeilenweise in einer ASCII-Datei abzuspeichern und sie beim Laden einfach Zeilenweise wieder einzulesen und zuzuweisen (Zeile 1 = Entry 1, Zeile 2 = Entry 2, usw.). Bei einer groesseren Anwendung wuerde ich jedoch beispielsweise sowas wie libxml nehmen. Die Daten speichern kannst du auch ohne libxml, indem du einfach xml tags mit den Daten in die Datei haust. Das auslesen wird aber doch etwas umfangreicher, fuer einen recht simplen XML-Theme-File Parser habe ich rund 100 Zeilen Code gebraucht.

guardian
11-05-2005, 06:15
Okay. Dann werde ich mir mal die libxml zu Gemüte führen. Vielleicht hilft es ja doch ein wenig was :)

BTW: in der kleinen Version des Programms sind es nur 4 Entries. In der Endfassung bzw. beim ersten Release sollen es mal rund 75 Entries werden :rolleyes:

MfG