#

如果您執行ezdit有任何問題,請在這裡留下您的意見。

71 個意見

SHUAN | 2009年6月14日 下午4:11

希望能多開發一些MAC OS的實用軟體!!

加油~~

Dai | 2009年6月18日 上午12:09

謝謝!! 我會盡力的。呵呵~

GO | 2009年8月4日 下午4:05

前輩;

我很久沒來了~
跟您請教個問題

set R 0.000000000000000
怎樣讓R 變成 0.00 (指定小數點位數)
還有假如 set R 0.123400000000000
怎樣讓R 變成 0.1234 (自動捨去後零呢)
><”

paul | 2009年9月21日 上午11:57

請問是成大的學長嗎?我要是要在windows底下跑一些簡單的tcl程式就直接用ezdit就可以跑了嗎?還是一定要下載http://blog.got7.org/2009/06/atcltk.html
這個程式,因為我覺得還要下載這個好麻煩

Dai | 2009年9月21日 下午5:48

不好意思~~沒注意到你的留言。指定小數位數可以用format指令:

format %.2f 0.12345

這樣的話,就會只留下小數後2位
自動捨去後面的零,可以這樣:

set R [string trimright $R 0]

Dai | 2009年9月21日 下午5:49

哦~學弟你好...
ezdit是寫tcl/tk的編輯器,所以若要執行tcl script直譯器還是需要的。如果你不愛裝Active Tcl的話,去tcl/tk的官網可以找到官方的版本,不過老實說Active Tcl....真的滿方便的。

TerryWang | 2009年10月8日 下午1:08

請問D大...

小弟從未接觸過程式語言..但由於踏上了
IT測試工作領域..想請教一下對於一個完
完全全的菜鳥而言...去買TCL的聖經來看
會有幫助嗎???還是說您有建議的方式..

p.s 我目前依照您的部落格教學..已知道
如何使用ezdit編譯出你給的範例
例如我的生日我的姓名...依此類推

但在看iplayer的時候就很吃力了..
順便一問..iplayer前十章怎不見了

真的好想學好TCL喔....

Dai | 2009年10月8日 下午5:10

看完聖經本,你會對Tcl有比較全面性的認識.如果你想要學好Tcl,這本書應該是必看,因為看書學總是比較有系統一點,這本書教了不少實務上很有幫助的例子,這可以讓你真正下海開發程式時少去很多阻力.

你可以在網頁上的 “文件” 頁籤裡找到所有關於Tcl/Tk的文件.

我有一個小建議,找一個目標,寫一個真正可以用的程式.這個程式不用大,但要真的可以吸引別人使用.這樣的學習方式,可以培養真正的實力,不然很容易一直停留在“寫玩具”的階段.

加油!! Tcl相對於其它程式語言,算是比較簡單的,希望你學習順利.

TerryWang | 2009年10月9日 下午1:14

感謝D大回覆...

給我這個新手一個好的方向..聖經本我會去買來看看的...至於寫程式的方向..姑且不論
程式是否難易..是否肥大...最想寫出來的
大概是ftp程式吧...感覺接觸過的ftp程式都不太好用!!

希望以後能進步到寫出來...再次感謝D大
以後也常常來您的部落格參觀...

Dai | 2009年10月9日 下午4:43

我之前有自己implement了一個ftp還有ftps的package,如果你需要的話....我再找給你.

Anonymous | 2009年10月14日 下午3:17

你好:想請教一下,你在網頁上可下載CrowTDE - Tcl/Tk編輯器,我裝好之後,指定我在C:\Tcl\bin的直譯軟體,但軟體一直出現無法直譯器,這要如何解決呢?謝謝回答

Dai | 2009年10月14日 下午4:43

這可能要請你貼張快照給我看,我才會知道原因.

對了CrowTDE....已經很久沒有更新了,你可以考慮用ezdit它好用很多,真的!!

biingen | 2009年10月14日 下午4:50

謝謝d大的回覆,那假若要將寫好的程式在ezdit上面模擬的話,需要設定什麼嗎?謝謝。

Dai | 2009年10月14日 下午5:13

你說的模擬是指...執行? 還是除錯?

ezdit的除錯功能被我拿掉了,因為說真的最好的除錯方法就是 "puts" .

這邊有一篇ezdit的說明,也許你可以看一下

biingen | 2009年10月14日 下午5:45

謝謝你的回覆,
我按照你的方法,
卻出現以下的錯誤訊息。
invalid command name "button"
while executing
"button .btn -text ?€œ?Œ‰?ˆ‘銝€銝‹?€ -command {puts ?€œHello World?€}"
(file "C:/Tcl/biingen/hello.tcl" line 5)
結束

Dai | 2009年10月14日 下午7:17

我猜想你應該是用tclsh執行程式吧!!你可以改用wish來執行程式,或是在程式的一開頭加上:

package require Tk

然後再執行一次,應該就可以了。

sam | 2009年11月3日 下午6:06

dai大大,有個問題想請教你一下,就是tcl/tk有沒有辦法開啟一個.tcl檔案(用button開啟選擇一個檔案的方法或在程式內寫死檔案的路徑都可以),然後執行這個.tcl程式呢?謝謝。

Dai | 2009年11月3日 下午8:25

我想你想要的功能應該是這樣吧!!

button .btn -text "Open" -command {
set f [tk_getOpenFile]
if {[file exists $f]} {source $f}
}
pack .btn

sam | 2009年11月4日 下午5:33

嗯,這真是個好方法丫,我原本想說用把檔案讀出成一字串,再用eval去執行(不知可行嗎),原來大大還有這一招,太方便了,不過我試了一下,若source a.tcl的話,a.tcl中的繁體中文會變成亂碼,我也不知道為什麼,手動在a.tcl中加入encoding big5好像也沒作用,不知哪裡出了問題,謝謝大大。

Dai | 2009年11月4日 下午10:59

1.用eval也是可以的,不會有問題。但要注意檔案內容的編碼問題,在我寫的文件第11章有提到解法,有興趣可以去看看。

2.如果你的Tcl環境有支援big5的話用下面的命令:

source -encoding big5 xxx.tcl

或是參考這一篇文章

sam | 2009年11月6日 下午6:20

Dai大大,之前有請問過你一個問題是如何embed tcl至vc++6,我看了一下tcl/tk聖經書中的範例,在C語言這部份,範例都會包含tcl.h或tk.h這個檔案,請問這二個檔案是指http://www.tcl.tk/software/tcltk/download.html所下載下來,然後指定好下載下來tcl.h的PATH的嗎,我去RUN範例檔都沒有辦法編譯成功,不好意思,我是新手比較多問題,不知大大對這部份了解嗎,謝謝。

Dai | 2009年11月6日 下午7:49

如果你是裝ActiveTcl的話,那裝好ActiveTcl在C:\Tcl\include就可以找到tcl.h這個檔案。所以你編譯的時候記得把C:\Tcl\include加入標頭檔尋找的路徑裡。

TerryWang | 2009年11月8日 下午10:18

D大...請問您之前說可以給我您寫的FTP範例...不知道可否寄給我呢?? 想多了解點..麻煩了

sam | 2009年11月9日 下午2:55

Dai大大,有關tcl embed到vc++的部份,在聖經書裡的TclAPP部份我有看了,但不是很懂,include tcl header file路徑沒問題,但範例檔也run不起來,http://cpptcl.sourceforge.net/與http://cpptk.sourceforge.net/我也有試著看能不能使用在vc++中(網頁只有教在linux上的使用,不知道有沒有支援windows),不過好像還要下載boost的程式,我下載後可能是哪裡沒設定好,run網頁裡的hello world也run不出來,真是無言丫,想請問大大,有沒有tcl embed 到vc++的經驗,無論是哪個版本的vc++都可以,或是有這方面的文件可以讓我參考一下嗎,拍水剛學TCL,這個問題我研究好久都弄不出來(我目前是用vc++6,曾經在網頁上有google到有人說vc++6好像不太能compile過tcl的程式,不知道Dai大大有沒有這方面的經驗,謝謝)。

Dai | 2009年11月9日 下午4:00

To sam : Sorry~我已經很久沒有開窗寫程式了.

Dai | 2009年11月9日 下午4:00

To TerryWang : 請你在寄一封信到我的信箱~我把你的email遺失了。

TerryWang | 2009年11月10日 下午5:54

D大我的email是 terrywang0426@gmail.com

嘟豆把子 | 2009年11月20日 下午9:03

Dai您好:
謝謝您的回答
您真是害我不淺阿,哈哈。
我本以決定在也不碰這些東西了,可是看了你寫的教學厚不知不覺的又深陷其中。
我有兩個問題可以請教您一下嗎
1.我下載了ezdit的原始碼可是卻不知道怎麼執行它,我在終端機裡打了 wish 路徑\main.tcl 可是卻出現一堆訊息
2.snack 我怎麼都裝不好,依教學打了teacup install snack 可是卻出現Bad installation: Repository "/Library/Tcl/teapot": Write access is denied訊息
去網站下載回來 可是也是不知道怎麼安裝
因為我也是mac的新手,兩樣對我都世新的東西有點頭昏
可以麻煩您幫忙嗎
謝謝

Dai | 2009年11月20日 下午10:26

呵~~害到你了不好意思!!

1.這個問題需要你把錯誤訊息貼出來才有辦法解。

2.看你貼的訊息,應該你沒有權力讀寫某些資料夾所產生的,你要用sudo來執行也許就沒問題了。

嘟豆把子 | 2009年11月20日 下午11:42

Dai
執行ezdit的錯誤訊息:
Error in startup script: dlopen(/Users/ddspapa/Documents/ezdit-src/lib_darwin/treectrl2.2.7/libtreectrl2.2.dylib, 10): no suitable image found. Did find:
/Users/ddspapa/Documents/ezdit-src/lib_darwin/treectrl2.2.7/libtreectrl2.2.dylib: no matching architecture in universal wrapper
while executing
"load "/Users/ddspapa/Documents/ezdit-src/lib_darwin/treectrl2.2.7/libtreectrl2.2.dylib" treectrl"
("package ifneeded treectrl 2.2.7" script)
invoked from within
"package require treectrl"
(file "/Users/ddspapa/Documents/ezdit-src/lib/ttnotebook.tcl" line 2)
invoked from within
"source /Users/ddspapa/Documents/ezdit-src/lib/ttnotebook.tcl"
("package ifneeded ttnotebook 1.0" script)
invoked from within
"package require ttnotebook"
(file "/Users/ddspapa/Documents/ezdit-src/lib/ttnbeditor.tcl" line 8)
invoked from within
"source /Users/ddspapa/Documents/ezdit-src/lib/ttnbeditor.tcl"
("package ifneeded ttnbeditor 1.0" script)
invoked from within
"package require ttnbeditor"
(file "/Users/ddspapa/Documents/ezdit-src/body.tcl" line 1)
invoked from within
"source [file join $appPath body.tcl]"
(procedure "::dApp::init" line 177)
invoked from within
"::dApp::init"
(file "/Users/ddspapa/Documents/ezdit-src/main.tcl" line 1153)

另外您說sudo該怎麼用阿我對mac真的不熟
您能像教白痴那樣教我嗎

嘟豆把子 | 2009年11月21日 上午12:05

dear Dai
我試加了sudo後的訊息是
Resolving snack ... [package snack 2.2 macosx-universal @ http://teapot.activestate.com]
Resolving Tcl 8.4 -is package ... [package Tcl 8.5.8 _ ... Installed outside repository, probing dependencies]
Resolving Tk 8.4 -is package ... [package Tk 8.5.7 _ ... Installed outside repository, probing dependencies]

Retrieving package snack 2.2 macosx-universal ...@ http://teapot.activestate.com ... Ok

Installing into /Library/Tcl/teapot

Installing package snack 2.2 macosx-universal
看起來像是成功了
可是我試做了你的簡易播放程式卻還是錯誤
Error in startup script: can't find package snack
while executing
"package require snack"
(file "/Users/ddspapa/Desktop/player.tcl" line 1)
和使用ezdit的狀況來看好像package都會有問題
這我現在該怎麼辦

Dai | 2009年11月21日 上午11:56

這個訊息是找不到套件所產生的問題,解決的方法如下:

1.也許是你的tcl的版本有問題,請在終端機下執行:

$ tclsh
% puts $::tcl_version
% exit

應該要輸出8.5以上的版本

2.也許是你的auto_path有問題,請在終端機下執行:

$ tclsh
% puts $::auto_path
% exit

輸出應該要包含snack安裝的目錄

嘟豆把子 | 2009年11月21日 下午1:50

dear Dai:

localhost:~ ddspapa$ tclsh
% puts $::tcl_version
8.5
% exit
localhost:~ ddspapa$ tclsh
% puts $::auto_path
/System/Library/Frameworks/Tcl.framework/Versions/8.5/Resources/Scripts /System/Library/Frameworks/Tcl.framework/Versions/8.5/Resources /usr/lib ~/Library/Tcl /Library/Tcl /System/Library/Tcl /System/Library/Tcl/8.5 ~/Library/Frameworks /Library/Frameworks /System/Library/Frameworks
% exit

看起來是沒有snack的目錄,接下來改怎麼做呢

Dai | 2009年11月21日 下午5:12

看你的輸出,你執行的Tcl好像不是ActiveTcl提供的tclsh,我們先來確定是不是這個問題,試試看你的tclsh和wish是不是正確的連到ActiveTcl提供的版本。

請先找到你tclsh放的位置,可能是在/usr/bin或是/usr/local/bin的目錄下,然後用:

$ ls -l tclsh

確保tclsh是連結到你安裝的ActiveTcl裡。

如果不是的話,就把目前的tclsh或wish刪掉,然後重新建立連結到ActiveTcl提供的版本。

如果目前的tclsh是連結到ActiveTcl,然後你還是不能執行的話,就用最後的手段,請把下面的程式加在Tcl應用程式的主程式第一行:

lappend ::auto_path "這邊放你snack套件存儲的目錄"

嘟豆把子 | 2009年11月21日 下午8:25

dear Dai:
經過您的說明我大概了解您的意思
可是我不會操作
你說先找到tclsh可是我不知道該如何進去bin這個目錄
進去了又該如何看
$ ls -l tclsh命令我是該在根目錄下打還是進到bin裡在打
還有我不知道該如何刪除tc;這個開發套件

不知道您能不能加我的msn或即時通呢
可以的話
msn fatartai@hotmail.com
yahoo fatartai@yahoo.com.tw
哇!真是太感激你呢
謝謝

嘟豆把子 | 2009年11月21日 下午9:16

dear Dai:
1.
localhost:~ ddspapa$ cd /usr/bin
localhost:bin ddspapa$ ls -l tclsh
lrwxr-xr-x 1 root wheel 8 9 19 21:19 tclsh -> tclsh8.5

localhost:~ ddspapa$ cd /usr/local/bin
localhost:bin ddspapa$ ls -l tclsh
ls: tclsh: No such file or directory

看樣子我是在/usr/bin 裡找到了不過這樣算不算是你說的連結到了Active Tcl
如果是的話是不是就只能用您所謂的最後手段了,可是我又要舉手發問了 snack套件存儲的目錄 是叫什麼名字阿我該去哪找呢?是不是/tcl/teapot

2.
另外我在Finder裡看的一些情況請教一下
我從 MAC HD/資源庫/裡可以看到一個tcl目錄
從 系統/資源庫/裡也可以看到一個tcl目錄
可是兩個內容卻不太相同
從 使用者/我的帳號/資源庫/ 卻看不到有tcl目錄
是不是在安裝的時候權限有問題

哇好頭痛阿(可是卻很刺激XD )

Dai | 2009年11月22日 上午12:29

嗯~~請試試下面的方法:

***注意哦!!下面的wish8.x可能是8.5或8.6。

1. 先確定/usr/local/bin下面有wish8.x還有tclsh8.x。如果沒有的話,就表示你要先安裝ActiveTcl。

2.刪除原來的tclsh及wish

$ rm /usr/bin/tclsh /usr/bin/wish

3.重新建立連結

$ ln -fs /usr/local/bin/tclsh8.x /usr/bin/tclsh
$ ln -fs /usr/local/bin/wish8.x /usr/bin/wish

4.然後再執行看看

最後,你用teacup安裝的套件應該都會放在 /Library/Tcl/teapot/package/macosx-universal/ 這個目錄下。

Dai | 2009年11月22日 上午12:31

補充一下,我有MSN還有Yahoo,但萬年不上,所以還是省省力別加的好~呵呵。

嘟豆把子 | 2009年11月22日 上午2:02

哇哇哇
我要瘋了。哇哈哈哈哈哈哈
Dai你真是神阿
OK啦OK啦OK啦哇哈哈
好興奮阿
我正式封你為"神人"
太感激你了
謝謝謝謝謝謝謝謝謝謝謝謝謝謝謝
謝謝真的不足以形容我的感激
太可惜沒有機會加到您的即時通 想請你吃飯說
接下來我要好好研究一下您的教學了
打完。

嘟豆把子 | 2009年11月22日 上午2:09

對了
我對您提的最後手段有一個疑問(還好用不到了)
在程式的第一行打上 lappend ::auto_path "這邊放你snack套件存儲的目錄"

那如果程式拿到別人的電腦是不是就run不起來了呢??

Dai | 2009年11月22日 下午12:21

是的~所以auto_path習慣上我只會用相對於主程式可以找得到的路徑。

你是用Snow Leopard嗎? 內建Tcl 8.5真好。

嘟豆把子 | 2009年11月22日 下午1:50

是阿我是用Snow Leopard
所以原來是有內建的tcl8.5阿
那和Active tcl不同對吧,我如果要用內建的是要用其它方式設定嗎
一般我要如何判斷它是官方的Tcl還是Active tcl呢

我的英文不好,請問有沒有中文的tcl和Mac的書可以推的呢

嘟豆把子 | 2009年11月22日 下午1:54

順便一提
我在公司用XP+IE看不到你部落格上排的標籤說

Dai | 2009年11月22日 下午4:04

1. IE6看不到頁籤是正常的。這個網站需要用IE7以上來瀏覽。

2.印像中我沒有看過中文的Tcl書籍,但對岸有簡體版的。

3.如果只從直譯器是不太容易判斷,所以你要自己注意Active Tcl的安裝路徑及內容。

嘟豆把子 | 2009年11月22日 下午9:34

謝謝你這兩天的指導。

嘟豆把子 | 2009年11月26日 下午9:28

dear Dai
請教您我在mac裡run起來的ezdit沒辦法輸入中文是怎麼回事呢?貼進去可以顯示可是卻不能輸入ㄟ

嘟豆把子 | 2009年11月26日 下午10:07

Dai
為什麼現在ezdit編輯過後沒辦法儲存呢?
儲存鍵是反白失效的呢

Dai | 2009年11月27日 上午11:45

1.因為目前的Tcl/Tk還不行在Mac下使用中文輸入法...我們只能等Tcl/Tk的開發群解決這個問題。

2.會產生不能儲存的問題,應該是程式曾經產生錯誤,但被你忽略了,才會這樣。

嘟豆把子 | 2009年12月7日 下午10:18

dear Dai:
對不起我可不可以在這裡請教您一個使用jar檔案的問題
我下載了一個java寫的播放程式aTunse在mac上我點選了jar檔可是卻出現無法啟動的訊息,我嘗試著設在終端機裡設定-cp 也始終搞不定它不知道您對這方便瞭不瞭解,冒昧了(因為我真的沒地方問)麻煩你謝謝了

Dai | 2009年12月7日 下午11:44

aTunes需要jre 1.6以上的版本,你可以在終端機下執行下面的命令,查看你的java版本

$ java -version

如果是1.5.x的話,就不可以執行

嘟豆把子 | 2009年12月8日 上午11:20

$ java -version
java version "1.6.0_15"
Java(TM) SE Runtime Environment (build 1.6.0_15-b03-219)
Java HotSpot(TM) 64-Bit Server VM (build 14.1-b02-90, mixed mode)

這個版本應該可以吧??

Dai | 2009年12月8日 上午11:27

這是他的系統需求,你有缺什麼嗎?

* Java 6 Runtime Edition (http://www.java.com/download/)

* For Linux and Mac users: mplayer or xine, cdda2wav. For ripping, lame, flac or oggenc must be installed.

嘟豆把子 | 2009年12月8日 下午12:01

dear Dai
我不知道我有沒有少什麼ㄟ 我該怎麼做才知道呢

我想也許我敘訴一遍我做的動作
我下載了 aTunes_1.13.5_installer.jar這個檔,並在檔案點兩下它就出現了安裝畫面(這說明我的電腦可執行它的jar對嗎)

接著我按下一步它就在"應用程式"裡解開了一個aTunes的資料夾,然後我就在資料夾裡的aTunes.jar點兩下它出現了一個訊息框告訴我這隻程式無法啟動

接著我到終端機做了
localhost:aTunes ddspapa$ java -jar aTunes.jar
localhost:aTunes ddspapa$
可是他沒有任何動作也沒訊息

然後我將aTunes.jar解開成另一個aTunes資料夾執行它的Main.class卻得到了這個:
localhost:aTunes ddspapa$ java net.sourceforge.atunes.Mainsettings/extendedLog.properties not found or incorrect. No filters will be applied to log
Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/log4j/Logger
at net.sourceforge.atunes.misc.log.Logger.<init>(Unknown Source)
at net.sourceforge.atunes.Main.<clinit>(Unknown Source)
Caused by: java.lang.ClassNotFoundException: org.apache.log4j.Logger
at java.net.URLClassLoader$1.run(URLClassLoader.java:200)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:188)
at java.lang.ClassLoader.loadClass(ClassLoader.java:319)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:330)
at java.lang.ClassLoader.loadClass(ClassLoader.java:254)
at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:399)
... 2 more

請問我需要做其他什麼設定或是要安裝些另外的東西嗎
Dai真是謝謝您的幫忙

sam | 2009年12月8日 下午12:08

TCL確實沒有繁體中文的書籍,只有簡體的書籍名為:TCL/TK編程權威指南(中國電力出版社),這一本是Practical Programming in Tcl and Tk的原文翻譯書,小弟我剛好有一本,有些翻出來的意思會看不太懂,我英文也沒有很好,不過看TCL TK A Developer Guide或Tcl and The Tk Toolkit都還OK,這二本也不錯,有電子書,不然TCL的書都上千元。

Dai | 2009年12月8日 下午1:05

看來 sam兄 對Tcl/Tk下了不少功夫,真是可喜可賀~~ 我好奇你都拿Tcl/Tk做什麼?

Dai | 2009年12月8日 下午1:09

To 嘟豆:

真實的情況我不太清礎,但猜想是你的mplayer沒有安裝,請參考這裡

http://mplayerosx.sourceforge.net


@@ iTunes 不好用嗎?

嘟豆把子 | 2009年12月8日 下午4:01

唉~不是iTunes不好用
我有兩個目的
1.我想找個能聽.ape音質好一點的播放器
2.前陣子和您請教了一些TCL的事勾起了我已經丟掉的對程式的興趣,可是對我而言TCL能找到的資料實在太少了(中文),所以就重新研究丟掉的JAVA。而在PC上的問題比較少,可是拿到mac上就始終搞不定,我另外也下載了YOYOPlayer也是一樣的情型。搞不定jar也就完不下去了。

嘟豆把子 | 2009年12月8日 下午4:03

對了!我有裝mplayer。

Dai | 2009年12月8日 下午4:26

唉~~其實我非常的不愛java,所以我幫不了你了...保重。

嘟豆把子 | 2009年12月8日 下午4:38

無論如何還是謝謝你的幫忙摟

Laurence | 2009年12月16日 下午2:00

Hi Dai
本來在公司中是用PsPad在開發TCL程式,
無意中發現這個好用的編輯軟體.

想請問一下,如果我開了很多檔案,如A.tcl是在c:\底下,
同樣還有另外一個A.tcl是在c:\ABC\底下,
此編輯程式可否秀出路徑?

因為PsPad會秀出路徑,這可幫助我們在改code時不會改到別的路徑的相同名稱檔案.
若沒有的話,可否增加此功能呢,謝啦~

dai | 2009年12月16日 下午3:13

好的~謝謝你的建議,我找個方法在合適的位置顯示檔案的路徑。

Laurence | 2009年12月16日 下午4:34

感激不盡 ~

Laurence | 2009年12月17日 上午10:49

Hi Dai
有關於Tcl的一個問題我想請教你一下,
我現在有一個setup.txt檔
裡面內容為:
cmip(1) 192.168.1.1
cmip(2) 192.168.1.2

我寫了一個 proc
set cmIp(1) 192.168.1.1
set cmIp(2) 192.168.1.2

proc OpenTxtfile_and_SaveEntryVariable { setupfile } {
global cmIp(1) cmIp(2)
puts $setupfile "cmIpIp(1) $cmIpIp(1)"
puts $setupfile "cmIpIp(1) $cmIpIp(2)"
close $setupfile
}

proc Run {} {
global SetupFilePath
set setupfile [ open "$SetupFilePath/setup.txt" "w" ]
OpenTxtfile_and_SaveEntryVariable $setupfile
cd [pwd]
#cd SetupConfig
exec cmd /c start cmd /k "run.bat" &
}

我想問的是,因為現在cmIp(1) and cmIp(2)是陣列
我想將它從我我的文字檔setupfile中傳進
proc OpenTxtfile_and_SaveEntryVariable
實際上像我上面這樣寫,執行時,它說它無法認得我的變數cmIp(1)
所以想請教一下,如果我要傳的話我要怎麼做才可以傳進去呢?
謝謝。

dai | 2009年12月17日 下午1:06

這一行程式出錯了:

puts $setupfile "cmIpIp(1) $cmIpIp(1)"

陣列應該是 cmIp 不是 cmIpIp

Laurence | 2009年12月17日 下午1:20

不好意思 那是我誤打的,
基本上我程式是cmIp
只是好像還是會傳不進來

所以我想請問一下 如果要把陣列傳進函數我應該還要加些什麼嗎?
謝謝.

dai | 2009年12月17日 下午2:01

陣列可以這樣傳:

proc show {varname} {
upvar $varname arr
parray arr
}

array set data [list 1 dai 2 tai]

show data

其實,我有一個建議,也許你把OpenTxtfile_and_SaveEntryVariable程序中的close $setupfile拿到Run程序裡比較好。 不然的話OpenTxtfile_and_SaveEntryVariable改傳檔案路徑,然後開/關檔案都由這個程序中完成,也是比較好的方法。

翊翾 | 2009年12月23日 上午8:58

Dai你好,有個問題想請問一下
我在ezdit下想叫出excel檔案
我引入package require tcom
他說沒有這個值
但我在cmd底下執行卻正常
是編輯器的問題嗎?

還有關pwd路徑的問題
照理說pwd應該是取我編輯那份tcl的路徑位置
但我在ezdit底下卻會指到我編輯器的位置喔

dai | 2009年12月23日 上午11:16

事實上pwd取到的並不是正在編輯tcl檔的路徑,它取到的是你系統的"目前工作路徑",所以使用pwd來取得目前tcl檔的路徑是不保險的,關於這一點ezdit可以幫你處理,你只要在執行程式對話方塊上的執行位置輸入{%D},這樣的話ezdit會保証你的工作路徑是在"目前編輯的檔案下"。

上面的方法可以取得tcl檔的執行路徑,但我比較喜歡的方法是另一種,如果你有興趣的話,可以參考文件Q2那一個章節。

正常的情況不管是在command line或是在ezdit裡,執行package require tcom都會有一樣的結果,除非你執行的是不同直譯器,或是你有修改到::auto_path這個全域變數。

翊翾 | 2009年12月23日 下午1:05

Dai你好
感謝你詳細幫我解答,我對於pwd的用法清楚許多
我已經參考過Q2文件,感謝

至於tcom的部份
我是想開起Excel檔案
但我執行的時候是以tclsh.exe
所以我發現到必須要以wish.exe
或者是在tclsh.exe執行底下
多加上package require Iwidgets
已經可以正常運作

Dai的編輯器真的很方便喔(笑)

dai | 2009年12月23日 下午2:07

呵 ~ 很高興你喜歡ezdit。

Theme Design by devolux.org. Converted by Wordpress To Blogger for WP Blogger Themes. Sponsored by iBlogtoBlog
This template is brought to you by : allblogtools.com | Blogger Templates