Vi riporto questa discussione apparsa nella M.L. ufficiale:
" I have a need to detect if a particular Slot exists in the .config
file for an application. Just the Slot not whether any value lines exist
under it.
There doesn't seem to be a way to do this via gb.settings? I have tried
using
If Settings.Keys["Filter"] then
but this seems always to be true. Similarly
If Settings["Filter"] then
always seems to be false.
So is there a way to find out if a Slot does exist?
---- more info -----
The problem is that the value lines depend on about 8 text boxes set or
cleared by the user. If one or more of the text boxes are empty then
that value line will not appear under the [Filter] slot. So I can't
detect the existence of the slot by detecting a particular value line.
In fact if they clear all the filter strings then that whole slot will
disappear.
Thus I need to check if the slot exists, so then I could
If Settings.Exist["Filter"] then
GetFilterSettings
Else
SetDefaultFilter
Endif
Bruce "
" Salut Bruce,
Settings.Read (gb.settings)
Sub Read ( hObject As Object [ , sKey As String, vDefault As Variant ] )
Settings("Filter", GetFilterSettings, SetDefaultFilter)
or
Public Function KeyExists(objSetting As Settings, sFindKey As String) As Boolean
Dim sKey As String
Dim bRet As Boolean
bRet = False
For Each sKey In objSetting.Keys
If sKey = sFindKey Then
bRet = True
Break
Endif
Next
Return bRet
End
--
Amicalement
Charlie "
" Hmm. Settings["Filter"] will return Null if the slot does not exist. Note
that the slot is also non-existent if you do assign Null like
Settings["Filter"] = Null
which means Settings[sKey] returning Null is a necessary and sufficient
indicator that sKey is not a slot in the Settings.
So, use
If IsNull(Settings["Filter"]) Then
' Settings["Filter"] does not exist...
Endif
in case you want to do something when the "Filter" key does not exist.
Regards,
Tobi "