Le 18/06/2014 15:08, wig a écrit : > > How the get the (unknown keys) from a Settings file? > > > Terminology of Keys and "Slot" for the group of keys in a settings file > taken from documentation; > > This gives the names of the slots: > > > Dim SettingsToImport As New Settings(User.Home &/ > ".config/gambas3/gambas3.conf") > > Dim sKeySlot As String > Dim iSlotCounter As Integer > > For Each sKeySlot In SettingsToImport.Keys > Debug sKeySlot > Inc iSlotCounter > Next > Debug " - - - - " & iSlotCounter > > > Works fine, gives me all the slotnames, and the count of e.g.23: > >> Editor >> FColorChooser >> FConnectionEditor > ... >> gb.form.mdi/FShortcut >> gb.form.mdi/FToolbarConfig >> gb.form.mdi/Toolbars/main >> - - - - 23 > > Next step; I want to have the keys themselves. But how? (assuming I do > not know the keynames) > > > Dim SettingsToImport As New Settings(User.Home &/ > ".config/gambas3/gambas3.conf") > > Dim sKey As String > Dim iKeyCounter As Integer > > Dim hSettingsKeys As _Settings_Keys ' what I found in gb.settings docum. > > For Each sKeySlot In SettingsToImport.Keys > Debug sKeySlot > Inc iSlotCounter > > hSettingsKeys = SettingsToImport.Keys[sKeySlot] ' docum says > hSettings.Keys [ Parent As String ] > > For Each sKeySlot In hSettingsKeys > Inc iKeyCounter > Debug iKeyCounter & ": " & sKey > Next > > Next > > > > Doesn't crash, doesn't freeze, but gives the output: > >> Editor >> 1: Font >> 2: KeywordsUseUpperCase >> KeywordsUseUpperCase > > > That's all, it stops. > > (I want to import a Settings file, not use it for my app itself; I know > how to save and use settings for my app). > > This in Gambas 3.4.1 on OpenSuse 13.1/KDE > > > WiG. >
Well, I admit that the Settings interface is weird for that. :-/ For the moment, you can't imbricate enumerations of the Keys property, unless you first put all keys in an intermediate string array. Something like that: Public Sub GetAllKeys(hSettings As Settings, Optional sParent As String, Optional aResult As String[]) As String[] Dim aKeys As New String[] Dim sKey As String For Each sKey In hSettings[sParent].Keys aKeys.Add(sKey) Next If Not aResult Then aResult = New String[] For Each sKey In aKeys aResult.Add(sKey) aResult.Insert(GetAllKeys(hSettings, sKey, aResult)) Next Return aResult End Beware, I wrote that code without testing it! -- Benoît Minisini ------------------------------------------------------------------------------ Open source business process management suite built on Java and Eclipse Turn processes into business applications with Bonita BPM Community Edition Quickly connect people, data, and systems into organized workflows Winner of BOSSIE, CODIE, OW2 and Gartner awards http://p.sf.net/sfu/Bonitasoft _______________________________________________ Gambas-user mailing list Gambas-user@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/gambas-user