2009-10-25

更新 Windows 平台環境: 使用 ActiveTcl 8.6 beta-2

Active Tcl 8.6 Beta

我發現 Active Tcl 更新了安裝檔案,所以也跟著更新了。這次的更新也更新了原本附帶的套件到目前的最新版(例如說 VFS),所以我已經昇級到這個版本了。

注意:這一版的 code base 仍然是 Tcl/Tk 8.6 beta 1,可以算是針對一些套件做 upgrade 的吧。

2009-10-23

清除掉 Visual C++ 2008 Express 最近使用的專案列表

package require registry

label .show -text "Below is the list:"
grid .show -row 0 -column 0 -columnspan 2 -pady 3 -ipady 1

set count 0
set rootKey "HKEY_CURRENT_USER\\Software\\Microsoft\\VCExpress\\9.0\\ProjectMRUList"

foreach id [registry values $rootKey] {
if {[string length $id] >= 4} {
set text [registry get $rootKey $id]
ttk::checkbutton .$count -text $text -variable check($id)
grid .$count -column 0 -columnspan 4 -ipady 1 -sticky nsew
set check($id) 0
incr count 1
}
}

proc doClean {} {
foreach id [registry values $::rootKey] {
if {[string length $id] >= 4} {
if {$::check($id) == 1} {
registry delete $::rootKey $id
}
}
}

exit
}

# Let our button in next row
incr count 1

button .exit -text "Exit" -command exit
grid .exit -column 2 -row $count -pady 3 -ipady 1 -sticky nsew
button .clean -text "Clean" -command doClean
grid .clean -column 3 -row $count -pady 3 -ipady 1 -sticky nsew
使用 checkbutton 建立列表,讓使用者選擇要清除最近使用的專案列表中的哪一個。我們使用一個陣列記住目前使用者的選擇,如果使用者按 Clean,就去清掉使用者所選擇的那些項目。

Geometry Manager 使用 grid 來管理。

2009-10-10

tDom and TclXML

Tcl 是個極容易擴充的語言(並且因此影響到後面出現或者是同期的 scripting language),在處理 XML 方面,有二個主要的套件:

我會比較偏好 tDom,因為他雖然是用 C 實作,而且在架構上沒有 TclXML 的野心那麼大,但是 tDom 在管理上比較簡單(只有一個套件),不像 TclXML/TclDOM 需要好幾個套件組合起來、而且 TclDOM 隨著各個實作的不同,能力也不同(pure Tcl, Expat, libxml2)。

更多資料:TclDOM vs tDOM

TDBC 1.0 b13 已經包含 tdbc::postgres

我發現 TDBC PostgreSQL driver 已經完成了,所以小小的測試了一下(使用 PostgreSQL 8.4.1):
package require tdbc::postgres
tdbc::postgres::connection create db -user danilo -password test -port 5432

set statement [db prepare {
SELECT VERSION()
}]

$statement foreach row {
puts [dict get $row version]
}

$statement close
db close
沒錯,確實已經可以運作了,而 tdbc::postgres 主要是透過 libpg 來實作的。

另外,TDBC 同時也包含了 Oracle 的 driver,但是這一個我就沒有測試了。