Sample code for 30+ languages & platforms
Tcl

Keeping Query Params in a Hashtable

Demonstrates how to use a Chilkat Hashtable to hold query params and re-emit as a query param string.

Note: The ToQueryString method was added in Chilkat v9.5.0.92.

Chilkat Tcl Downloads

Tcl

load ./chilkat.dll

set success 0

set ht [new_CkHashtable]

# Add name/value pairs from an existing query param string where the values are already URL encoded.
set qp "txt=this%20is%20a%20test&color=blue&fruits=apples%26oranges"
set success [CkHashtable_AddQueryParams $ht $qp]

# Add some additional name/value pairs.
CkHashtable_AddStr $ht "name" "Jack Sparrow"
CkHashtable_AddStr $ht "movie" "Pirates of the Carribean"

# Iterate over the hash table to show what we have..

set keys [new_CkStringTable]

CkHashtable_GetKeys $ht $keys
set numKeys [CkStringTable_get_Count $keys]

set i 0
while {$i < $numKeys} {
    set key [CkStringTable_stringAt $keys $i]
    set val [CkHashtable_lookupStr $ht $key]
    puts "$key = $val"
    set i [expr $i + 1]
}

# Output for the above loop:

# color = blue
# name = Jack Sparrow
# fruits = apples&oranges
# txt = this is a test
# movie = Pirates of the Carribean

# Get all name/value pairs as a query parm string with values URL encoded
set qp [CkHashtable_toQueryString $ht]
puts "$qp"

# Result:
# color=blue&name=Jack%20Sparrow&fruits=apples%26oranges&txt=this%20is%20a%20test&movie=Pirates%20of%20the%20Carribean

delete_CkHashtable $ht
delete_CkStringTable $keys