VBMAN.ToolsDic - Dictionary Tool Object
Overview
VBMAN.ToolsDic provides extended functionality for dictionary objects, including deep copy, merge, URL encoding conversion, etc.
Methods
DeepCopy
Deep copy dictionary object
vb
Public Function DeepCopy(srcDic As Scripting.Dictionary) As Scripting.DictionaryParameters:
srcDic- Source dictionary
Returns: New dictionary object
Description:
- Currently only implements first-level value copy
- Object types use Set assignment
Example:
vb
Dim original As New Scripting.Dictionary
original("key1") = "value1"
original("key2") = 123
' Deep copy
Dim copy As Scripting.Dictionary
Set copy = VBMAN.ToolsDic.DeepCopy(original)
' Modifying copy does not affect original dictionary
copy("key1") = "modified"
Debug.Print original("key1") ' Output: value1OverWrite
Merge dictionary to target dictionary
vb
Public Sub OverWrite(DistDic As Scripting.Dictionary, srcDic As Scripting.Dictionary, Optional OnlyKey As Boolean = True)Parameters:
DistDic- Target dictionarysrcDic- Source dictionaryOnlyKey- Whether to only merge existing keys (default True)
Description:
- Supports recursive merging of nested dictionaries
OnlyKey=Trueonly updates keys that exist in target dictionaryOnlyKey=Falseadds all keys from source dictionary
Example:
vb
Dim target As New Scripting.Dictionary
target("a") = 1
target("b") = 2
Dim source As New Scripting.Dictionary
source("a") = 100 ' Exists
source("c") = 300 ' Does not exist
' Only merge existing keys
VBMAN.ToolsDic.OverWrite target, source, True
Debug.Print target("a") ' 100
Debug.Print target.Exists("c") ' False
' Merge all keys
VBMAN.ToolsDic.OverWrite target, source, False
Debug.Print target("c") ' 300ToWwwFormUrlencoded
Generate www-form-urlencoded content
vb
Public Function ToWwwFormUrlencoded(Dic As Scripting.Dictionary) As StringParameters:
Dic- Dictionary object
Returns: URL encoded format string
Example:
vb
Dim params As New Scripting.Dictionary
params("name") = "Zhang San"
params("age") = 25
Dim encoded As String
encoded = VBMAN.ToolsDic.ToWwwFormUrlencoded(params)
' Output: name=Zhang San&age=25FromWwwFormUrlencoded
Parse www-form-urlencoded content
vb
Public Function FromWwwFormUrlencoded(Content As String, Dic As Scripting.Dictionary) As BooleanParameters:
Content- URL encoded format stringDic- Dictionary object to receive result
Returns: True=success, False=failure
Example:
vb
Dim params As New Scripting.Dictionary
Dim success As Boolean
success = VBMAN.ToolsDic.FromWwwFormUrlencoded("name=Zhang San&age=25", params)
Debug.Print params("name") ' Zhang San
Debug.Print params("age") ' 25TowLevelDicAssign
Two-level node dictionary assignment
vb
Public Sub TowLevelDicAssign(Dic As Scripting.Dictionary, Lv1Name As String, Lv2Name As String, Value As Variant)Parameters:
Dic- Dictionary objectLv1Name- First level key nameLv2Name- Second level key nameValue- Value to assign
Description:
- Automatically creates if first level key does not exist
- Convenient for operating nested dictionary structures
Example:
vb
Dim data As New Scripting.Dictionary
' Assign two-level structure
VBMAN.ToolsDic.TowLevelDicAssign data, "user", "name", "Zhang San"
VBMAN.ToolsDic.TowLevelDicAssign data, "user", "age", 25
Debug.Print data("user")("name") ' Zhang San
Debug.Print data("user")("age") ' 25Comprehensive Examples
Example 1: Dictionary Merge
vb
Private Sub MergeDictionaries()
Dim defaults As New Scripting.Dictionary
defaults("host") = "localhost"
defaults("port") = 8080
defaults("timeout") = 30
Dim config As New Scripting.Dictionary
config("port") = 9090 ' Override default value
' Merge configuration
VBMAN.ToolsDic.OverWrite config, defaults, False
Debug.Print config("host") ' localhost
Debug.Print config("port") ' 9090
Debug.Print config("timeout") ' 30
End SubExample 2: HTTP Parameter Processing
vb
Private Sub BuildQueryString()
Dim params As New Scripting.Dictionary
params("search") = "vb6"
params("page") = 1
params("size") = 20
' Generate URL parameters
Dim query As String
query = VBMAN.ToolsDic.ToWwwFormUrlencoded(params)
Debug.Print "https://api.example.com/search?" & query
' Output: https://api.example.com/search?search=vb6&page=1&size=20
End SubExample 3: Nested Configuration Structure
vb
Private Sub BuildNestedConfig()
Dim config As New Scripting.Dictionary
' Build nested configuration
VBMAN.ToolsDic.TowLevelDicAssign config, "database", "host", "localhost"
VBMAN.ToolsDic.TowLevelDicAssign config, "database", "port", 3306
VBMAN.ToolsDic.TowLevelDicAssign config, "cache", "enabled", True
VBMAN.ToolsDic.TowLevelDicAssign config, "cache", "ttl", 3600
' Output JSON
Dim json As New cJson
json("config") = config
Debug.Print json.Encode
End SubBest Practices
- Deep Copy Note: Current version only deep copies first level, nested objects still need attention
- Merge Strategy: Choose
OnlyKeyparameter based on requirements - URL Encoding: Use with
ToolsHttp.UrlEncodeto handle special characters - Nesting Level:
TowLevelDicAssignonly supports two-level structure