Seite 1 von 1

NextPreferenceGroup

Verfasst: 29.08.2012 21:11
von kunstlust
Ich möchte gerne aus einer Prefsdatei Inhalte in ein StringGadget anzeigen lassen und diese per Button Vor- und Zurückblättern, mein Problem ist "Zurück"!
Habt Ihr eine Idee?

Code: Alles auswählen

;{- Enumerations / DataSections
;{ Windows
Enumeration
  #Window_0
EndEnumeration
;}
;{ Gadgets
Enumeration
  #Button_zurueck
  #Button_vor
  #String_2
  #String_4
  #String_5
  #String_6
EndEnumeration
;}
Define.l Event, EventWindow, EventGadget, EventType, EventMenu
;}
Procedure OpenWindow_Window_0()
  If OpenWindow(#Window_0, 450, 200, 400, 289, "Window_0", #PB_Window_SystemMenu|#PB_Window_SizeGadget|#PB_Window_MinimizeGadget|#PB_Window_TitleBar)
      ButtonGadget(#Button_zurueck, 55, 220, 95, 40, "<")
      ButtonGadget(#Button_vor, 235, 220, 95, 40, ">")
      StringGadget(#String_2, 150, 30, 205, 20, "Name")
  EndIf
EndProcedure
OpenWindow_Window_0()
OpenPreferences("C:\temp\test.prefs")
 ExaminePreferenceGroups()
;{- Event loop
Repeat
  Event = WaitWindowEvent()
  Select Event
    ; ///////////////////
    Case #PB_Event_Gadget
      EventGadget = EventGadget()
      EventType = EventType()
      If EventGadget = #Button_zurueck
   
     SetGadgetText(#String_2, ReadPreferenceString("Name",""))
   
      ElseIf EventGadget = #Button_vor
    NextPreferenceGroup()
     SetGadgetText(#String_2, ReadPreferenceString("Name",""))
      ElseIf EventGadget = #String_2
      ElseIf EventGadget = #String_4
      ElseIf EventGadget = #String_5
      ElseIf EventGadget = #String_6
      EndIf
    ; ////////////////////////
    Case #PB_Event_CloseWindow
      EventWindow = EventWindow()
      If EventWindow = #Window_0
        CloseWindow(#Window_0)
        Break
      EndIf
  EndSelect
ForEver
;
;}
ClosePreferences()
Hier die kleine Prefs

Code: Alles auswählen

[User1]
Name=Mueller
[User2]
Name=Meier
[User3]
Name=Richter

Re: NextPreferenceGroup

Verfasst: 29.08.2012 21:23
von Kiffi
kunstlust hat geschrieben:Habt Ihr eine Idee?
ich würde die Pref-Datei zu Programmstart in einem Rutsch
in eine geeignete Struktur einlesen und diese dann durchblättern.

Grüße ... Kiffi

Re: NextPreferenceGroup

Verfasst: 29.08.2012 21:30
von kunstlust
Hallo Kiffi,

das wollte ich vermeiden, gibt es keine einfache Möglichkeit?

Gruß Lars

Re: NextPreferenceGroup

Verfasst: 29.08.2012 23:31
von STARGÅTE
Ich vermute mal das du auch XML ausschlagen wirst, wenn ich es dir jetzt vorschlage.

Von daher bleibt dir nur die möglichkeit die Preferenzdatei selbst du parsen, bzw. einen Parser zu schreiben

NextPreferenceGroup

Verfasst: 29.08.2012 23:35
von kunstlust
Hallo Stargate,

XML könnte doch gehen, das muss ich mir noch mal anschauen, aber die Idee ist gut, Danke.

Re: NextPreferenceGroup

Verfasst: 30.08.2012 00:16
von Kiffi
kunstlust hat geschrieben:gibt es keine einfache Möglichkeit?
das hier finde ich schon recht einfach:

Code: Alles auswählen

Structure sPreferenceKey
  Name.s
  Value.s
EndStructure

Structure sPreferenceGroup
  Name.s
  List myPreferenceKey.sPreferenceKey()
EndStructure

NewList myPreferenceGroup.sPreferenceGroup()

If OpenPreferences("C:\temp\test.prefs")
  
  If ExaminePreferenceGroups()
    
    While NextPreferenceGroup()
      
      AddElement(myPreferenceGroup())
      myPreferenceGroup()\Name=PreferenceGroupName()
      
      If ExaminePreferenceKeys()
        
        While NextPreferenceKey()
          
          AddElement(myPreferenceGroup()\myPreferenceKey())
          myPreferenceGroup()\myPreferenceKey()\Name=PreferenceKeyName()
          myPreferenceGroup()\myPreferenceKey()\Value=PreferenceKeyValue()
          
        Wend
        
      Else
        Debug "!ExaminePreferenceKeys()"
      EndIf
      
    Wend
    
  Else
    Debug "!ExaminePreferenceGroups()"
  EndIf
  
  ClosePreferences()
  
Else
  Debug "!OpenPreferences()"
EndIf

ForEach myPreferenceGroup()
  Debug "PreferenceGroupName: " + myPreferenceGroup()\Name
  ForEach myPreferenceGroup()\myPreferenceKey()
    Debug "  PreferenceKeyName: " + myPreferenceGroup()\myPreferenceKey()\Name
    Debug "  PreferenceKeyValue: " + myPreferenceGroup()\myPreferenceKey()\Value
  Next
  Debug "---"
Next
Navigiert wird dann mit den üblichen LinkedList-Befehlen.

Grüße ... Kiffi

Re: NextPreferenceGroup

Verfasst: 30.08.2012 09:06
von kunstlust
Danke dir sehr Kiffi,

ich setze wie von dir Empfohlen die Daten so:

Code: Alles auswählen

PreviousElement(myPreferenceGroup())
        SetGadgetText(#String_2, myPreferenceGroup()\myPreferenceKey()\Value_Name)
        SetGadgetText(#String_4, myPreferenceGroup()\myPreferenceKey()\Value_Typ)
Da ich verschiedene Values nutzen will habe ich es gleich erweitert.

Nochmal Danke für den Tip, der Anfang ist oft immer das Problem :D