### 取得陣列大小,如 Array1 的大小為 (3,5)
### 傳入 GetArraySize Array1 取得的值為 { 3 5 } 的 List
### 可由 [lindex [GetArraySize Array1] 0] 的方式取出 Row
### [lindex [GetArraySize Array1] 1] 的方式取出 Col
proc GetArraySize {arryName} {
set listName ""
upvar $arryName arryNameII
set arrRowMax 0
set arrColMax 0
foreach {value} [array get arryNameII] {lappend arrElment $value}
for {set i 1} {$i = [llength $arrElment]} {set i [expr $i+2]} {
set arrIdx [lindex $arrElment [expr $i-1]]
set arrRow [string range $arrIdx 0 [expr [string first "," $arrIdx 0] - 1] ]
set arrCol [string range $arrIdx [expr [string first "," $arrIdx 0] + 1] [string length $arrIdx]
]
if {$arrRow>$arrRowMax} {set arrRowMax $arrRow}
if {$arrCol>$arrColMax} {set arrColMax $arrCol}
}
return "$arrRowMax $arrColMax"
}
### 將陣列轉成List
### 因為用TCL的 array get 會連同 Array Index 同時轉成 List
### 所以另外寫一個 procedure ,將陣列內容轉成不含 Index 的 List
### 這一段才是主要的程轉換 Function
proc Array2List {srcArrName} {
upvar $srcArrName srcArrNameII
### 呼叫副程式取出陣列的 Row 及 Col 大小
set srcArrNameII_r [lindex [GetArraySize srcArrNameII] 0]
set srcArrNameII_c [lindex [GetArraySize srcArrNameII] 1]
set destListName ""
for {set i 1} {$i <= $srcArrNameII_r} {incr i } {
set temp ""
for {set j 1} {$j <= $srcArrNameII_c} {incr j } {
lappend temp 0
}
lappend destListName $temp
}
for {set i 1} {$i <= $srcArrNameII_r} {incr i } {
for {set j 1} {$j <= $srcArrNameII_c} {incr j } {
lset destListName [expr $i-1] [expr $j-1] [expr double ($srcArrNameII($i,$j))]
}
}
return $destListName
}
2008年6月4日 星期三
2008年6月2日 星期一
VB DLL 和 TCL 的應用
'################# VB DLL Class 設定 ###########
'### 開啟 VB 的 DLL 專案,並且命名為 ReCallDLL
'### 新增一個 Class 檔案 ,命名為 clsReCallDLL
'###---------- 加入以下程式碼 -----------------
Public Function testAB(a() As Variant, b()As Variant) As String
'組合第一個陣列內容
testAB = "aryStr = " & a(0) & b(0)
End Function
Public Function mathadd(a As Double, b As Double) As Double
'兩數相加
mathadd = a + b
End Function
Public Function mathadd2(a As Variant) As String
'傳回傳入字串
mathadd2 = "The Value is = " & a
End Function
'###----------------------------------------
################# TCL 的執行 Scrip ###########
### TCL 載入 DLL
package require tcom
::tcom::import ReCallDLL.dll ;#採用動態(未安裝 DLL)載入
### 若是靜態(事先安裝DLL)載入則用下面的方法
#set comUtil [::ReCallDLL::clsReCallDLL]
### 建立連接端
set comUtil [::tcom::ref createobject "ReCallDLL.clsReCallDLL"]
### TCL 執行 DLL
set b "1 2" ;#將 b 設為 List ,因為設成陣列Array 傳遞時會出現錯誤
set c "3 4" ;#將 c 設為 List ,因為設成陣列Array 傳遞時會出現錯誤
set a [$comUtil testAB b c] ;#呼叫 DLL 並執行其中的一個 testAB Function
### 傳回 aryStr = 13
set b 12 ;#將 b 設為單一數字
set c 23 ;#將 c 設為單一數字
set a [$comUtil mathadd bl cl] ;#呼叫 DLL 並執行 mathadd 將兩數相加並傳回
## 傳回 35
'### 開啟 VB 的 DLL 專案,並且命名為 ReCallDLL
'### 新增一個 Class 檔案 ,命名為 clsReCallDLL
'###---------- 加入以下程式碼 -----------------
Public Function testAB(a() As Variant, b()As Variant) As String
'組合第一個陣列內容
testAB = "aryStr = " & a(0) & b(0)
End Function
Public Function mathadd(a As Double, b As Double) As Double
'兩數相加
mathadd = a + b
End Function
Public Function mathadd2(a As Variant) As String
'傳回傳入字串
mathadd2 = "The Value is = " & a
End Function
'###----------------------------------------
################# TCL 的執行 Scrip ###########
### TCL 載入 DLL
package require tcom
::tcom::import ReCallDLL.dll ;#採用動態(未安裝 DLL)載入
### 若是靜態(事先安裝DLL)載入則用下面的方法
#set comUtil [::ReCallDLL::clsReCallDLL]
### 建立連接端
set comUtil [::tcom::ref createobject "ReCallDLL.clsReCallDLL"]
### TCL 執行 DLL
set b "1 2" ;#將 b 設為 List ,因為設成陣列Array 傳遞時會出現錯誤
set c "3 4" ;#將 c 設為 List ,因為設成陣列Array 傳遞時會出現錯誤
set a [$comUtil testAB b c] ;#呼叫 DLL 並執行其中的一個 testAB Function
### 傳回 aryStr = 13
set b 12 ;#將 b 設為單一數字
set c 23 ;#將 c 設為單一數字
set a [$comUtil mathadd bl cl] ;#呼叫 DLL 並執行 mathadd 將兩數相加並傳回
## 傳回 35
2008年6月1日 星期日
nUtella 能多益榛子果仁可可醬
自從上回老弟去義大利帶回來
La buona prima colazione con nUtella
一吃到真是驚為天人,於是到處找看台灣有沒有在賣,
後來在網路上查到好市多和大潤發都有在賣,
所以昨天就去大潤發買了一瓶,
大潤發賣的是200克包裝,一瓶要72元
進口商是:香港商亞洲費列羅有限公司台灣分公司
今天就拿來比較看看,

外觀是有差別,因為義大利的是400克包裝(歐元2.56),台灣是200克包裝(台幣72元),
背面看來也有所不同,

以口感來說,台灣的味道比較淡,而且濃稠度也沒有義大利的濃,
台灣賣的榛果味也沒有義大利的香,
台灣進口的可可醬一開封還帶點淡淡的藥味,必須將蓋子打開幾分鐘才行,
那股藥味不知道是包裝的關係還是內容物的關係?
也因為台灣進口的能多益榛子果仁可可醬濃度比較稀,
在抹麵包或餅干時可以很容易的抹上,只是要抹很厚一層
而義大利的較濃,在抹時要稍微出點力否則不容易抹上去,
不過卻只要薄薄一層就有濃濃的金沙味了。
La buona prima colazione con nUtella
一吃到真是驚為天人,於是到處找看台灣有沒有在賣,
後來在網路上查到好市多和大潤發都有在賣,
所以昨天就去大潤發買了一瓶,
大潤發賣的是200克包裝,一瓶要72元
進口商是:香港商亞洲費列羅有限公司台灣分公司
今天就拿來比較看看,
外觀是有差別,因為義大利的是400克包裝(歐元2.56),台灣是200克包裝(台幣72元),
背面看來也有所不同,
以口感來說,台灣的味道比較淡,而且濃稠度也沒有義大利的濃,
台灣賣的榛果味也沒有義大利的香,
台灣進口的可可醬一開封還帶點淡淡的藥味,必須將蓋子打開幾分鐘才行,
那股藥味不知道是包裝的關係還是內容物的關係?
也因為台灣進口的能多益榛子果仁可可醬濃度比較稀,
在抹麵包或餅干時可以很容易的抹上,只是要抹很厚一層
而義大利的較濃,在抹時要稍微出點力否則不容易抹上去,
不過卻只要薄薄一層就有濃濃的金沙味了。
訂閱:
文章 (Atom)
熱門文章
-
今天一位朋友在問我,他的電腦無法開機, 電源一開都沒畫面....怎麼辦? 通常螢幕沒有畫面的問題很多種, 第一考慮的是螢幕有沒有壞掉? 怎麼判斷呢? 1.檢查螢幕 先開螢幕的總電源,看是不是有亮電源燈? 若有表示電源輸入沒問題,再來就按螢幕的功能鍵, 看會不會跳出螢幕設定視窗...
-
前陣子玩了一些水耕的設備, 因為要天天記錄溫度、EC(電導度)、PH(酸鹼度), 顯得有點麻煩,所以打算自己 DIY 一些設備來玩玩。 首先考慮到程式開發的速度,選擇使用 Arduino 的板子來 DIY 我所購買的板子是 Arduino Leonardo, 另外購買 ...
-
魚菜共生的作法有很多種, 我所採用的是介質床加上 Bell Siphon(鐘虹吸) 產生潮汐現象, 網路上查詢的結果是這樣成功率比較高。 但是先前 DIY 的 Bell Siphon 調整了好久,才能有正常的虹吸現象, 原因就是虹吸的進水口水平難以調整, 後來去上了魚...