トップページtech
981コメント378KB

●●●●TCL/TKなら俺に聞け 2●●●●

レス数が950を超えています。1000を超えると書き込みができなくなります。
0001デフォルトの名無しさん2007/05/01(火) 14:52:44
【英語サイト】
プロジェクト本拠地
http://tcl.sourceforge.net/
最新版ソースコード
ftp://ftp.tcl.tk/pub/tcl/nightly-cvs/
The Tcler's Wiki
http://wiki.tcl.tk/
The comp.lang.tcl Newsgroup
http://groups.google.com/group/comp.lang.tcl/
ActiveTcl
http://www.activestate.com/products/activetcl/

【日本語サイト】
もっとTcl/Tk
http://www.interq.or.jp/japan/s-imai/tcltk/
Tcl/Tk Scripting Laboratory
http://www.geocities.jp/urano343/tcltk.html
Tcl/Tk Primer
http://mibai.tec.u-ryukyu.ac.jp/~oshiro/Doc/tcltk_primer/
Tcl 8.4.1 Manual Command Reference
http://www.freesoftnet.co.jp/tclkits/doc/TclCmdRef/tcl_contents_jp.htm
CategoryTclTk - mynote
http://reddog.s35.xrea.com/wiki/CategoryTclTk.html

【前スレ】
●●●●TCL/TKなら俺に聞け●●●●
http://pc11.2ch.net/test/read.cgi/tech/1033628416/
0002デフォルトの名無しさん2007/05/01(火) 15:06:41
待ってました!
0003デフォルトの名無しさん2007/05/01(火) 15:16:44
待ってたならおまえが建てろよw
8.5a6が出たので来てみればdat落ちしてるし
0004デフォルトの名無しさん2007/05/01(火) 19:27:39
なんか急に落ちたよね
0005デフォルトの名無しさん2007/05/01(火) 20:30:10
前スレは4年半も持ったので、このスレも2012年くらいまではいけるという予言
0006デフォルトの名無しさん2007/05/01(火) 23:55:07
                / ̄ ̄\
              /  ヽ_  .\
              ( ●)( ●)  |     ____
              (__人__)      |     /      \
              l` ⌒´    |  / ─    ─  \
             . {         |/  (●)  ( ●)   \
               {       / |      (__人__)      |
          ,-、   ヽ     ノ、\    ` ⌒´     ,/_
         / ノ/ ̄/ ` ー ─ '/><  ` ー─ ' ┌、 ヽ  ヽ,
        /  L_         ̄  /           _l__( { r-、 .ト
           _,,二)     /            〔― ‐} Ll  | l) )
           >_,フ      /               }二 コ\   Li‐'
        __,,,i‐ノ     l              └―イ   ヽ |
                    l                   i   ヽl

             2007年 5月1日 糞スレにて
0007デフォルトの名無しさん2007/05/01(火) 23:57:49
>>1
986で落ちたか
0008デフォルトの名無しさん2007/05/02(水) 12:17:37
TCL\TKで書かれたアプリって例えばどんなものがあるんでしょうか?
0009デフォルトの名無しさん2007/05/02(水) 13:35:18
Getleftとか
0010デフォルトの名無しさん2007/05/02(水) 16:47:22
PgAccess
aMSN
TkSQLite
TkDiff
TkCVS

ちょっと知られてるのはこんなもんすか・・・。
0011デフォルトの名無しさん2007/05/03(木) 06:03:04
tknamazu と tkppxp に世話になった人は多いんでは。
あの頃はLinuxのデスクトップ回りがあまりにウンコ品質だったんで、
tkが神に思えた。
0012デフォルトの名無しさん2007/05/10(木) 05:16:32
Filerunnerを今でも使っている俺が来ましたよ
0013デフォルトの名無しさん2007/05/12(土) 00:35:15
http://bitwalk.blogspot.com/
bitWalkってこっちでTclのことをゴソゴソやってたんだな!
今まで気がつかなかったぜ!!
0014デフォルトの名無しさん2007/06/17(日) 00:04:31
hosyul/tk
0015デフォルトの名無しさん2007/06/18(月) 03:43:58
やっぱ age るわ
0016デフォルトの名無しさん2007/06/18(月) 16:13:39
Tk8.5のCVS HEADでttk::dialogが予告無く消えてて困った。
おまえらもきおつけろ
0017デフォルトの名無しさん2007/06/18(月) 23:54:50
8.5の正式版っていつになったら出るんだろうな。
0018デフォルトの名無しさん2007/06/19(火) 23:33:28
tileのtreeviewの使い勝手やルック&フィールと速度がいまいちなんだなぁ
本家に取り込まれるならもう少しがんばってほしい
panedも妙に重いし...本家のpanedwindowはweightが指定できないのなんとかならんのかなぁ
0019デフォルトの名無しさん2007/06/20(水) 03:02:08
>>18
ttk::treeviewは将来なくなるかもしれないからきおつけろ。
0020デフォルトの名無しさん2007/06/21(木) 00:12:13
>>19
treectrlを使うことにしたよ。速度も外観もなかなかイイ
0021デフォルトの名無しさん2007/06/28(木) 13:14:37
×ティックルティーケー
○ティコゥスラァッシティーケィ

英語は発音大事。
0022デフォルトの名無しさん2007/06/28(木) 20:48:55
ところでActiveTcl8.4.15は出ないのかね・・・。
0023本田2007/08/02(木) 23:05:36
>ActiveTcl 8.4.15.0 July, 2007
> includes Expect for Windows
>ActiveTcl 8.5.0.0 Beta 8 July, 2007
http://www.tcl.tk/
0024デフォルトの名無しさん2007/08/03(金) 17:30:19
Tcl8.5をCVS HEADに上げたらIncrTclが動かなくなった
おまえらもきおつけろ
0025デフォルトの名無しさん2007/08/04(土) 00:10:21
アイコンも替わった
0026デフォルトの名無しさん2007/08/04(土) 01:07:13
Tcl8.5のHEADはまじやべえ。Tktableもうごかねえ・・・。
0027デフォルトの名無しさん2007/08/04(土) 15:13:06
CVSのHEADを勝手にビルドして羽後かねぇとほざいているやつがウザイ
0028デフォルトの名無しさん2007/08/04(土) 18:32:52
勝手にビルドっていうけど、誰かが試してバグを見つけていかないといけないんだぜ。
なんでうざいんだぜ。
0029本田2007/08/27(月) 08:11:15
>Legacy Tcl
http://sourceforge.net/projects/legacytcl/
>Tcl in the legacy applications world: includes a Cobol/Tcl interface,
> an LDAP directory browser/manager and a set of tk/widgets with strong formatting.
0030デフォルトの名無しさん2007/08/29(水) 18:20:11
ネットワークプログラミングについて解説してあるサイトってありますか?
0031本田2007/08/29(水) 22:53:15
>>30

>telnet
http://wiki.tcl.tk/684
0032デフォルトの名無しさん2007/08/30(木) 09:38:55
>>31
サンキュー! ああでも難しそうだ。
0033デフォルトの名無しさん2007/09/16(日) 23:50:53
panedwindowに関する質問です。
以下のコードで、sashの位置を求めると
"5 2"
という値が返ってくるのですが、これはどういう意味なのでしょうか?
(画面上ではsashは横幅1000くらいのメインウインドウの左右中央に表示されています)

またsash placeで値100 0を設定後、再び取得しても、設定した値とは違う値"6 2"が返ってきます。
これはwidgetのバグでしょうか?
環境はwindowsXP、ActiveTcl 8.4.15です。

panedwindow .m
pack .m -fill both -expand yes

frame .m.l
frame .m.r

.m add .m.l .m.r

text .m.l.t
text .m.r.t
pack .m.l.t
pack .m.r.t

.m.l.t insert end [.m sash coord 0]
.m sash place 0 100 0
.m.l.t insert end [.m sash coord 0]
0034デフォルトの名無しさん2007/09/17(月) 18:55:09
再描画のじおめとりの再計算タイミングとかかな
Linux@ActiveTclでやってみると 100 2 と要望どおりになるな
Winsows版のバグかもなあ
0035デフォルトの名無しさん2007/09/20(木) 22:11:06
>>34
回答ありがとうございます。
誰も人がいないのかと思い、別の場所で聞いてしまっていました。すみません。
updateを挟むと解決するようです。
0036デフォルトの名無しさん2007/09/21(金) 22:10:46
dqkitの8.4.13版から8.5版に乗換えたら日本語が文字化けしてしまった!?
unwrapするとcp932.encもshiftjis.encも入っているけど使ってないのか??
取敢えず8.4.版に戻るか
0037デフォルトの名無しさん2007/09/22(土) 00:56:48
>>36
http://reddog.s35.xrea.com/wiki/Starkit%20for%20TclTk8.5.html
これ関係?
0038デフォルトの名無しさん2007/09/23(日) 16:20:31
ActiveStateの有償のやつだと、バイナリ化する事が出来るみたいだけど、
使われてる方いますか?
0039デフォルトの名無しさん2007/09/23(日) 21:17:51
>>38
有償版でもただのstarkitなんちゃうん?
フリーのActiveTclにもbasekitがついてるので
それでいいんちゃうん?
0040382007/09/23(日) 23:50:01
恥を忍んで初心者レベルの質問をするのですが、
Tcl/Tkではstdinを一旦closeして、再openする事は出来ないのでしょうか?
ActiveTclのExpectで、既に存在するファイルを読み込ませようとして

close stdin
set stdin [open "testbinaryfile.dat" "r"]
fconfigure stdin -translation binary

とかやってみても、うまくいかず…。

>>39
TclAppなるものを使って、バイトコードを専用インタプリタでラップする
構成みたいです。
ttp://aspn.activestate.com/ASPN/docs/Tcl_Dev_Kit/4.0/TclApp.html
ターゲット環境にTcl/Tkのインタプリタをインストールする必要が無いとか、
ソースを見られたくないとか云う用途に使うみたいです。
0041デフォルトの名無しさん2007/09/24(月) 00:48:29
標準入力を閉じるのはたぶん無理。

set fd [open testbinaryfile.dat r]
fconfigure $fd -translation binary
set data [read $fd]
0042382007/09/24(月) 01:25:05
どうも。

>>41
expectに任意のファイルを読ませる為には、
1)外側(expect(1)やtclsh)でリダイレクトさせるか
2)exp_spawn等で、cat(1)するだけのコマンドを開く
しかないみたいですね。むぅ…。
0043デフォルトの名無しさん2007/09/24(月) 10:44:10
そもそもset stdin [open...]はstdinという名前の変数に新しく出来たファイルハンドル文字列を代入しているだけでしょ。
「stdin」っていう文字列が標準入力を表現するファイルハンドルだよ。

付け替えはたぶん dup を使うんじゃないかな?Tclxに入ってる

package require Tclx

set f [open aaa.txt]
dup $f stdin

puts [read stdin]
0044382007/09/24(月) 13:10:16
>>43
試してみたのですが、>>43のdupをやってから、package require Expectしないと、
うまくいかないみたいです。こんなモノなんでしょうか?

>>39で紹介されたstarkit化(やstarpack化)に不安が…。
0045デフォルトの名無しさん2007/09/24(月) 19:01:05
普通にファイルを開くんじゃなくてstdinに流し込みたいってどういう状況なん?
0046382007/09/24(月) 22:11:31
やろうとしてる事は、バイナリファイルの中からパターンを拾って、
マッチした付近で少し加工(殆どは元ファイルのコピー)なんですが、
うまくいってません。

>>45
expect_userに食わせる為にはstdinじゃないと駄目だからです。
expect_userだと、入力のコピーをするのに、自前で、
puts $expect_out(0,string) とかやらないといけないらしく、
Expectを使うメリットが怪しくなってきました。
0047デフォルトの名無しさん2007/09/24(月) 22:40:08
それどう考えてもExpectを使うところじゃなくね?
0048デフォルトの名無しさん2007/09/24(月) 23:48:56
Tclのobjc.objvのI/Fは別途後で作ってやるとして、そういう中身はCで書いた方がはやくないか?
0049382007/09/25(火) 00:46:23
>>47-48
うん、そんな気がしてきました。

expect_user {...} の中で、read stdin とかやると、期待とは違う振舞いに
なったりするみたいなので、Expectを使わない方向で考え直します。
0050デフォルトの名無しさん2007/09/25(火) 06:14:59
TCLは終わる予感がするね・・・昔は散々使ってたのに・・・
0051382007/09/25(火) 06:39:39
>>50
www.oreilly.comからTcl/Tk本が完全に消えてますね。
0052デフォルトの名無しさん2007/09/25(火) 11:11:11
最初の空白までがコマンドって文法のお陰で、シェルとの相性は良いんだけどなぁ
0053デフォルトの名無しさん2007/09/25(火) 18:45:35
bashやtcshに取って代われる力がtclshには無かった
0054本田2007/09/25(火) 21:07:53
>>50
TKはGUIとして他の言語とコラボレーションする例は多いのに、
TCLは冷遇されてる、
TCLはTKのおまけとして盲腸のような存在なるかもしれない。
0055デフォルトの名無しさん2007/09/25(火) 21:55:27
なんでも文字列として扱ってしまえってUnix的思想の象徴のような言語だと思う
0056デフォルトの名無しさん2007/09/25(火) 22:48:53
>>51
検索したらあるけど。。。
0057デフォルトの名無しさん2007/09/25(火) 22:59:03
OusterhoutのTcl本が8.5の内容で書き直されるっていう話を結構前から聞いてる気がするけど
肝心の8.5が全然正式版にならんな。
0058デフォルトの名無しさん2007/09/25(火) 23:05:52
もうRuby/TKの時代になったのか
0059デフォルトの名無しさん2007/09/26(水) 00:10:10
EDAの分野では当分デフォ
0060本田2007/09/26(水) 20:39:38
>Why Threads Are A Bad Idea (for most purposes).
> This was an Invited Talk at the 1996 USENIX Technical Conference (January 25, 1996).
> The talk compares the threads style of programming to an alternative approach, events,
> that use only a single thread of control.
> Although each approach has its weaknesses, events result in simpler,
> more manageable code than threads,
> with efficiency that is generally as good as or better than threads.
> Most of the applications for which threading is currently recommended
>(including nearly all user-interface applications)
> would be better off with an event-based implementation.
> The slides for the talk are available in PowerPoint or PDF format.
> There isn't a written paper that corresponds to this talk.
http://home.pacbell.net/ouster/
http://home.pacbell.net/ouster/threads.ppt
http://home.pacbell.net/ouster/threads.pdf
0061デフォルトの名無しさん2007/09/26(水) 22:12:33
>>60
未だにその話を知らない奴も居たのか…
Guido とか Matz とか、言語設計者には並列処理を軽んじる人が少なからず居るのは
何でだろうね。実装が面倒だからか、ショボイマシンしか触った事が無いのか…
0062デフォルトの名無しさん2007/09/26(水) 22:29:22
そのスライドの7枚目にある

Callbacks don't work with locks.

ってどういう意味?
0063本田2007/09/26(水) 22:43:01
>>61

恥ずかしながら知らんかった。

>>62

Deadlock問題のことか?

>Deadlock
http://en.wikipedia.org/wiki/Deadlock
0064382007/09/26(水) 23:24:53
>>56
すいません、JavaScript切ってました(入れると正しく検索されます)。
0065382007/09/26(水) 23:33:34
>>61
そう云うのは、OSが面倒を見るべき問題だと思ってるとか、
あるいは、細粒度処理に興味がないとか…。
0066デフォルトの名無しさん2007/09/27(木) 08:32:38
>>63
たぶんdeadlockの話だと思うが、thread+callback関数の場合に
特有の問題とはなんなのだろう?
0067本田2007/09/27(木) 21:29:44
>>60

>2007年05月08日
>Event-driven Programming for Robust Software
http://www.ce-lab.net/ringo/archives/2007/05/08/

>Rob von Behren, Jeremy Condit and Eric Brewer (UCB)
>Why Events Are A Bad Idea (for high-concurrency servers)
>Proceedings of HotOS 03, May 2003
http://www.spa.is.uec.ac.jp/~kinuko/survey/body/events-are-bad.html
http://www.cs.ualberta.ca/~paullu/C498/events.bad.idea.vonbehren.pdf

>= Event-driven Programming for Robust Software =
http://www.ce-lab.net/ringo/events_robust.html
http://pdos.csail.mit.edu/~rtm/papers/dabek:event.pdf

>On the duality of operating system structures
http://www.sics.se/~adam/pt/duality78.pdf

>Protothreads: simplifying event-driven programming of memory-constrained embedded systems
http://www.sics.se/~adam/dunkels06protothreads.pdf
http://www.sics.se/~adam/dunkels07programming.pdf

>"Combining Events and Threads for Scalable Network Services --- Implementation and evaluation of monadic, application-level concurrency primitives",
> by Peng Li and Steve Zdancewic, 2007
http://www.seas.upenn.edu/~lipeng/homepage/papers/lz07pldi.pdf
http://www.seas.upenn.edu/~lipeng/homepage/unify.html
http://www.seas.upenn.edu/%7Elipeng/unify/unify-0.0.1.tar.gz
0068デフォルトの名無しさん2007/09/27(木) 21:44:38
みんなよろこべTcl8.5がついに!!!!
















http://www.tcl.tk/software/tcltk/8.5.html
アルファからベータになった。
0069デフォルトの名無しさん2007/09/27(木) 22:44:49
やっと仕様凍結か。
8.5のお気に入り機能

1. inオペレーター
2. switchの高速化
3. namespace ensemble

0070デフォルトの名無しさん2007/09/27(木) 22:55:45
  _________ 
  (遠く宇宙のラップを)
   ̄ ̄ ̄\| ̄ ̄ ̄ ̄ 
http://www.premiumtv.12gbfree.com/?X3/?rSTV=New+Star+Wars+Gangsta+Rap
0071デフォルトの名無しさん2007/09/30(日) 08:42:31
8.5 で bind のキー定義が複数書けるようになって欲しかったよ。
0072デフォルトの名無しさん2007/10/02(火) 02:53:59
>54
でもやっぱりtkのコードを一番書きやすいのはTclだと思う。
Python/tkやRuby/tkも弄ったが、凄く書きにくいと思った。
0073デフォルトの名無しさん2007/10/03(水) 02:01:30
spinboxもtile対応してくれよ...
ほかのtileウィジェットとheightあわねーし...
0074デフォルトの名無しさん2007/10/03(水) 21:41:05
>>73
なんやしらんけどOSXでの実装の問題で
どうたらこうたらとJeffがゆってた気がする。
0075本田2007/10/05(金) 06:02:42
>>68
>Tcl/Tk 8.4.16 Sep 21, 2007
> Download Tcl/Tk 8.4.16
http://www.tcl.tk/
0076デフォルトの名無しさん2007/10/23(火) 16:03:51
tkの概観をWindowsXPスタイルみたいに変更できますか?
0077デフォルトの名無しさん2007/10/23(火) 22:30:31
>>76
tile/ttk使え
0078デフォルトの名無しさん2007/10/24(水) 23:50:04
そんなばながー
0079デフォルトの名無しさん2007/10/31(水) 23:43:39
久々にtcl wikiみたら、なんか見た目がかわってた
0080デフォルトの名無しさん2007/11/04(日) 10:21:30
tcl/tk ver8.4.16 コンパイルしてtbcにしたら64bit足し算間違えるようになった。
0081デフォルトの名無しさん2007/11/04(日) 19:39:02
ソースをUP
0082デフォルトの名無しさん2007/11/05(月) 22:47:37
>80
足し算のソースは set sum [expr $a+$b] 
そう云えば expr {$a+$b} と expr $a+$b は32bit演算では同じになるけど64bitでやると違ってしまう????
0083デフォルトの名無しさん2007/11/08(木) 13:29:27
邦訳されているリファレンス本の値段がチョー高すぎる
こりゃだめだorz
0084デフォルトの名無しさん2007/11/08(木) 19:13:15
どうせ古いやつだろ。イラネ!
0085デフォルトの名無しさん2007/11/09(金) 00:56:19
ActiveTcl8.4.9で、DOMでXMLを扱いたいんだけど、


package require dom

set afp [open "AAA.xml"]
set adoc [dom::DOMImplementation parse [read $afp]]
set aroot [dom::document conf $adoc -documentElement]


までは良くて、RootNodeを取得できるんだけど、
Root以下のNodeが取得できない。

dom::selectNode $aroot "//AA"

てやっても帰ってくるリストは空。(AAはXMLに含まれる要素名)
なんでダメなの?
0086デフォルトの名無しさん2007/11/09(金) 20:23:56
AAA.xml見せい
0087デフォルトの名無しさん2007/11/09(金) 20:33:02
あとtcl domよりtdomのほうがおすすめだ。速い。
0088デフォルトの名無しさん2007/11/10(土) 17:30:54
>>86
ごめん、都合上見せられないんだ。
一昨日は上手くいったのに・・・

>>87
試してみます。
0089デフォルトの名無しさん2007/11/17(土) 11:08:39
>80 自己レスポ
ver8.4で64bit演算するときはwide()を使うらしい
wideなんて関数知らんかった。
ver8.5関連の頁をみていると8.5ではwide()使わなくても64bit演算できると書いてあるので気がついた。8.4の仇花か。
兎も角一応まにあった。 お騒がせ

0090本田2007/12/08(土) 11:36:23
>TkSQLite
http://reddog.s35.xrea.com/wiki/TkSQLite.html
>What is This?
>TkSQLite is a GUI database manager for SQLite implemented by Tcl/Tk.
>It can manage SQLite version2.8 and SQLite version3.x database.
> And it can handle many encodings like Shift-JIS, EUC-JP and Windows native milti-byte encodings not only UTF-8.
> And it can run on Windows and Linux and MacOSX as native Look & Feel. And it's Freeware.
0091本田2007/12/14(金) 18:00:36
Tcl/Tk 8.5.0 RC3
ftp://ftp.tcl.tk/pub/tcl/tcl8_5/tcl8.5.0rc3-src.tar.gz
ftp://ftp.tcl.tk/pub/tcl/tcl8_5/tk8.5.0rc3-src.tar.gz
ftp://ftp.tcl.tk/pub/tcl/tcl8_5/tcl8.5.0rc3-html.tar.gz
ftp://ftp.tcl.tk/pub/tcl/tcl8_5/tcl850rc3-src.zip
ftp://ftp.tcl.tk/pub/tcl/tcl8_5/tk850rc3-src.zip
0092デフォルトの名無しさん2007/12/14(金) 23:08:49
rc3出るの早すぎね?このまえrc2出たばっかじゃん?
0093本田2007/12/15(土) 00:34:06
>>92
RC2とRC3の間は、約3日間。
0094本田2007/12/15(土) 08:10:05
Tcl/Tk 8.5.0 RC4
ftp://ftp.tcl.tk/pub/tcl/tcl8_5/tcl8.5.0rc4-src.tar.gz
ftp://ftp.tcl.tk/pub/tcl/tcl8_5/tk8.5.0rc4-src.tar.gz
ftp://ftp.tcl.tk/pub/tcl/tcl8_5/tcl8.5.0rc4-html.tar.gz
ftp://ftp.tcl.tk/pub/tcl/tcl8_5/tcl850rc4-src.zip
ftp://ftp.tcl.tk/pub/tcl/tcl8_5/tk850rc4-src.zip
0095デフォルトの名無しさん2007/12/15(土) 17:40:19
rc4出るの早すぎね?このまえrc3出たばっかじゃん?
0096デフォルトの名無しさん2007/12/15(土) 18:33:04
うおおおこのペースなら年末までにTcl/Tk9.0だな!
0097本田2007/12/15(土) 22:04:32
>>95
RC3とRC4の間は、約1日間。
0098本田2007/12/17(月) 23:22:46
>MinGW Cross Compiler
http://sourceforge.net/projects/mingw-cross
>The aim of this project is to provide and maintain MinGW
>(Minimalist GNU-Win32, http://www.mingw.org) cross-compiler package for Linux

> Project Admins : bitwalkProject Admin
> Developers : 1
0099本田2007/12/18(火) 18:03:59
>>94
Tcl/Tk 8.5.0 RC5
ftp://ftp.tcl.tk/pub/tcl/tcl8_5/tcl8.5.0rc5-src.tar.gz
ftp://ftp.tcl.tk/pub/tcl/tcl8_5/tk8.5.0rc5-src.tar.gz
ftp://ftp.tcl.tk/pub/tcl/tcl8_5/tcl8.5.0rc5-html.tar.gz
ftp://ftp.tcl.tk/pub/tcl/tcl8_5/tcl850rc5-src.zip
ftp://ftp.tcl.tk/pub/tcl/tcl8_5/tk850rc5-src.zip
0100本田2007/12/18(火) 18:07:11
>>96
年末までに、Tcl/Tk 8.5.0 RC10だろう。(笑)
0101デフォルトの名無しさん2007/12/18(火) 18:33:52
rc5出るn(ry
0102本田2007/12/19(水) 02:01:17
>>99
Tcl 8.5.0 RC6
ftp://ftp.tcl.tk/pub/tcl/tcl8_5/tcl8.5.0rc6-src.tar.gz
ftp://ftp.tcl.tk/pub/tcl/tcl8_5/tcl850rc6-src.zip
0103デフォルトの名無しさん2007/12/19(水) 02:13:18
rc6(ry
バグ報告まとまってから出そうよw
0104本田2007/12/19(水) 04:21:33
>>102
Tcl/Tk 8.5.0
ftp://ftp.tcl.tk/pub/tcl/tcl8_5/tcl8.5.0-src.tar.gz
ftp://ftp.tcl.tk/pub/tcl/tcl8_5/tk8.5.0-src.tar.gz
ftp://ftp.tcl.tk/pub/tcl/tcl8_5/tcl8.5.0-html.tar.gz
ftp://ftp.tcl.tk/pub/tcl/tcl8_5/tcl850-src.zip
ftp://ftp.tcl.tk/pub/tcl/tcl8_5/tk850-src.zip
0105本田2007/12/19(水) 04:23:03
>>104
一週間早いクリスマスプレゼント。
0106デフォルトの名無しさん2007/12/19(水) 20:40:38
てぃくる/てぃーけー?
てぃっくる/てぃーけー?
0107デフォルトの名無しさん2007/12/19(水) 20:41:14
てぃーしーえる/てぃーけー?
0108デフォルトの名無しさん2007/12/19(水) 21:44:49
>104
どれを開いても URL Not Found と出るばかり 何なんだ???
0109デフォルトの名無しさん2007/12/19(水) 21:46:18
>102,104
どれを開いてもURL Not Found と出るばかり 何なんだこれは????
0110本田2007/12/20(木) 01:04:21
>>109
ftp://ftp.tcl.tk/pub/tcl/tcl8_5
0111本田2007/12/20(木) 02:31:01
>>109
http://sourceforge.net/project/showfiles.php?group_id=10894
0112デフォルトの名無しさん2007/12/20(木) 17:43:39
いまだにTcl使っている人いるんだなー
0113デフォルトの名無しさん2007/12/21(金) 08:21:18
アナウンスでたね。上に出てるURLは先にもれてたのかな。
0114デフォルトの名無しさん2007/12/21(金) 23:42:59
さっそくだがベンチマーク取ろうぜ
0115本田2007/12/23(日) 15:47:41
>>98
http://sourceforge.net/project/showfiles.php?group_id=204414

>[PRODUCT] Tcl/Tk
>Latest tcltk8.5.0-011 Notes (2007-12-21 21:27)
> tcltk8.5.0-011-20071222.exe Mirror 6723504 9 i386 .exe (32-bit Windows)
> tcltk8.5.0-011-build_script.tar.gz Mirror 1565623 0 Other Other Source File
0116デフォルトの名無しさん2007/12/23(日) 17:22:37
ActiveTcl8.5まだあ
0117デフォルトの名無しさん2007/12/23(日) 18:19:04
>>116
もう出た。もう出たけど、ライブラリは付いていない罠。
ライブラリは8.4のを使うみたい?
0118デフォルトの名無しさん2007/12/31(月) 09:21:10
>>117
http://groups.google.com/group/comp.lang.tcl/topics

Is ActiveTcl 8.5 release to be used as it is?
の議論によると、今のところ8.4に上書きするのが正しいらしい。
0119本田2008/01/01(火) 22:35:05
>>118
アンインストールしないで、
上書きすると、
tclsh84とtclsh85の両方が使えるよ。
0120本田2008/01/07(月) 06:33:26
>Latest Release: Tcl/Tk 8.4.17 (Jan 4, 2008)
http://www.tcl.tk/software/tcltk/8.4.html
0121デフォルトの名無しさん2008/01/12(土) 04:09:05
EDAの制御用でもなく、単純なツールを書くのに
tclshとか利用すんのマジでやめてくれ > R社
0122デフォルトの名無しさん2008/01/12(土) 08:22:41
Renesas?
0123デフォルトの名無しさん2008/01/12(土) 15:19:29
単純なツールなら別にいいじゃん
0124デフォルトの名無しさん2008/01/12(土) 23:55:37
ローカルに手を加えたいができないユーザ多数なんよ。
なんせtclなんかで書いてあるからな。
0125デフォルトの名無しさん2008/01/13(日) 03:24:36
単純なツールならどの言語で書かれていても調べて改造するくらいできるのでわ
0126デフォルトの名無しさん2008/01/13(日) 09:24:32
ActiveTcl8.5のchm見てたら
いつの間にやらチュートリアルついてるのな
今初めて気付いた
0127デフォルトの名無しさん2008/01/13(日) 09:30:28
Whitespaceで書かれたら改造する自信ないな
0128本田2008/01/13(日) 14:26:09
>Micropolis Downloads
http://www.donhopkins.com/home/micropolis/
>Micropolis, Unix Version.
> This game was released for the Unix platform in or about 1990 and has been modified for inclusion in the One Laptop Per Child program.
> Copyright (C) 1989 - 2007 Electronic Arts Inc.
>If you need assistance with this program, you may contact:
http://www.donhopkins.com/home/micropolis/micropolis-activity-source.tgz

Tcl6.4とTk2.3のソースコードが丸ごと入ってる。
0129デフォルトの名無しさん2008/01/13(日) 16:10:55
シムシティってTclで書かれてたんだ・・・
0130本田2008/01/18(金) 07:45:20
>>120
>ActiveTcl 8.4.17.0
http://www.activestate.com/store/download.aspx?prdGUID=f0cd6399-fefb-466e-ba17-220dcd6f4078
0131デフォルトの名無しさん2008/01/19(土) 03:51:09
Tcl/Tk紹介ビデオ
http://www.nicovideo.jp/watch/sm441402
0132デフォルトの名無しさん2008/01/19(土) 11:27:48
Tk がファイルのドラッグドロップに対応していて、
OpenGL の描画先として簡単に指定できるなら
wxWidgets から乗り換えようかと思っているんだけど、どうなんでしょうか。


0133本田2008/01/19(土) 12:44:05
>>132
TkDND
>http://sourceforge.net/projects/tkdnd/
>tkdnd is an extension that adds native drag & drop capabilities to the tk toolkit.
> It can be used with any tk version equal or greater to 8.3.3
>and currently only the UNIX (X-Windows)
>and Microsoft Windows operating systems are supported.
0134本田2008/01/19(土) 12:45:44
>>132
>Togl ― a Tk OpenGL widget
>Copyright (C) 1996-2002 Brian Paul and Ben Bederson
http://togl.sourceforge.net/
0135本田2008/01/19(土) 12:49:01
>>132
>TkOGL
http://hct.ece.ubc.ca/research/tkogl/tkogl/index.html
>TkOGL is a package extension to the Tcl scripting language that enables a user to utilize OpenGL,
> a multi-platform API for interactive 2D and 3D graphics applications.
> TkOGL makes it possible for the user to display OpenGL graphics on the Tk canvas along with other Tk widgets.
> This creates opportunities for developers,
> educators and presenters to script up interactive demos,
> graphical learning models, and colorful presentations.
> Designing a simple user interface that interacts with OpenGL graphics is much simpler and much faster through the Tcl interpreter.
> Much like other Tk Widgets,
> OpenGL graphics can be rendered step by step so users can see the progressive steps appear on the canvas.
> TkOGL eliminates the use of compilers, shared libraries, header files and utility toolkits such as GLUT.
0136デフォルトの名無しさん2008/01/19(土) 14:10:43
今OpenGLやるならTogl よりTcl3Dがいいぜ。サンプルも多いし。
それよりwxから乗り換えようと思った動機を教えて欲しいんだぜ。
0137本田2008/01/19(土) 14:21:52
>>136
http://www.tcl3d.org/
0138デフォルトの名無しさん2008/01/24(木) 17:38:15
みなさん、こんにちは。
突然おじゃましてすみません。
一つ質問があります。

実は先日、Linux用のあるシミュレーションソフトを購入して、
それをASUS Eee PCというPCにインストールして動かしているのですが、
もっと計算速度が上がればなーと考えていてふと思い付いたのが、
もしPS3にLinuxを入れて動かせばいいのかもしれない、と。

そのシミュレーションソフトはTCL/TKというグラフィカル・ツールキットを
先に入れておく必要があるのですが、そのTCL/TKというものはPS3にも
対応しているのでしょうか?

ちなみにEee PcにはActiveTcl8.4というものをインストールしました。
このシミュレーションソフトは、なにやらwishというものを必要とするとかで、
詳しいことはわかりません。
0139デフォルトの名無しさん2008/01/24(木) 22:31:28
>138はマルチ
0140本田2008/01/24(木) 23:28:35
>>138
まずサポートセンターに電話する。
0141デフォルトの名無しさん2008/01/24(木) 23:44:55
8.5正式版でたけどOusterhout本の改訂の話ってどうなったのかなあ。
01421322008/01/25(金) 10:30:05
どもありがとう
今 wxPython + PyOpenGL でゲームを作ってるけど
wxWidgets はDLLのサイズがでかくてどうにかならんものかと。
あと Python には標準で Tkinter がついてるから、Tk でできるならその方が何かと楽。
0143本田2008/01/25(金) 21:55:41
>epcEdit XML/SGML editor
>Available for Windows, Linux, and Solaris - use one application on all relevant platforms in your organization.
>Download your free copy!Download your free copy of epcEdit for Windows, Linux or Solaris!

http://www.epcedit.com/

>News: epcEdit is now free for personal and commercial use!
>epcEdit will become available under an open source license in the future,
> after we have removed copyrighted third-party components.
> In the meantime the current version of epcEdit can be used free of charge.
> An unlimited activation key can be downoaded here.


0144デフォルトの名無しさん2008/01/26(土) 15:08:49
ひとつお聞きしたいことがあります。

Tcl/Tkを使って連続的にデータを処理表示しているのですが、
数時間たつと、
X Error of failed request: BadAlloc
(insufficient resources for operation)
Major opcode of failed request: 53
というエラーを吐いて止まってしまいます。

どこが悪いか調べたいので、
Tcl/Tkのプログラムで、残り資源を表示するような機能はありませんか。
解決策をご存知でしたら教えてください。
0145デフォルトの名無しさん2008/01/26(土) 17:38:21
psコマンドで調べたらええんちゃうの。
何の処理をしてるのかしらんが、Tkのありがちな
罠として画像の解放しわすれのようなオチの予感がする。
0146本田2008/01/27(日) 12:32:24
>>143
>TkSGML
http://www.epcedit.com/TksgmlManual/
>SGML widget reference manual
0147デフォルトの名無しさん2008/01/27(日) 13:38:41
Tclでヒープ的なメモリ割り当てをしてGCすることってできないのかなあ。
0148デフォルトの名無しさん2008/01/27(日) 16:00:48
>>145
144です。ありがとうございます。
自分でもDeleteコマンドで削除して、気をつけてはいるんですが、
どこかうまくいってないようです。
0149デフォルトの名無しさん2008/01/27(日) 16:05:09
>>147
ローカル変数の割り当てはそうしてるだろ
0150本田2008/01/27(日) 18:19:52
>>144
> X Error of failed request: BadAlloc
> (insufficient resources for operation)
> Major opcode of failed request: 53

これはおさらく、
X Serverのエラーで、
TclやTkのエラーではない。


>LECTURE 14 エラーイベント
http://homepage3.nifty.com/rio_i/lab/xlib/014xerr.htm
>BadAlloc 要求リソースの割り当てに失敗
0151デフォルトの名無しさん2008/01/27(日) 19:52:34
>>149
ローカル変数は全然ヒープ的じゃないよー。スコープ=寿命でスタック的なもの。
0152デフォルトの名無しさん2008/01/29(火) 14:41:57
はじめまして、私は新人プログラマです。
ひとつお伺いしたいことがあります。

IPフィルタリング機能をTCLで行ないたいと思っております。動作としては、下記のIPアドレスがサイトへアクセスしてきた場合
ページを閲覧できる様にし、それ以外のIPアドレスが来た場合は閲覧出来ない様にするといった感じのものです。OSはSolarisを使用して行います。

特定のIP
1.1.1.1
1.1.1.2

以上の事から、TCLで上記の様な制御を行なうにはどういったソースを書けば宜しいのでしょうか。例題的な感じで結構ですので御回答宜しくお願いします。また、これらの内容をみて不明点などが御座いましたら
ご質問頂けたらと思います。


ちなみに、下記方法で実施してみましたがダメでした。

【リモートホスト情報の取得】
CGI プログラミングをする上でクライアントのリモートホストの情報を利用したい場合がある。 例えば特定のホストからのアクセスを規制したい場合などである。
サーバに Apache を使用していれば IP アドレスの値が環境変数 REMOTE_ADDR から取得できる。 Tcl では $env(REMOTE_ADDR) のようにして環境変数を取り出す。
さらに Apache の設定次第では環境変数 REMOTE_HOST にホスト名が与えられているかもしれない。 そうでない場合は IP アドレスからホスト名を取り出す必要がある。
このためには TclX に含まれている host_info コマンドを使えばよい。 このコマンドは Perl での gethostbyaddr 関数や gethostbyname 関数に相当する機能を提供する。

ホスト名を取り出す場合はサブコマンド official_name を以下の書式で使用する。 引数 host には $env(REMOTE_ADDR) で得た値などを与える。
0153デフォルトの名無しさん2008/01/29(火) 19:02:57
長文乙。
そんなことより、Apacheの設定見れ。
0154デフォルトの名無しさん2008/01/29(火) 21:19:27
if { $env(REMOTE_ADDR) in $blacklist } {
exit
}

こんなのでいいのか?こんな簡単なことでいいのか?
簡単すぎて不安になるぜ!
0155デフォルトの名無しさん2008/01/29(火) 21:21:40
新人がTclでウェブプログラミングやるっていったいどんな会社なのか興味があるなあ。
なんにせよ152が書いたコードを張るところからだね。
0156デフォルトの名無しさん2008/01/29(火) 21:25:37
>>154
in演算子ってTcl8.5からだからまだ152の環境に入っていない可能性が高いね。
0157デフォルトの名無しさん2008/01/29(火) 22:03:18
ていうかどうせならTclHttpd試してみてくれよ。
0158本田2008/01/30(水) 19:46:55
>>157
TclHttpdは、アプリケーションに組込むのが主流だろうな。
つまりアプリケーションサーバー。

>>143
>epcEdit XML/SGML editor
に組込まれていてヘルプを見るのに使われている。
0159本田2008/01/30(水) 20:59:27
>>152
>サーバに Apache を使用していれば IP アドレスの値が環境変数 REMOTE_ADDR から取得できる。

同時に複数の人がApacheに接続すれば、
環境変数 REMOTE_ADDRには、
誰のIP アドレスが入るのかな?

最初の人か?
最後の人か?
0160デフォルトの名無しさん2008/01/30(水) 21:48:36
CGIなんだからそれぞれの人のでしょ。
0161本田2008/01/30(水) 22:47:10
>>160
そうですね。
0162デフォルトの名無しさん2008/01/31(木) 11:32:40
えーっと・・・
0163デフォルトの名無しさん2008/02/03(日) 19:01:06
正直Tcl使うよりRuby/TK使った方が便利なんだが・・・
0164デフォルトの名無しさん2008/02/03(日) 19:18:05
俺は C から使うのが便利だな
0165デフォルトの名無しさん2008/02/03(日) 20:38:40
で、Ruby/Tkで書いたアプリって何かあんの?
0166デフォルトの名無しさん2008/02/03(日) 20:45:24
やっぱPerlで
0167デフォルトの名無しさん2008/02/03(日) 22:23:35
non-TclのTkバインディングってろくにドキュメント整備されてるやつがない印象がある。
0168デフォルトの名無しさん2008/02/05(火) 18:14:27
俺も普段よくRuby使うからRuby/Tk触ったことはあるが…
Ruby流でもTcl流でもない、妙な違和感があるんだよなぁ。
0169デフォルトの名無しさん2008/02/06(水) 11:36:52
数値計算のパラメータ設定マクロ用にtclを使いたいのですが、
C, C++プログラムにtclを組込む方法はどうやれば良いですかね?
01701692008/02/06(水) 14:25:55
Tcl_CreateInterpでインタプリタを作って、Tcl_EvalFileでtclで記述したファイルを実行、
特定の名前の変数にパラメータを入れて、Tcl_GetVar等でパラメータの入った変数を読み出せばできますね。

自己レスすまそ
0171本田2008/02/07(木) 00:52:46
>>157
>AOLserver
http://sourceforge.net/projects/aolserver
>AOLserver is a multithreaded,
> Tcl-enabled,
> massively-scalable and extensible web server tuned for large scale, dynamic web sites.
> AOLserver also includes complete database integration and a dynamic page scripting language.
0172デフォルトの名無しさん2008/02/08(金) 00:00:42
8.5版に入換えたらeval命令が異様に遅くなった
md5を計算するのにevalを多用した箇所がすごいことになってしまった。困った。
0173デフォルトの名無しさん2008/02/08(金) 00:31:28
MD5なんかCで実装するもんじゃないのか
0174デフォルトの名無しさん2008/02/08(金) 00:54:46
よくわからんが、md5なんてtcllib_critclとかTrfなんかの
Cで書いた枯れた拡張をつかうものなのでわ・・・。
0175本田2008/02/08(金) 19:00:15
Eggdrop Bots and Tcl Scripts
http://www.ruptbot.com/index.php
http://www.ruptbot.com/scripts.php
http://www.ruptbot.com/ruptbot.php
0176デフォルトの名無しさん2008/02/08(金) 22:56:12
172です。誤解を招くような文章で申し訳ない。改めて書直します。
8.4版->8.5版に乗換えて快適な環境になりましたか。小生の場合は疑問符です
小生の場合、既存のプログラムの内の1つが異常なくらい遅くなりました。
調べると1つのprocが極端に遅くなっていた。このprocはRFC1321の手順通りにmd5を計算しているだけで、何の変哲もないprocですが、evalを多用しています。
今の所evalの処理が遅くなったのかと疑っています。無論真相は不明です。
0177デフォルトの名無しさん2008/02/08(金) 23:19:07
よっしゃ3連休で暇な俺が8.5に最適化してやるからうpしろ。
0178デフォルトの名無しさん2008/02/09(土) 02:17:51
あれ、evalか...exprかと勝手に脳内変換してたよ
md5をPureTclで計算するのになぜevalを多用するのかよくわからないな
evalでプレコンパイルして次回からはより速くなるようにする処理のところが
8.5では相対的にオーバーヘッドが大きくなったのかもしれないな
0179デフォルトの名無しさん2008/02/09(土) 21:05:44
うpまだ?暇すぎて死にそう
0180デフォルトの名無しさん2008/02/09(土) 22:46:28
>>176
http://reddog.s35.xrea.com/wiki/index.php?Benchmark%20Tcl8.5.0%20vs%20Tcl8.4.16
ここを見た感じではevalが遅くなってるってことは
なさげに見えるけどなあ・・・。なんだろう。
0181デフォルトの名無しさん2008/02/09(土) 23:51:09
>>177,179
md5を計算する手製proc
リストはここに置いておきます。
http://home.netyou.jp/22/tanida/md5.htm

tcl ver8.4迄は正常に動作しver8.5でとち狂った。
ver8.2で動作させるとrfc1321の例題と同じ結果が得られることは確認すみ。
0182デフォルトの名無しさん2008/02/10(日) 05:19:39
できた!たしかに8.5だと3倍くらい遅くなってた。たぶん変数を
二重に展開してexprとevalのコンボで最適化が効かなくなって
しまったと推測。

直したのは基本的にそこを素直にprocにしただけ。
8.4では4倍、8.5では12倍高速化した。あと、applyを使った
ものも書いてみたけど、procの方が速かった。

http://chun.s11.xrea.com/up/img/112.zip

ていうか、ひょっとして一つのprocで完結させたかったのかな。
それならapplyだ!
0183デフォルトの名無しさん2008/02/10(日) 08:03:16
VineLinux4.2とActiveTcl8.5の環境でtktreectrlをソースからビルドしたいんだけど、
makeでつまづいてしまうんだが。

$tar xzf tktreectrl-2.2.3.tar.gz
$cd tktreectrl-2.2.3
$./configure --prefix=/opt/ActiveTcl-8.5 --enable-threads
$make
うだうだ
generic/tkTreeColumn.c:13 から include されたファイル中:
generic/tkTreeCtrl.h:13:20: tkPort.h: そのようなファイルやディレクトリはありません
generic/tkTreeCtrl.h:14:21: default.h: そのようなファイルやディレクトリはありません
generic/tkTreeCtrl.h:15:20: tclInt.h: そのようなファイルやディレクトリはありません
generic/tkTreeCtrl.h:16:19: tkInt.h: そのようなファイルやディレクトリはありません
うだうだ

tkPort.hってなんぞ?
/opt/ActiveTcl-8.5/include にそんなヘッダ入ってないんだけど・・・
0184本田2008/02/10(日) 09:05:22
>>183
http://sourceforge.net/projects/tcl/
からtcl8.5とtk8.5のソースコードをgetしろ。
0185デフォルトの名無しさん2008/02/10(日) 09:16:09
>>184
ActiveTclを使わずにtckもtkも自分でソースからビルドしたらtktreectrlも上手く入ってくれた
ありがと
0186デフォルトの名無しさん2008/02/10(日) 14:19:14
exprを多用したTclプログラムを高速化するにはとにかくexprの引数全体を { } で囲むってことを覚えておくといい。
式のコンパイル結果をキャッシュしてくれるようになるので本当にこれだけでだいぶ高速化する。
181のコードだとさらにexprコマンドを変数にいれてevalとかしちゃってるんでそこもどうにかしなきゃだけど
0187デフォルトの名無しさん2008/02/10(日) 14:23:36
あー182の改訂版だとそういうところばっちり抑えてるね。余計なコメントだったか
0188デフォルトの名無しさん2008/02/10(日) 22:14:14
184 09:05:22 >>185 09:16:09 僅か10分でソースコードをgetして確認まで完了。天晴れ!
0189デフォルトの名無しさん2008/02/10(日) 22:31:43
>>188
まぁ俺様のスパコンなら余裕よ

じゃなくて、同じ事考えててソースから入れたら上手く行って「ヤッター」って書き込もうとしたらレスが付いてたの。
そんだけ。
0190本田2008/02/11(月) 12:39:59
Welcome to the Tcl Developer Xchange!
http://www.tcl.tk/
Latest Software Releases

Tcl/Tk 8.5.1 Feb 5, 2008
Tcl/Tk 8.4.18 Feb 8, 2008

ActiveTcl 8.5.1.0 Feb, 2008
0191デフォルトの名無しさん2008/02/15(金) 19:14:58
181>どうやら8.5版ではevalの処理が今一歩か。
evalはtclのインタープレタ(解釈実行)機能を利用する窓口なのでevalを封印する様では暫く8.4版に留まって様子を見るのも有力な選択肢かもしれない。
0192デフォルトの名無しさん2008/02/15(金) 23:04:55
俺は8.4の頃からバイトコンパイルの邪魔になるので
evalは封印してきたわけだが・・・。
0193デフォルトの名無しさん2008/02/15(金) 23:09:55
そういえば8.5で{*}が追加されたけどこれもeval使うよりは速いのかなー。
0194デフォルトの名無しさん2008/02/16(土) 07:42:19
>192 :バイトコンパイルの邪魔になるのでevalは封印・・・。 
     →eval命令のコンパイルで何か支障があるのですか?
0195デフォルトの名無しさん2008/02/16(土) 16:20:43
すみません。教えてください。
set a 3
set b {$a + 2}
expr $b*4
これが 20 でなく 11 になる理由は分かりました。しかし、次のような C 言語のソースをそのまま Tcl に直すとどうなるのですか?
int a = 3;
int b = a + 2;
int c = b * 4;
0196デフォルトの名無しさん2008/02/16(土) 18:05:43
set a 3
set b [expr $a + 2]
set c [expr $b * 4]
0197デフォルトの名無しさん2008/02/16(土) 21:40:46
なるほど。ありがとうございました。
0198デフォルトの名無しさん2008/02/22(金) 21:40:37
書籍の類が姿を消して久しいが今日丸善本店に立寄るとEffective Tcl/Tkが書棚にあった。手にとって奥付を見ると「1999年8月1日初版発行」になっている!?今年は平成廿年。
0199本田2008/02/23(土) 07:19:41
>>198
>Effective Tcl/Tk Library
http://sourceforge.net/projects/efftcl/
>Souce code from the book "Effective Tcl/Tk Programming"
0200デフォルトの名無しさん2008/02/28(木) 23:15:28
三浦カズヨシ逮捕されたな
関係ないけど
0201デフォルトの名無しさん2008/02/29(金) 00:01:03
美しいクンニ日本
今日本のクンニが乱れている!!
http://www.youtube.com/watch?v=pAEaGlmwZZQ
0202デフォルトの名無しさん2008/02/29(金) 11:17:41
wish83 hoge.tcl
とかでソースを実行するときにエラーがあると,ダイアログが出てOKボタンを押さないと次に進まなくなるけど,
これを抑制する方法はない?
0203デフォルトの名無しさん2008/02/29(金) 23:15:30
普通に考えて例えばファイルオープンでしくじったら
読み取りの次の処理も失敗するだろ。止まるのが
普通なのではないだろうか。エラーを「抑制」するとは
この場合はどういう処理を期待してるのだろうか。
0204デフォルトの名無しさん2008/03/01(土) 11:24:06
まあcatchしてエラー処理をすればよいのではないかな。
02052022008/03/01(土) 11:28:23
>>203
ダイアログを出さずに落っこちてほしいのです.
バッチ処理でデータを自動的に次々処理しているときに,ダイアログが出てそこで止まってしまうと,
オペレータが常時監視してOKボタンを押さなくてはいけない.
そうではなくて,エラーが出たらそのまま落ちて,次のデータに処理が移るようにしたい.
0206デフォルトの名無しさん2008/03/01(土) 11:29:12
余談だけど前にどっかの英語のブログでプログラミング関連のフォーラムのスクリーンキャプチャ画像があって、
PHP のフォーラムと Python のフォーラムの最新の質問がそれぞれ
How to hide error messages? と How to handle exceptions? だったっていうのが面白かった。
02072022008/03/01(土) 11:30:59
>>204
確かにそうですね.ありがとうございます.
0208デフォルトの名無しさん2008/03/01(土) 11:31:07
>>205
wishじゃなくtclshを使うのではどうか?
02092022008/03/01(土) 11:44:18
>>208
それが,処理自体はバッチ的なんだが,過去の経緯を引きずっている関係から,
部分的にGUIパッケージを使っているんですよね….
どういう方法をとるにしろ,プログラムにある程度の修正を加えるしかなさそうですね.
0210デフォルトの名無しさん2008/03/01(土) 11:59:26
んー、冒頭に package require Tk ってつければいいだけでは?
というかバッチの中で呼ぶのだったら wish だと同期的にならないのでいろいろ不都合じゃないの。

Tclの中でのエラー処理の必要がなくて落っこちればそれでいいっていう前提で話してるけど。
0211デフォルトの名無しさん2008/03/01(土) 12:12:15
>>205
なんだそういうことか。それならbgerrorでエラー処理を変えればいい。
でも、ていうか8.3ってbgerrorあったっけ。昔過ぎて忘れた。

proc bgerror {message} {
exit 1
}

pack [button .b -text GENERROR -width 15]
.b configure -command {
read $notexists
}
0212デフォルトの名無しさん2008/03/07(金) 10:24:47
(・∀・)チックルチーコ! チックルチーコ! ラッキーペア!

tcl tcl tcl tcl tcl tcl チャチャチャ
二人は双子♪ 似てない双子♪
0213本田2008/03/08(土) 08:39:49
>>166
Perl/Tk Tools
http://ptktools.sourceforge.net/
0214本田2008/03/08(土) 08:44:33
ActiveTcl 8.4.18.0
http://www.activestate.com/store/download.aspx?prdGUID=f0cd6399-fefb-466e-ba17-220dcd6f4078
0215デフォルトの名無しさん2008/03/08(土) 08:46:19
PowerShellから使えんのかなぁ
0216本田2008/03/08(土) 09:15:21
>>215
tcom
http://wiki.tcl.tk/1821
0217本田2008/03/08(土) 09:32:54
>>216
COM Object Implementation in Tcl
http://www.vex.net/~cthuang/tcom/server.html
http://www.vex.net/~cthuang/tcom/
0218本田2008/03/08(土) 09:35:20
>>217
>COMプログラマの解説書
>Crispin Goswell
>Microsoft Office Product Unit
>1995年 春
>1995年9月13日改訂
http://msdn.microsoft.com/library/ja/default.asp?url=/library/ja/jpdncomp/htm/com_co.asp
>抄録
>この解説書は、
>Microsoft(r) OLE Component Object Model(COM)オブジェクトを作成し、
>効果的に使用する方法を説明しています。
>例文はほとんどCで書かれていますので、実際に何が行われているかが、大変分かりやすく示されています。
>プログラマの中には、オブジェクトを実行するためにC++を好んで使用する人もいるでしょう。
>C++プログラマの観点からCOMの概念および基本的な使用法を論じているのは
>Kraig Brockschmidt著のInside OLE (第2版)(MSDN Library(Books))です。
>COMとは何か、またその設計や哲学の後ろにある動機付けをより理解する事に興味がある読者なら、
>Component Object Model Specification(MSDN Library(Specifications))の最初の2章を読んでください。
>第1章には簡単なイントロダクションを、第2章では徹底的に概要を解説してあります。
>この解説書ではInside OLEとCOM Specificationにある情報を、
>COMオブジェクトを実装する良い方法をいくつか示しながら解説するようにしてあります。
0219デフォルトの名無しさん2008/03/08(土) 10:58:39
Tcl使ってる人はLISPも使ってることが多いんでしょうか
0220本田2008/03/08(土) 11:22:01
>>219
特別関係は深くないと思う。
ただTKの方は、色々な言語から使える。
0221本田2008/03/08(土) 11:24:10
LTK - The Lisp Toolkit
"The easy way to do Lisp GUI programming"
http://www.peter-herth.de/ltk/
>LTK is a Common Lisp binding for the Tk graphics toolkit.
> It does not require any Tk knowledge for its usage.
> As it is written in pure Lisp, it is highly portable.
0222デフォルトの名無しさん2008/03/08(土) 11:29:39
DQN男の家族死ね DQN男の親死ね DQN男の友達死ね DQN男の親戚死ね
DQN男の家族死ね DQN男の親死ね DQN男の友達死ね DQN男の親戚死ね
DQN男の家族死ね DQN男の親死ね DQN男の友達死ね DQN男の親戚死ね
DQN男の家族死ね DQN男の親死ね DQN男の友達死ね DQN男の親戚死ね
0223デフォルトの名無しさん2008/03/08(土) 12:43:06
Lisp使いでEmacs使いの人はTclに間違った偏見を持っていることがあるかも。
0224本田2008/03/08(土) 13:03:45
>>223
なぜ Tcl を使うべきではないのか
http://www.os-omicron.org/~takano/private/trans/tcl_j.html
0225本田2008/03/08(土) 13:10:51
>>224
Tcl7.x時代の話でTcl8.xにはもう当てはまらない議論。
0226デフォルトの名無しさん2008/03/08(土) 13:35:14
http://www.geocities.jp/tor_park/Dlang/byte.html
0227本田2008/03/14(金) 22:01:12
tBuild
http://sourceforge.net/projects/tbuild/
tBuild is a cross-platform Tcl/Tk extension that extends Tcl/Tk with the ability to compile
& link shared libraries of Tcl extensions written in C/C++.
tBuild currently supports all unix compilers & MS VC++ 5.x/6.x/7.0/7.1/.NET under windows.
No Mac supp
0228本田2008/03/16(日) 01:19:13
Tcl9
http://sourceforge.net/projects/tcl9/
Tcl9 is an umbrella for all projects related to the improvement of the current Tcl language,
towards the hypothetical version 9 (current version is 8.5).
0229本田2008/04/02(水) 18:18:34
>Tcl/Tk 8.5.2 Release Announcement
>March 28, 2008
http://www.tcl.tk/software/tcltk/8.5.html
0230デフォルトの名無しさん2008/04/03(木) 15:17:36
-e 位使えるようにしてくれ
0231本田2008/04/06(日) 12:46:05
>>229
>tcltk8.5.2-014-20080405.exe
http://sourceforge.net/project/showfiles.php?group_id=204414&package_id=248905&release_id=589844
0232gth2008/04/06(日) 14:25:37
アイム
出口
0233七つの海の2008/04/10(木) 23:24:00
×テックルティーケー
○ティコティケェィーィエ
0234デフォルトの名無しさん2008/04/13(日) 03:08:28
x86-32bit Linuxでは正常に動いてたプログラムをx86-64bit Linuxで
動かそうとしたらcannot execute binaryとなってダメなんですけど、
どうすればいいんですか?原因はなんなんですか?
中学生にも分かるように説明してくれませんか?
0235本田2008/04/14(月) 06:00:48
>ActiveTcl 8.5.2.0 Apr, 2008
http://www.tcl.tk/
0236本田2008/04/14(月) 06:02:18
>>234
サポートセンターに電話すべし。
0237デフォルトの名無しさん2008/04/16(水) 04:48:20
>>234ですが自己解決しました。
libc6-i386というのをインストールしたら64ビットOSでも
動きました。でも、32ビットOSのときよりも動きが遅いです。
0238本田2008/04/22(火) 08:24:49
http://snackamp.sourceforge.net/
>SnackAmp
http://sourceforge.net/projects/snackamp/
>SnackAmp is a powerful multi-platform audio music (mp3, ogg ,wav, streams ...) player and organizer for large music collections.
>Manage your entire collection, including ID3 tagging and auto-playlisting. Integrated web server for remote control/streaming
0239デフォルトの名無しさん2008/05/02(金) 15:58:13
ファイルから読み込んだ文字列中に"があるとうまく処理ができません。

たとえば、中身が
He said "I am
a boy"

のようなfileに対して

set ch [open "file"]
while {[gets $ch line] >= 0} {
puts [lindex $line 0]
}

を実行すると

unmatched open quote in list
while executing
"lindex $line 0"

となって止ってしまいます。
(mingw のtclsh84 )

このような"の入った文字列を処理するにはどうしたらよいのでしょうか?
0240デフォルトの名無しさん2008/05/02(金) 20:11:53
クォートをエスケすりゃいんじゃね
gets $ch line
regsub -all \" $line \\" buf
puts [lindex $buf 0]
02412392008/05/02(金) 20:56:37
自己解決…って>>240さんの書かれた通りです。
あ、自分のは -all 忘れてましたわ。
ありがとうございます。

ちなみに、\\"で動くのですが、それだとemacsの色付けが異常になるので\\\"にしました。
0242デフォルトの名無しさん2008/05/05(月) 18:25:21
使い勝手悪い言語だなあ。
0243デフォルトの名無しさん2008/05/06(火) 10:44:47
Active Tcl ver.8.4.19に改版されている。
ver.8.4.17以降2ヶ月毎に改版されている。随分頻繁に改版しているけど、どこが換わっているのやら。
0244デフォルトの名無しさん2008/05/08(木) 16:18:48
>>242
regularExpressionの速さはピカ一ですが
0245デフォルトの名無しさん2008/05/08(木) 20:01:20
そうなの?
0246デフォルトの名無しさん2008/05/09(金) 04:16:30
コーディングにかかる時間とか、バグのとりやすさのほうが重要だろ。
この観点から見るとtclひどすぎ。
正規表現使う構文にしてもすっきりしてないし。
0247デフォルトの名無しさん2008/05/09(金) 12:00:11
わかったからすきなの使いなよ。
0248デフォルトの名無しさん2008/05/09(金) 12:42:24
まさに正論
0249デフォルトの名無しさん2008/05/14(水) 08:49:38
例に Perl/Tk 使ってみ。
Tcl ってよー出来てるって思えるから。
0250デフォルトの名無しさん2008/05/14(水) 13:17:13
Tkを使う為の言語としては最強だよな。
他がちょっと弱いけど。
0251デフォルトの名無しさん2008/05/14(水) 13:44:24
Cと組み合わせれば良いじゃん。
0252デフォルトの名無しさん2008/05/15(木) 02:02:59
恥を忍んで質問させて下さい。

Win版のActiveTclのExpectは、sendの-breakが無いので、
一旦openしてfconfigureでbreakするのを試みてます。

set fd [open "COM1:" RDWR]
fconfigure $fd -ttycontrol {BREAK 1}
exp_sleep 2
fconfigure $fd -ttycontrol {BREAK 0}
exp_spawn -open $fd

でも、最後のexp_spawnがうまくいかないです。何故でしょう?
0253デフォルトの名無しさん2008/05/17(土) 04:37:43
239みたいな例に対応できる汎用的方法がよく分からない。
'"'だけでなく'{'とか'}'とかも気をつける必要がある気がするんだけど。
tcl faq list eval とかで検索してみたけど結局どうすれば。
0254デフォルトの名無しさん2008/05/18(日) 17:33:48
複数行にわたって書いているリストの中で
コメントをなんとか書けないものかなあ
0255本田2008/05/22(木) 06:02:40
>exp_spawn failed on Windows 2003 with DEP(DataExecutionPrevention)
http://lists.activestate.com/expect%40listserv.ActiveState.com/6A3BD65D48E1EC45AF1B466D4E2A470F02630419%40HQSX5711.Hospira.corp
0256デフォルトの名無しさん2008/05/23(金) 08:27:47
tclshでプロンプト(PS1)の設定は出来ますか?
0257デフォルトの名無しさん2008/05/23(金) 21:06:59
こうじゃね?
たとえば、
set tcl_prompt1 {puts -nonewline [info hostname]@[pwd]> }
で、ラインコンティニュー用は tcl_prompt2に設定
set tcl_prompt2 {puts -nonewline continue?> }
0258デフォルトの名無しさん2008/05/24(土) 00:50:15
>>257
なんやこれ。こんなんできたのか。長年使ってるけどはじめて知ったわ
0259デフォルトの名無しさん2008/05/24(土) 01:27:29
>>257
出来た!
ありがとうございます
0260デフォルトの名無しさん2008/05/25(日) 04:51:53
aliasの設定なんか無理かな?
~/.tclshに ls color=auto を入れたいんだけど
0261本田2008/05/25(日) 06:00:16
>C++/Tcl
http://cpptcl.sourceforge.net/
>A C++ library for interoperability between C++ and Tcl

>C++/Tk
http://cpptk.sourceforge.net/
>A complete C++ interface to the Tk GUI toolkit
0262デフォルトの名無しさん2008/05/29(木) 20:12:22
Tcl/Tk 8.5でBLT-2.4z使えてる方はいらっしゃいますか?

パッチとか修正とか、かなり手を入れないと使えないのでしょうか。
0263デフォルトの名無しさん2008/06/02(月) 21:39:25
>>239
ここにその議論がある。http://wiki.tcl.tk/2157
要するにsplitすればよい。ただし連続する空白文字に対する動作が意図と異なるかもしれない。
while {[gets $ch line] >= 0} {
puts [lindex [split $line] 0]
}

あるいは、
puts [join [split $line] |]
などに書き換えて様子を見よう。

>>262
Windows版の場合、tcl84.dllに直接リンクしてしまってるからどうにもならないよね。
Tcl8.3あたり以降のextension作成のガイドラインから外れた古い作りになっているんだろう。
実際何年も更新されてないようだし。
自前ビルドしてやるしか。
02642622008/06/03(火) 11:42:06
>>263
http://jos.decoster.googlepages.com/bltfortk8.5.2
を基に試してみました。

demosやexamplesの一部 (多く?) が失敗するけど、なんとなく使えそうです。
BLT-3.0で対応するのかなぁ。
0265デフォルトの名無しさん2008/06/14(土) 18:22:11
http://reddog.s35.xrea.com/wiki/A%20Stub-enabled%20BLT2.4z%20for%20Windows.html
これは試した?
02662622008/06/16(月) 16:43:53
後出しでごめんなさい。Linuxです。
Fedora 9で試してまして、そうこうしてるうちに、>>263の方法で対応したパッケージがリリースされました。

https://bugzilla.redhat.com/show_bug.cgi?id=446862
で対処してくださったようです。
0267デフォルトの名無しさん2008/06/20(金) 19:54:08
tk でコンボボックスの幅を指定するにはどうすればいいでしょうか?
また、できれば選択した文字列が表示されるテキストボックス部分を
複数行表示にしたいのですが、可能でしょうか?
0268デフォルトの名無しさん2008/06/20(金) 21:03:00
>>tk でコンボボックス
tile拡張のttk::comboboxのやつか?
ttk::combobox .cb -width 100 とかでいけんじゃね
>>複数行表示にしたいのですが、可能でしょうか?
不可能じゃね
0269デフォルトの名無しさん2008/06/27(金) 03:20:15
質問があります。

set a hoge
set b a
set c b

とやって、cからたどってhogeに辿り着くには
どうすればいいのでしょうか。
$$$c とか $[$[$c]] とかいろいろやってみたのですが
できません……。
0270デフォルトの名無しさん2008/06/27(金) 22:53:22
set a hoge
set b a
set c b

proc aho foo {
upvar $foo bar
return $var
}

puts [aho [aho $c]]
0271デフォルトの名無しさん2008/06/27(金) 23:22:33
>>269
puts [set [set $c]]
>>267
2行は無理。BWidgetsのコンボを改造すればできるかも
0272デフォルトの名無しさん2008/06/28(土) 00:44:17
>>271
へ〜、setって変数の参照にも使えるんだ。 勉強になりますた。
0273デフォルトの名無しさん2008/06/28(土) 03:31:47
>>263
> ただし連続する空白文字に対する動作が意図と異なるかもしれない。

この制約がどうにも辛いです。
連続した空白があってもそれをただ一つの区切りとみなしつつ、
安全にファイルなどから読み込んだ文字列を処理するには
どうしたらいいのだろうか。
02742692008/06/28(土) 04:50:38
>>270
>>271
ありがとうございます。
0275デフォルトの名無しさん2008/06/28(土) 06:01:58
>>273
そんなの教わったregsub使えよ
while {[gets $ch line] >= 0} {
puts [lindex [split $line [regsub -all -- {\s+} $line { }]] 0]
}
0276デフォルトの名無しさん2008/06/28(土) 12:50:19
>>273
set line {He said "I am}
foreach word [string map {\" \\"} $line] {
puts $word
}
0277デフォルトの名無しさん2008/06/28(土) 14:34:54
>>276
'{' inside string
0278デフォルトの名無しさん2008/06/28(土) 17:20:38
文字列の中に"や{がある事を気にする必要がある時と
必要がない時の条件がよく分からん。。。
あと、ファイルから読み込んだ行を一律regsubしてしまって
常に構わないのかどうかも。。。
0279デフォルトの名無しさん2008/06/28(土) 21:56:13
>>278
文字列をリストに自動変換してるところは気にしろ。文字列をforeachしたり
リスト系のコマンドに直接文字列を渡したりしてるところは注意だ。
>>276
set line "He said \"I am \{ a boy \}"
foreach word [string map {\" \\\" \{ \\\{ \} \\\}} $line] {
puts $word
}
0280デフォルトの名無しさん2008/06/28(土) 23:10:12
> \} \\\}
これは必要? あってもなくても同じではないの?
0281本田2008/07/01(火) 06:46:34
>Tcl/Tk 8.5.3 June 30, 2008
>Tcl/Tk 8.6a1 June 25, 2008
>Tcl/Tk 8.4.19 Apr 18, 2008
http://www.tcl.tk/
02822632008/07/02(水) 07:53:23
>>273
そもそもの話をしてもいいだろうか。
こんなコードは試しましたか?


set lines {He said "I am
a boy"}

set i 0
foreach l $lines {
puts $i:$l
incr i
}

Tclのlist「形式」は平易ながらバイナリデータまで扱える立派な「データ構造」なので、
まともに実装しようとすればTclが最初から持ってるパーサーを実装しなおすようなことになるよ。

平易ではあるがあまり(書いたソフトの)ユーザーには触ってもらいたくないデータ形式のような気がする。
コメントも使えないしね。自分自身で読み書き保存するためにはいいけど、
ユーザーに触らせるならJSONやYAMLなどのより一般的な形式がいいだろうね。
今ならtcllibのCVS HEADにライブラリが置かれてるよ。
02832392008/07/02(水) 09:03:58
なんか、今頃また盛り上がってるが・・・

>>282
それじゃ根本的に違うんだよね〜
getsで一行ごとにテキストファイルから読んでるの文字列に「"」があるのがミソなんで

set lines {He said "I am}

を処理することになるんですよ。
0284デフォルトの名無しさん2008/07/02(水) 19:51:00
8.5から文字列をリストに変換できるかどうかチェックする
string is list $strが追加されてんぞ。
0285デフォルトの名無しさん2008/07/03(木) 00:00:27
info completeで失敗したら、さらに1行読み込んでappendすりゃいいだけだろ
そもそもデータ自体が1行ずつ処理されるように書かれていないのになぜ、1行ずつ
処理したがるのか
0286デフォルトの名無しさん2008/07/03(木) 01:29:08
ファイルの文書が、必ずしも""の対応関係があっている保障はないわけだが。
0287デフォルトの名無しさん2008/07/03(木) 01:43:11
たしかにそういうこともあるな
flex/bisonでやるか PureTclでやるならfickle/taccle
0288デフォルトの名無しさん2008/07/04(金) 11:09:03
canvasにarcなどを1000個くらい書くと激重でどうしようもありません。
自分の描画ルーチンが重いのではなく、Tkがcanvasをリフレッシュするのが激重です。
描画したアイテムを選択して移動とかするつもりはなく、単に絵が表示されればいいのですが…
こんな場合は、image photoに直接力技で図形を書いていくしかないですかね。
0289デフォルトの名無しさん2008/07/05(土) 12:36:31
Tkのキャンバスウィジェット並みの機能ってほかのGUIフレームワークにないですかね。
書いた絵をドラッグできるとかそういう系。
0290本田2008/07/06(日) 13:21:30
>>289
Zinc Is Not Canvas!
http://www.tkzinc.org/tkzinc/index.php

OpenGLが、速い環境が無いと、遅すぎてかなわん。
0291デフォルトの名無しさん2008/07/07(月) 21:37:10
Zincもええが、tkpathの方がシンプルでとっつきやすいよ
0292デフォルトの名無しさん2008/07/08(火) 00:37:16
tkpath使ったら早くなるかとおもったけど全然早くならなかった・・・
0293デフォルトの名無しさん2008/07/09(水) 07:59:32
>>288
>>292

1000を超える描画単位(図形やウィジェットなど)をリアルタイムで取り扱うことはスクリプト言語系のツールキットでは想定されてないと思う。
素直にネイティブコードで動く言語で実装したほうが早いんじゃない? 描画結果のキャッシュでもしつつ。
0294デフォルトの名無しさん2008/07/09(水) 20:18:40
いやまだ手はある。Tcl3DでOpenGLで直接描画すれば・・・!
0295デフォルトの名無しさん2008/07/09(水) 22:18:26
マルチスレッド拡張使ってる人いる?
0296デフォルトの名無しさん2008/07/09(水) 23:06:43
ときどき使う。
0297デフォルトの名無しさん2008/07/09(水) 23:44:51
>>296
非同期で走っている複数のスレッドから進行状況や終了などをメインのスレッドで
受け取るにはどういう手段があるんでしょう? tsv でスレッド内で状況をセットして
メインでpollするというぐらいしか思いつかないのですが。 メインの方で
vwaitしてスレッドのほうからthread::sendなんて出来ませんよね? 
0298デフォルトの名無しさん2008/07/10(木) 06:48:22
C++などで書いてるソフトにTclのインタプリタを組み込んでるやつはいないだろうか。
Tcl_Eval()でTclスクリプトを実行したときにそのスクリプトにエラーが含まれていると、
エラーメッセージはResultの中に入ってる。
これをResultの代わりにエラー出力に出したいんだが、その方法がよくわからない。
やり方があるようなら教えてもらえないだろうか。
02992972008/07/10(木) 06:54:59
あ、だめだ。 これ以前にExpectがthread-safeで無くてスレッドからは使えないとか。 
Expectを多用してるので諦めます。

http://community.activestate.com/forum-topic/expect-tcl-threads
0300本田2008/07/10(木) 07:54:03
stderr
http://wiki.tcl.tk/2620
stderr is one of the stdio output files opened
- applications and functions tend to use it for the output of error messages.
03012982008/07/10(木) 10:32:22
>>300
ご協力ありがとう。
読んでみたけどどうやらこれはTclインタプリタ側(Tclスクリプト側)から
外部コマンドを呼び出したときのstderrについて議論しているみたいで、この話とはちょっと違う。

Tcl_CreateInterp()でinterpを作った後、
Tcl_SetStdChannel(channel, TCL_STDOUT);
Tcl_SetStdChannel(channel, TCL_STDERR);
を呼び出すことでinterpが呼び出すputsコマンドによる標準出力、エラー出力をトラップできることは確認できている。

だがTcl_Eval()やその他のTcl変数を直接いじるAPIを呼び出したときの文法エラー、実行時エラーは出力されないみたいなんだ。
(で、Resultの中に入っている)
こいつを、他と同じようにトラップできればいいんだが……。
0302デフォルトの名無しさん2008/07/10(木) 11:44:58
>>297
>>299
http://www.tcl.tk/doc/howto/thread_model.html
0303デフォルトの名無しさん2008/07/10(木) 14:59:25
>>301
TCL_ERRORだったらResultを出力すればいいだけじゃね?
0304デフォルトの名無しさん2008/07/10(木) 22:13:52
>>298
なんでそんなことそをする必要があるかもう少し詳しく書いた方がいいぞ。そうしないと、
>>303みたいにすりゃいいだろ思うんだが
if (Tcl_Eval(interp, script)!=TCL_OK) {
char str;int len;Tcl_Channel e=Tcl_GetStdChannel(TCL_STDERR);
str=Tcl_GetStringFromObj(Tcl_GetObjResult(interp), &len);
Tcl_Write(err,str,len);Tcl_Flush(interp,err);
}
03053042008/07/10(木) 22:23:39
あー、どうでもいいけど、Tcl_WriteObjつかうと、Tcl_GetObjResultから一発で済むわ。
0306本田2008/07/22(火) 20:12:44
TkSTEP 0.3b3 (Tk 4.1)
NEXTSTEP(tm)-lookalike-wanabee-hack-kit for Tk
Alfredo K. Kojima
tkstep0.3b3.tar.gz
tkstep8.0.4-2.tar.gz

Alfredo Kojima
http://en.wikipedia.org/wiki/Alfredo_Kojima
Alfredo Kengi Kojima
http://si3.inf.ufrgs.br/informa/Edicao12/entr_ago00.htm

TkSTEPは、現在、開発がストップしてるけど、
windowmakerなど他の仕事で作者は有名なんだな。
0307本田2008/07/23(水) 01:18:22
The Tcl IRCd
http://www.hping.org/tclircd/
The Tcl IRCd is an IRC server written in the Tcl language.
The current version is not a complete implementation of the IRC protocol
but should interoperate well with most IRC clients, and allows to register,
change nick, create channels, talk on a public channel or in query and so on.
The program is small,
less than 500 lines of code, and was written in order to be very simple to modify/extend.
0308デフォルトの名無しさん2008/07/24(木) 04:12:37
string hoge とかって具合に 任意の string * コマンド(?)を追加したりはできないでしょうか。
0309デフォルトの名無しさん2008/07/24(木) 20:37:58
proc stringHello {} {puts "HELLO WORLD"}

set map [namespace ensemble configure string -map]
dict append map hello stringHello
namespace ensemble configure string -map $map

string hello


ただし8.5以上。

8.4のときはstringコマンドをtcl_stringなんかに名前を変えて
そのうえでそれのラッパーのstringを作ったりしてた。
0310デフォルトの名無しさん2008/07/24(木) 23:57:42
>>269
>$$$c とか $[$[$c]] とか…
puts [subst $[subst $[subst $c]]]

遅レスだが…
0311デフォルトの名無しさん2008/07/27(日) 18:35:14
>>269 & >>310
$$var (間接指定)について
http://psg.com/%7Ejoem/tcl/faq.html#DoubleIndirect
に丁寧な説明がある。
古い我家頁だが、今でもアクセス可能と思う。

0312デフォルトの名無しさん2008/07/29(火) 00:59:08
BrowseX for Windows使ってた人いない?
いきなり消滅してて悲しい・・・
0313デフォルトの名無しさん2008/08/02(土) 08:48:51
Active Tcl やっと8.5.3になった
0314デフォルトの名無しさん2008/08/05(火) 04:33:00
tclコードをソース隠ぺいのため、バイナリ化または、
暗号化したいがどうすればよいでしょうか?
0315デフォルトの名無しさん2008/08/05(火) 21:26:28
バイナリ化(exe化)ならここに色々ある。
http://home.netyou.jp/22/tanida/MazeOfProgram.htm
隠ぺいのためになるかは不明.
0316デフォルトの名無しさん2008/08/11(月) 10:37:56
comポートとかソケットをopenで開いてgetsした時、
相手が何も返してこないと、一生待ちつづけてしまうのですが、
タイムアウトさせたりする方法は無いですか?
0317デフォルトの名無しさん2008/08/12(火) 07:07:15
>>316
Tcllibは調べた?
0318デフォルトの名無しさん2008/08/12(火) 08:05:26
>>316
fconfigure -blocking
fileeventで非同期に処理するのが良いと思う
0319デフォルトの名無しさん2008/08/13(水) 20:58:56
>>316この手のシークエンスを記述するためにafter ms命令が用意されている
03203162008/08/14(木) 09:50:55
>>318
fileeventがまさに探していた機能です
サンクスコ

>>319
それは考えたけど、一度発行したgetsを取り消す術がないからダメポ
0321デフォルトの名無しさん2008/08/24(日) 00:56:41
foreach {o i } [regexp -all -inline {<item>(.*?)</item>} $read] {
のlsearchとかlreplaceとかで、ネストタグの抽出が簡単にできるのが良い。
perlより全然良い。日本語が問題なく使えるのが良い。簡単GUIも良い。
foreachの中のregexpが速ければもっと良い。なかなか最適化ができない。



0322デフォルトの名無しさん2008/08/24(日) 01:10:16
tclの正規表現は早いほうって聞いたけどなあ・・・
0323デフォルトの名無しさん2008/08/24(日) 02:59:06
Tclで書いたスクリプト自体はそれほど早く動作しないよね。
TclはJITに対応してるという記述がちらほら(wiki.tcl.tk含む)で見かけたので
ソースコードを調べたら、スクリプトを内部表現に書き換えるコンパイラはあっても
CPUのニーモニックに直接変換してる実装部分は見当たらなかった。

インタプリタ自体がやってることはそれほど複雑ではないので(ほとんどがコマンド自体の実装)
誰か実装してくれればいいなとは思うが、
googleのannualのフォーラムでの議題には特にあがっていないようだ。
0324デフォルトの名無しさん2008/08/24(日) 09:13:12
速くしたけりゃその部分だけCで書け
そもそも
コマンド 引数 引数 ...
しかなくて、構文などというものもない簡易言語に期待しすぎでしょ。
0325デフォルトの名無しさん2008/08/24(日) 22:12:31
その理屈で言うと括弧しかなくて構文などというもののない簡易言語にも期待できないのか。
それはさておきTclでバイトコードコンパイルしてるってのだけで驚異的じゃない?
Tclって意味論的には素直に考えるとevalに満ち溢れたような代物でしょ。
0326デフォルトの名無しさん2008/08/25(月) 00:18:54
インタプリタ作ったり、DLLやsoを簡単にロードできたり、Cとの融合が十分考慮されてる言語なんだから、
処理速度を要求される部分はCで作った方がいいでしょ、マジで。
0327デフォルトの名無しさん2008/08/25(月) 01:11:39
別にそこには反論してないよ。
それはTclのシンタクスとは直接の関係はないし、Tclが簡易言語とも思わないけど。
0328デフォルトの名無しさん2008/08/26(火) 00:03:21
stdinを1文字単位で扱いたいのですが・・可能ですか?
Enter押すまで入力待ちになってしまいます。
機種依存が必要であればlinuxでお願いします。
proc getch {} {
return [read stdin -nonewline]
}
目的は簡易lessコマンド作成です。
0329デフォルトの名無しさん2008/08/26(火) 00:10:49
>>327
tclはねぇ、ローカルスコープ切れないからちょっとプロシージャが長くなると変数がゴッチャになるのよ。
長いもの書くには向かないと思うがね。
0330デフォルトの名無しさん2008/08/26(火) 00:44:05
zero3 [es]でeTcl使ってるんだけど・・・バージョン進むにつれてサイズでかくなりすぎ。
最新版はついに起動できなくなったwww
動的に拡張を読み込めるのがTclの利点なのに、一つの実行形式に使わない拡張までまとめないで欲しい・・・
0331デフォルトの名無しさん2008/08/26(火) 01:37:04
>>329
Tclなめんな!

proc block {body} {
    eval $body
}

set x 100
set y 1000
block {
    set x 200
    upvar y y
    puts "value is $x $y"; # value is 200 1000
}
puts "value is $x $y"; # value is 100 1000
0332デフォルトの名無しさん2008/08/26(火) 01:41:54
>>328
http://wiki.tcl.tk/14693
まあこれを読め

http://tcllib.sourceforge.net/doc/receive.html
そして次はこれだ
0333デフォルトの名無しさん2008/08/26(火) 03:33:43
>>332
ありがとうございます。
解決しました!
0334デフォルトの名無しさん2008/08/26(火) 17:03:54
>>331
blockがたくさんネストしたらどこまでupvarしたらいいかわかんなくなっちゃうね。
0335デフォルトの名無しさん2008/09/08(月) 13:49:03
日本語に関して質問です。
encoding systemがwindowsではcp932, Linuxではutf-8となっていて、
スクリプトを書くさいにそれぞれの文字コードで保存せねばなりません。
(string bytelengthはいずれの環境も一緒になるので内部ではutf-8のようですが)
ですので、windowsで作ったスクリプトをそのままLinuxに持っていくと文字化けしてしまい困っております。

encoding systemをcp932やutf-8に強制的にセットしたところで上手く動きません
(windowsでencoding system utf-8にし、スクリプトをutf-8で保存しても文字化け、等)

encoding systemの異なる環境間で同一スクリプトで動かす手立てはないものですかね。
0336デフォルトの名無しさん2008/09/08(月) 20:35:03
Unicodeリテラルで書く。
0337デフォルトの名無しさん2008/09/10(水) 03:14:41
>>335
もし8.5を使ってるんだったら、、sourceやtclshやwishに-encodingオプションが付いたから、
スクリプトはcp932で書いておいて、最初の3行を

#!/bin/sh
# the next line restarts using tclsh \
exec tclsh -encoding cp932 "$0" "$@"

にすることで、できたりしませんか?

逆に、スクリプトはutf-8で書いておいて、
windowsの関連付けの方で、wishに -encoding utf-8を付けるという手もあるかも。

試せないので、無責任に書きっぱなしですいません。


ところで、スクリプトをwindowsからLinuxへ持っていくときに
nkf通して変換というのじゃ駄目なんでしょうか。
0338デフォルトの名無しさん2008/09/10(水) 07:12:11
>>335
shift-jisで書いておいて
#!/bin/sh
# \
LANG=ja_JP.SJIS; export LANG; # \
exec tclsh "$0" "$@"

で動くかもしれないし、動かないかもしれない。
03393352008/09/10(水) 10:06:33
>>336
よくわかりません。

>>337
8.4使っているのですいません。
(ActiveTclの拡張が8.5では少なすぎるので)
Linux側で修正したりwindows側で修正したりしたのを日付で同期してるのでnkfやiconvは使いにくいですね。

>>338
凄いぜ。
putsでターミナルに出力する文字は化ける(konsoleのモードがutfだからしかたない)が、
widgetに出力する文字はきちんと出たよ〜。
0340デフォルトの名無しさん2008/09/10(水) 20:07:26
>>339
puts \u0055\u0069\u0063\u006f\u0064\u0065\u30ea\u30c6\u30e9\u30eb\u304f\u3089\u3044\u3050\u3050\u308c
0341150.29.213.49 3352008/09/10(水) 21:37:28
>>340
それはさすがに嫌杉でしょw
0342デフォルトの名無しさん2008/09/10(水) 23:21:08
>>339
putsは fconfigure stdout -encoding utf8 とかで化けなくなると思う。
でも、そこまで文字コード意識するならWindows<->Linuxでコピーする時に変換するほうが良いんじゃないの?

最近ActiveTcl8.5.4に乗り換えたけど一見拡張が入っていないように見えて、実は Tcl\lib\teapot\package\ 以下に
入っているように思った。
0343デフォルトの名無しさん2008/09/11(木) 21:48:49
>>341
この技はおぼえておけ。かならず役に立つときが来る。
0344デフォルトの名無しさん2008/09/12(金) 22:20:20
>>339
>>342
ActiveTcl8.5.x のインストーラの最初の画面で、

8.5は8.4とほとんど互換性があるから、
teacupを使うか8.4に上書きインストールしたら
たくさんのパッケージが手に入る。

というようなことが書いてました。
まだ8.5に乗り換える気はないんで、それだけ見てキャンセルしたけど。
0345デフォルトの名無しさん2008/09/17(水) 02:39:50
>>331
>>334
見つかるまでさかのぼるupvarを書いてみました。
upvarが上位の変数名とローカル変数名を並べて書くのに対し、
上位の変数名だけ並べて書いて同じ名前でリンクするようにしてます。

proc upvar2 {args} {
  set leveldepth [info level]
  foreach varname $args {
    for {set varlevel 2} {$varlevel <= $leveldepth} {incr varlevel} {
      if {[uplevel $varlevel info exists $varname]} {
        incr varlevel -1
        uplevel 1 upvar $varlevel $varname $varname
        break
      }
    }
  }
}
0346デフォルトの名無しさん2008/09/19(金) 21:57:20
windows mobile でeTcl使ってプログラム作ってたらメモリが足りなくて死んだorz
image photoって、-paletteで色数制限しても内部はフルカラーメモリ展開するのね。
やっぱ、WMで使うには富豪過ぎるか、Tclはorz
0347デフォルトの名無しさん2008/10/16(木) 04:52:51
内部イテレータ欲しい
0348デフォルトの名無しさん2008/10/27(月) 13:15:30
Tclを久しぶりに書いてみたら、firefox用のpluginが正常にインストールできません。
どういう状況なのでしょうか?ご存知でしたら教えてください。

0349デフォルトの名無しさん2008/10/27(月) 15:39:46
>>348
スネーク。状況をもう一度よく確認するんだ。

Tcl → バージョンが上がらない
Firefox → バージョンあがりまくり

放っておかれたアドオン(plugin)はどうなる?
0350デフォルトの名無しさん2008/10/28(火) 07:20:41
>>348
了解

メインバージョンが上がらないと更新されない訳ですね。
0351デフォルトの名無しさん2008/10/31(金) 16:09:38
300Kbyte程のTclTkを書いてみた。
っかZETってソフトのちょい変だけど。

ttp://carnageez.web.fc2.com/catdir/cat.html
0352デフォルトの名無しさん2008/10/31(金) 22:10:52
10秒見ただけだが、名前空間使わずによくこんだけ書いたな
0353デフォルトの名無しさん2008/11/01(土) 05:18:31
>>352
名前空間って何?( ゚д゚)ポカーン
0354デフォルトの名無しさん2008/11/01(土) 05:45:22
>>353
http://www.tcl.tk/man/tcl8.3/TclCmd/namespace.htm
0355デフォルトの名無しさん2008/11/01(土) 07:09:06
>>354
ありがと。
へえーーなんちゃってオブジェクト化って感じなんだね。
0356デフォルトの名無しさん2008/11/01(土) 09:51:35
Tcl 8.5からapplyコマンドでラムダ式とかが使えるらしいんだけど、
なんか入門的な情報ない?
0357デフォルトの名無しさん2008/11/01(土) 16:24:05
set lis [another commend]
for e $lis { something $e }
とかやらずに、$lisに直接何かを作用して写像を得たり、
フィルタリングできるの?
0358デフォルトの名無しさん2008/11/01(土) 22:49:17
初心者すぎてすいません。
tclのproc関数の出力をtkのテキストに書き出すにはどのようにすれば
いいのでしょうか?
いまいちtclとtkの連携方法がわからず困っています。
0359デフォルトの名無しさん2008/11/02(日) 02:01:41
んと、こんなんやってる
set str "hogehoge"

f_text_update $str

proc f_text_update {win str}
if {![winfo exists $win]} {
text $win
grid $win -column 0 -row 0
}
$win delete 0.0 end
$win insert end $str
}
0360デフォルトの名無しさん2008/11/02(日) 02:12:55
んもしや回答を誤ったか?

f_text_update [f_proc_func]

proc f_proc_func {} {
return "hogehoge"
}

これでどうだ
0361デフォルトの名無しさん2008/11/02(日) 06:25:56
>>359-360
ありがとうございます。
試してみます!!
0362デフォルトの名無しさん2008/11/05(水) 11:35:53
>>356
この記事は読んだ?
http://wiki.tcl.tk/4884
0363デフォルトの名無しさん2008/11/05(水) 23:30:13
λx.λy.x(2)(3)
みたいなことをやろうとして、
apply {{x} {return [apply {{y} {return x}} 2]}} 3
てやっても
x
が返ってくる。
で、
apply {{x} {return [set [apply {{y} {return x}} 2]]}} 3
ってやれば3が帰ってくるが、setを使っている時点で2回目のapplyの戻り値が変数名であることを前提にしていて気持ち悪い。

0364デフォルトの名無しさん2008/11/08(土) 14:38:54
ツール組込みのtcl環境でもlambda使いたい
0365デフォルトの名無しさん2008/11/10(月) 23:01:54
>>363
こりゃーいったい何をやろうとしとんじゃ?return xで
文字列のxが返るのはあたりまえじゃないか
0366デフォルトの名無しさん2008/11/11(火) 14:14:10
>>365
単に$のつけ忘れじゃ?


ついでに質問。
{}内の変数は置換されないよね?
そうすると、applyの引数にとる関数にはその引数で宣言した変数しか出てこれない。
これだと、例えば「xを引数にとって、『引数yをとって、yとxとの和を求める関数』を返す関数」とかが表現できない気がするんだけど…
""だとyが束縛されてないし…無理矢理置換するしかない?
0367デフォルトの名無しさん2008/11/11(火) 20:25:25
答えると、Tclにはクロージャ無いねん。
だからxを置き換えるしかないんじゃないかなあ。

set func {x {return [list y [list expr $x + \$y]] }}
apply [apply $func 1] 2
3

こういうこと?
0368デフォルトの名無しさん2008/11/12(水) 00:20:16
>>365
λx.λy..x
=λx.x
でしょ。
こうならないってこと。
0369デフォルトの名無しさん2008/11/12(水) 08:27:21
>>368
> >>365
> λx.λy..x
> =λx.x
> でしょ。

そんなequalityを持つλ計算の体系は見たことが無い
0370デフォルトの名無しさん2008/11/14(金) 22:42:02
結局なんだったんだ。もう
0371デフォルトの名無しさん2008/11/15(土) 10:04:27
>>370
同感
0372デフォルトの名無しさん2008/11/15(土) 10:11:42
点が余計に入った
λ.x.(λy.x)は変換するとλx.xだろうと。
0373デフォルトの名無しさん2008/11/15(土) 18:14:51
>>372
お前が前提にしているλ計算の公理系を言え。
通常のβη変換ではλx.(λy.x) = λx.xは導出できない。
0374デフォルトの名無しさん2008/11/30(日) 09:35:24
Tcl and the Tk Toolkit, Rough Cuts, 2nd Edition
* By John K. Ousterhout, Ken Jones
http://www.informit.com/store/product.aspx?isbn=0321601750&rll=1

ついこの前プレンティスから出てる妙に読みにくいTcl本買った俺涙目
0375デフォルトの名無しさん2008/11/30(日) 19:08:03
日本語で良書なTcl本ってなにがあるかな
0376デフォルトの名無しさん2008/12/01(月) 20:34:12
ものすごいつまらんこと聞いていいっすか?

Tclって、pythonで言うところのinputとかraw_inputって無いの?
0377デフォルトの名無しさん2008/12/01(月) 22:11:19
gets
0378デフォルトの名無しさん2008/12/02(火) 09:18:28
>>376
pythonで言うところのinputって何をするものか書いたほうがアドバイスもらえると思うが?
03793762008/12/02(火) 20:46:30
>>378
それもそうですね。失礼しました。自分は職業プログラマではな
いのであんまりうまく説明できそうにないですが。。
webで見つけた説明によれば、

raw_input関数
標準入力から1行読み込んで(末尾の改行をのぞいたものを)文字列に変換して返す。

>>> s = raw_input()
test
>>> s
'test'

とこんな感じです。上記はインタプリタでの動作です。
呼ばれると、ユーザの入力を待つモードになります。
ユーザが文字列を入力すると変数に文字列が代入されます。
input関数は数値入力用です。
0380デフォルトの名無しさん2008/12/02(火) 20:56:09
やっぱgetsでいいじゃん

tclsh>gets stdin s
test
tclsh>puts $s
test
03813792008/12/02(火) 23:32:57
>>380
レスありがとうございます。

getsにはそんな風に書くんですね。
channelIdってのが何を指してるのかサッパリでした。。

明日会社に行ってまた試してみます。
たまーに仕事用ツール作成でスクリプト書くんですが、
諸事情あって今回はTclにで書いていて。。
0382デフォルトの名無しさん2008/12/04(木) 00:53:01
scan $str "%s,%s,%s,%s" a b c d
とかもあるよ。scanfみたいなの。
また正規表現を使った読み込みとか便利
set fp [open $fname]
gets $fp str
regexp {\[\s*\s*\]\s*(\w+)} $str d1 d2とかね

以下が改行取って読み込みとか
set fp [open $fname];gets $fp str
foreach i [split $str "\n"] {

}
以下とかするとバイナリファイルも開けるよ
set fp [open $fname]
fconfigure $fp -translation binary
binary scan [read $fp 1000] H* str
0383デフォルトの名無しさん2008/12/04(木) 22:00:38
binary scanとbinary formatの使い方をすぐ忘れちゃうのは秘密だ
0384デフォルトの名無しさん2008/12/04(木) 22:04:45
>>375
Tcl/Tkデスクトップリファレンスには超おせわになった。
あとEffective Tcl/Tk。この2冊はTcl/Tk修行時代の
10年位前にかなり読んだ。
0385デフォルトの名無しさん2008/12/10(水) 21:58:58
Tcl初心者です。すみません、教えて下さい。

ビルトインコマンドにラッパーをかける事は
できるのでしょうか。

例えば

proc wrapper {cmd} {
catch {eval {$cmd}} status
puts "$cmd , $status"
}
:
alias expr {wrapper expr}
:
expr {1+1} ;# wrapper {expr {1+1}} -> expr {1+1} ,0

的な感じです。
0386デフォルトの名無しさん2008/12/11(木) 22:04:10
>>385
これじゃ無限ループになるだろ。exprはrenameして新たにラッパーのexprを定義すれば?
0387デフォルトの名無しさん2008/12/17(水) 17:04:55
>312
>BrowseX for Windows使ってた人いない?

Hv3というtkhtmlベースのブラウザならある。
http://tkhtml.tcl.tk/hv3.html
0388デフォルトの名無しさん2008/12/19(金) 21:06:51
Dr. OusterhoutがTclコアチームから抜ける。
http://groups.google.com/group/comp.lang.tcl/browse_thread/thread/99e2693293b3c945/e54399b0a7dd8ec1?show_docid=e54399b0a7dd8ec1&pli=1
0389デフォルトの名無しさん2008/12/22(月) 21:53:03
プログラムから逃げてきたのに卒論で無理やりやらされてる
Cで作ったexeファイルをtcl/tkで作ったGUI上で実行したりできるの?

ていうかこんなことも分からない感じで死にそう・・・
0390デフォルトの名無しさん2008/12/22(月) 23:27:50
>>388
そしてその翌日itclのコア組み込みが決定したのであった・・・!

>>389
CでCUIのexe作って、Tcl/Tkでガワ作って、パイプで接続とか。
まあどんなことがやりたいかによる。CでDLL作って、それをTcl/Tk
から使うほうが楽かもしれない。
0391デフォルトの名無しさん2008/12/23(火) 00:07:48
>>389
unixだと楽だが、windowsだと面倒。
0392デフォルトの名無しさん2008/12/23(火) 11:28:21
え、incr Tcl?
正直オブジェクト指向を入れるなら参照とガベコレの概念を入れる前提で
デザインしなおしたほうがいいのに・・・
(逆に言うとこの2つを入れればオブジェクト指向はこれまでどおり拡張でいいし)
オブジェクト手動開放とか今日日ありえないっすよ。
0393デフォルトの名無しさん2008/12/23(火) 11:40:20
>>391
んなこたーない。
execで実行するだけ。
so, dllも同じソースで簡単に作れるし(windowsはmingwのgcc使ってるけど)
0394デフォルトの名無しさん2008/12/23(火) 19:53:07
いやwindowsは苦労するよ。
pathや引数周りに落とし穴がいっぱいある。

MSが早くcygnusを買収してくれればいいのに。
0395デフォルトの名無しさん2008/12/23(火) 20:02:39
>>394
落とし穴ってなに
0396デフォルトの名無しさん2008/12/23(火) 23:13:52
path周りの避け方はマニュアルに書いてあるだろ。
で、なんでcygnusが出てくるんだ?
もはやTclはcygwinをサポートしてないぞ。
素直にActive TclをインストールしてCはMinGW使えばいい。
0397デフォルトの名無しさん2008/12/23(火) 23:38:12
8.6b1きたあああああ!!!
try 〜 throwきたあああ!!!
zlibきたあああ!!!
ttk::spinboxきたあああ!!!
tk fontchooserきたああああ!!!
Canvasの回転文字きたああああ!!!
ttkのvistaテーマきたあああ!!!
0398デフォルトの名無しさん2009/01/06(火) 12:23:24
今M1だが、修論でtcl使うはめになってubuntuの起動から勉強してるところなんだけど、
tclでパラレルポートからの入力って使える?
その辺含んだお勧めの書籍なんかあれば知りたい。
0399デフォルトの名無しさん2009/01/06(火) 21:25:39
http://wiki.tcl.tk/2816
まずは適当に検索してみればいいとおもうの。
0400本田2009/01/08(木) 21:18:47
AC3Dマニュアル
http://panda.ecs.cst.nihon-u.ac.jp/~hiroshi/ac3d/ac3dmanj.html
1998年11月6日更新 - AC3Dバージョン2以降に対応

AC3D
http://mail2.nara-edu.ac.jp/~asait/graphics/ac3d/ac3d.htm
>3 次元模型 (モデル) を作るためのソフトはモデラーと呼ばれています。
> AC3D はそのモデラーの一つで、随分人気があるようです。
> AC3D は今では商用ソフトになってしまいました。

Shareware Version.
http://locgate.smtn.stavropol.ru/DOCs/Programming/OpenGL/ac3dwinsw2.zip
古いけどTcl/Tkスクリプト使用して参考になる。

最新版。
http://www.inivis.com/
0401本田2009/01/09(金) 21:21:13
These are some sample files for the 3D modeller - AC3D
ftp://ftp.uni-duisburg.de/CAD/AC3D/acfiles.tgz

AC3D Manual(Updated 11th March 1999 - Covers AC3D Version 2 onwards)
ftp://ftp.uni-duisburg.de/CAD/AC3D/ac3dman.zip
ftp://ftp.uni-duisburg.de/CAD/AC3D/ac3dman.tgz

AC3D Manual Ver. 3.4.1
ftp://ftp.uni-duisburg.de/CAD/AC3D/ac3dman.pdf

http://locgate.smtn.stavropol.ru/DOCs/Programming/OpenGL/ac3dwinsw2.zip
に付属のGLU32.DLLとOPENGL32.DLLは、おそらくWindows95用でしょう。

Windows95以降に発売されたWindowsには、
GLU32.DLLとOPENGL32.DLLが付属してるとはずなので、
Windows95以降に発売されたWindowsをお使いの場合は、
AC3D v.2.0付属のGLU32.DLLとOPENGL32.DLLを削除したほうが、
AC3D v.2.0の安定性や速度が改善される可能性があります。
0402デフォルトの名無しさん2009/01/13(火) 00:08:38
すみません質問させて下さい。
以下のコードのように、プロシージャfooを作っておいて
複数のボタンをpackする作業をまとめたいと考えています。

proc foo {w msg} {
pack [button $w.$msg -text $msg -command {puts $msg}]
}

pack [frame .f]
foo .f "b1"
foo .f "b2"

ところがボタンを押してcommandを実行させると、
以下のエラーが出ます。
Error: can't read "msg": no such variable

ボタンを押したときにローカル変数msgを参照できていないということだと
思いますが、何か良い解決策はありませんか?
よろしくお願いします。
04034022009/01/13(火) 00:10:15
使用環境を書き忘れました。
WindowsXPでActiveTcl8.5.4.0.286921-win32-ix86-threaded.exe
をインストールして使っています。
0404デフォルトの名無しさん2009/01/13(火) 00:30:21
-command "puts $msg"
04054022009/01/13(火) 00:56:06
>>404
できました!
"と{との違いを調べてきます。
早速の回答ありがとうございます。
0406デフォルトの名無しさん2009/01/13(火) 12:59:47
>>402
{}の違いがポイントではなく、-command で指定するコマンドが関数の外で実行されることがポイントなのです。
msg変数は関数fooのローカル変数なので、関数の外で実行されるボタンのコマンドからは参照できません。
0407デフォルトの名無しさん2009/01/13(火) 21:28:04
>>404 ではないですが、もう少し補足しておきます
set msg AAA; pack [button .b -text PushMe -command "puts $msg"]
としておいて、ボタン.bを押すと当然、AAAとコンソールに表示されます。
続けて、set msg BBBとしてボタン.bを押してみて下さい。
コンソールにAAAと表示されますね?
これはどういうことかというと、
04084022009/01/14(水) 19:29:14
補足説明ありがとうございます!

>>407
ボタン.bを生成する時点で変数msgを"puts AAA"という文字列に
展開していたため、ですよね?

button配置は""で解決できましたが
今度は-textvarを使うウィジェット生成をまとめようとして壁にぶつかりました。
>>406, >>407のことから色々考えてevalを使ったら自己解決できました。

pack [entry .e1 -textvar a1] ;# ←この文をすっきりさせたい
pack [entry .e2 -textvar a2] ;# ←この文をすっきりさせたい

proc foo {w var} { pack [eval entry $w -textvar $var] }
foo .e3 a3 ; foo .e4 a4

でも、C言語やPerlをよく使っている身としては、
ポインタを渡せれば良いのになあと、何だかもぞもぞした気分になりました。
0409デフォルトの名無しさん2009/01/14(水) 20:59:03
何をしたいかわかってないが、たぶんそのevalは不要
04104022009/01/14(水) 21:08:00
あら本当だ。。
「-textvar 変数名を表す文字列」だから
ウィジェット生成時にvarを文字列に展開してOKということでしょうか。
落ち着け>オレ
0411本田2009/01/14(水) 22:13:21
>>408
> でも、C言語やPerlをよく使っている身としては、
> ポインタを渡せれば良いのになあと、何だかもぞもぞした気分になりました。

C言語知ってるんなら、Tclのソースコードを読んだらいいのに、
Tcl8.0位がコンパクトで読みやすいし古すぎない。
04124022009/01/15(木) 01:47:16
>>411
うーん。。多分自分のC言語の実力程度ではソースを読んでも理解できなさそうな予感がします。
あと正直なところ、自分としてはあまりtcl/tkは好きになれず、あまり深入りしたくありません。。
(今はやむを得ぬ事情があって触っています。せめてperl/tkが使えれば良かったかもと思います)

tcl/tkならではの魅力があるのは分かるんですが(簡単にGUIを使えて複数のOSで動かせるとか)、
他の言語なら当たり前のようにできる記述方法ができなかったりすることが多いので
結構ストレスがたまってしまいます。
たとえば行末のコメントは、「# コメント」では駄目で「;# コメント」ならOKとか、
理由は分かっても不自由さがぬぐえません。

自分にもっと実力があればラッパーかプリプロセッサを自作したくなるだろうと思います。
上のコメントの例なら、ごく単純には sed 's/\/\//;#/g' すればストレスが減るかもしれません。

とか何とか愚痴をこぼしながらもtcl/tkの本を2冊買ってしまいました。
でも最新バージョンの便利そうなウィジェットの説明などはネットで調べた方が良さそうですね。
0413デフォルトの名無しさん2009/01/15(木) 07:35:43
Tcl/Tkの本がまだ2冊もあったか。
0414デフォルトの名無しさん2009/01/15(木) 10:27:13
CとリンクしやすいのでTclはメインにしてもよし、サブで使ってもよし。
文字列処理がやりやすいのでファイル入出力とGUIはTcl/Tk、その他はCとかでもいいし。
0415本田2009/01/21(水) 19:06:18
Ayam is a free 3D modelling environment for the RenderMan interface, distributed under the BSD licence.
http://ayam.sourceforge.net/
Ayam features at a glance:
* RIB (RenderMan Interface Bytestream) export and import.
* Support for NURBS curves and (trimmed) NURBS surfaces, Boxes, Quadrics (Sphere, Disk, Cylinder, Cone, Hyperboloid, Paraboloid, and Torus), CSG, MetaBalls, Patch Meshes, Polygonal Meshes, and Subdivision Surfaces.
* NURBS modelling includes approximating and interpolating curves as well as extrude, revolve, sweep, birail, skin and gordon objects with caps, holes, and bevels.
* Custom objects that may freely implement their representations (using OpenGL and RIB) and even small GUIs to edit their type specific parameters may be written by the user and dynamically loaded at runtime.
* Scripting interface: Tcl.
* Misc: instancing, arbitrary number of modeling views, object clipboard, independent property clipboard, console, n-level undo.
* File formats (r/w): RIB, DXF, 3DM, 3DMF, OBJ, X3D.

AC3Dは、ポリゴンモデラーだけど、Ayamは、NURBSもサポートしてます。
0416デフォルトの名無しさん2009/01/22(木) 19:17:56
Python/Tkでソースの間違いを見つけられないのですが、
探してもらってもいいですか?
0417デフォルトの名無しさん2009/01/23(金) 01:44:36
TCL/TKなら俺に聞け
Python/Tkなら他所で聞け
0418デフォルトの名無しさん2009/01/24(土) 01:56:00
>>417
座ぶとん10枚! ̄ー ̄)ノ〜■
0419本田2009/02/01(日) 08:39:59
BRL-CAD
http://brlcad.org/
http://brlcad.org/wiki/Documentation
http://brlcad.org/wiki/Users_group_presentations
BRL-CAD's integration with TclTk
http://brlcad.org/w/images/3/3a/TclTk_Integration.pdf
BRL-CAD スクリーンショット
http://www.cadcamcube.jp/brlcad2.html
0420本田2009/02/09(月) 18:37:46
>>419
ArcherとMGEDの2つのUIがあります。
Archerは、GUIを使います。
MGEDは、CUIで、
puts {Hello,World!}と入力すると、
Hello,World!とエコーします。
0421本田2009/02/09(月) 19:35:59
いま、欧米で一躍注目を集めているアプライアンス化された高速オブジェクトストレージ製品が、Panasasです。
公的研究機関におけるHPC分野から、企業のハイパフォーマンスのシミュレーション分野まで、
次々と導入が進んでいます。

本セミナーでは、Panasas社の開発責任者であるBrent Welch氏に来日いただき、
海外の研究機関での利用例や、最先端の導入成果と製品アーキテクチャについて語っていただきます。
ぜひこの機会に、今世界から注目を集める革新的なストレージソリューションの全貌を、
実機デモもご覧いただきながら実感ください。

ご多忙の折とは存じますが、皆さまのご参加を心よりお待ち申し上げます。
http://spider.ctc-g.co.jp/web/fm/edu/2008096g

HP2C製品 - Panasas ActiveStorストレージクラスタ
http://www.hp2c.biz/doc/HP2C.Biz/hp2c_panasas.html
http://www.hp2c.biz/doc/HP2C.Biz/hp2c_panasas_as5k.html

http://www.panasas.com/
0422本田2009/02/09(月) 19:54:12
>>421
POSIX IO extensions for HPC
Brent Welch, Panasas, [welch@panasas.com]
http://www.usenix.org/events/fast05/wips/welch.pdf
POSIX I/O High Performance. Computing Extensions. Brent Welch (Speaker). Panasas.
http://www.usenix.org/events/fast05/wips/slides/welch.pdf
0423本田2009/02/11(水) 20:59:15
>>422
POSIX IO
pNFS
OSDv2
Brent Welch, Panasas Inc.
HECIWG-FSIO 2007
http://institutes.lanl.gov/hec-fsio/workshops/2007/presentations/day3/Welch-HECIWG%20FSIO%202007%20Standards%20Update.pdf

Managing Scalability in Object Storage Systems for HPC Linux Clusters
Brent Welch
Panasas, Inc
6520 Kaiser Drive
Fremont, CA 94555
Tel: 1-510-608-7770
e-mail: welch@panasas.com
Garth Gibson
Panasas, Inc
1501 Reedsdale Street, Suite 400
Pittsburgh, PA 15233
Tel: 1-412-323-6409
e-mail: garth@panasas.com
http://storageconference.org/nasa/conf2004/Papers/MSST2004-49-Gibson-a.pdf
0424本田2009/02/13(金) 18:42:01
Index of /tcl/ftparchive
ftp://ftp.uni-hannover.de/pub/mirror/tcl/mirror/ftp.procplace.com/index.html
>[DIR] Parent Directory 29-Jan-99 12:30 -
>[DIR] FAQ/ 29-Jan-99 12:22 -
>[DIR] NEW/ 17-Apr-00 13:53 -
>[TXT] README.html 11-May-97 16:31 1k
>[DIR] TclX/ 06-Feb-00 18:58 -
>[DIR] alcatel/ 10-Sep-99 17:19 -
>[CMP] all.files.list.gz 12-Jan-00 00:00 74k
>[DIR] binaries/ 29-Jan-99 12:22 -
>[DIR] incoming/ 24-Feb-01 00:36 -
>[DIR] markd/ 29-Jan-99 12:21 -
>[DIR] mirror/ 29-Jan-99 12:21 -
>[DIR] neoscript/ 05-Aug-99 15:54 -
>[DIR] neosoft/ 29-Jan-99 12:21 -
>[DIR] neowebscript-sa/ 29-Jan-99 12:27 -
>[DIR] neowebscript/ 05-Aug-99 15:54 -
>[DIR] old/ 29-Jan-99 12:19 -
>[DIR] sorted/ 19-Oct-99 19:33 -
>[DIR] stuff/ 29-Jan-99 12:19 -
>[DIR] tclx-distrib/ 06-Feb-00 18:58 -
0425デフォルトの名無しさん2009/02/18(水) 19:28:30
ruby tkをはじめたばかりなんですがWin32で言うところのSetTimerは
どのように実現したらよいのでしょうか?

0426デフォルトの名無しさん2009/02/18(水) 20:23:45
after
0427デフォルトの名無しさん2009/02/18(水) 20:37:28
>>462
トン
0428デフォルトの名無しさん2009/02/24(火) 20:57:52
おめでとう
Active Tcl/Tk ver.8.5.6 になった。
0429デフォルトの名無しさん2009/02/24(火) 21:36:08
まだ8.5使ってんのか。俺はもう8.6に移行した
0430デフォルトの名無しさん2009/02/24(火) 22:14:41
8.6は、まだ対応を謳ってない主要ライブラリがあるよ。tcllibとか。
もちろん、使うのは自由だが。
0431デフォルトの名無しさん2009/02/24(火) 22:16:37
最近のTkはナウなヤングにバカウケな感じの見た目になった?
0432本田2009/02/25(水) 00:28:20
>>431
プッ。
0433デフォルトの名無しさん2009/02/25(水) 01:37:24
Tcl/Tkは時代遅れな気がしてPythonでもやるかと思ったが、
インスコしたらTcl/Tk一式入ってきたので、萎えた。
Tkが他のLLで使われる限りTcl/Tkは不滅だな、こりゃ。
0434本田2009/02/25(水) 20:17:07
>>433
Tile: an improved themeing engine for Tk
http://tktable.sourceforge.net/tile/
0435デフォルトの名無しさん2009/02/28(土) 16:26:43
Tcl/TK で作られた端末エミュレータってありますか?
GUI上でシェル使いたいんですけど

イメージとしては GUI上に Textウィジェットみたいなものがおいてあって、
その中でシェルが使えるみたな感じです
0436デフォルトの名無しさん2009/02/28(土) 16:42:09
echo '"abcde","fghi","jkl","mno"' | sed -e "s/\"//g" | awk 'BEGIN{FS=","}{print $3}'

これと同じことをTclではどのようにやれば良いのでしょうか?

また、echoコマンドのところが
cat ファイル名
だった場合についても教えて下さい。
0437デフォルトの名無しさん2009/02/28(土) 17:29:42
set data {"abcde","fghi","jkl","mno"}
puts [string trim [lindex [split $data ,] 2] \"]
0438デフォルトの名無しさん2009/02/28(土) 17:34:15
>>437
おぉ!素晴らしいです!
素早いレス、ありがとうございます。
04394372009/02/28(土) 17:49:51
set f [open "|cat ファイル名]
gets $f data
>>437
close $f
0440デフォルトの名無しさん2009/02/28(土) 17:55:51
>>439
疑問が完全に解けました。
どうもありがとうございます。

Tclって素晴らしいですね。
しっかり勉強して使いこなせるようになりたいです。
0441本田2009/02/28(土) 18:00:10
>>435
Tcl terminal with color support
http://sourceforge.net/projects/tt-color

C言語も使ってるみたい。
0442デフォルトの名無しさん2009/02/28(土) 18:04:52
>>440
Tclには組み込みで正規表現が使えるし、
そのフォーマットならtcllibでcsvのサポートもあるのでテストしてみるべき。
0443デフォルトの名無しさん2009/02/28(土) 18:12:50
>>442
色々教えていただきまして、恐縮の極みです。
正規表現やtcllibについてしっかり勉強したいと思います。
04444392009/02/28(土) 18:25:55
勘違いしてました
catコマンドをつかっちゃだめなんですね
set f [open ファイル名]
foreach data [split [read $f] \n] {
 puts [string trim [lindex [split $data ,] 2] \"]
}
close $f
0445デフォルトの名無しさん2009/02/28(土) 18:39:40
>>441
ありがとうございます。あるんですね端末エミュレータも。
スクリーンショット見る限りじゃ、カラーも使えてかなりよさげです。

端末エミュレータ部分をウィジェットとして自分のアプリ内で使えたりするんですかね?
ちょっと調べてみます。
0446デフォルトの名無しさん2009/03/18(水) 22:12:00
保守
0447本田2009/04/07(火) 00:25:21
Effective Tcl/Tk (ASCII Addison Wesley Programming Series) (単行本)
マーク ハリソン (著), マイケル マックレーン (著),
Mark Harrison (原著), Michael McLennan (原著),
吉川 邦夫 (翻訳)
# 単行本: 415ページ
# 出版社: アスキー (1999/07)
# ISBN-10: 4756131654
# ISBN-13: 978-4756131652
# 発売日: 1999/07
# 商品の寸法: 25.6 x 18 x 2.2 cm

この本出版社では在庫切れ。
大手の書店にはまだ流通在庫は在る。

アスキーは角川書店系列になって以来、
コンピューター関係の本の絶版が続出しているそうだ。
0448デフォルトの名無しさん2009/04/07(火) 00:37:07
>>447
立ち読みで目を通してしまったので買わなかったけど、
そろそろ手に入らなくなっちゃうのか。買っておくかなぁ。

ちなみに Tcl&Tk ツールキット Ousterhout博士 の本は後生大事に抱えている。
0449デフォルトの名無しさん2009/04/09(木) 01:00:54
一番世話になったのはTcl/Tkデスクトップリファレンス。
あれ超見やすい。
0450デフォルトの名無しさん2009/04/19(日) 20:06:05
申し訳ないのですが質問です

5年ほど前にLinuxで使ってた時(Tcl/Tk,Expect共にVer覚えてません)は
send プロセス名 "set a 1"
とか子プロセスに命令してた気がするのですが
本日WinXPにてActiveTcl8.4.19.1を落として動かしてみたところ
sendに引数が2つ以上あると怒られてしまいます

きっと私が何か阿呆な勘違いをしているのでしょうが
「このURLを見やがれタコ」ってモノがありましたら御提示下さい
0451デフォルトの名無しさん2009/04/19(日) 23:19:02
ttp://docs.activestate.com/activetcl/8.4/tcl/TkCmd/send.htm
SECURITY のところに
Under Windows, send is currently disabled.
ってある
0452デフォルトの名無しさん2009/04/19(日) 23:29:22
>>451
ズバリこれですね感謝です
ddeコマンドとやらで代用できるぽいのでちょっと試してみます
0453本田2009/04/26(日) 19:36:30
The Tcl UDP extension provides a simple library to support UDP socket in Tcl.
http://sourceforge.net/projects/tcludp
0454本田2009/04/29(水) 00:21:55
>>452
dde
http://wiki.tcl.tk/996
tcom
http://wiki.tcl.tk/1821
optcl
http://wiki.tcl.tk/1822

activex controlを使うにはtcomではなくoptclを使う。
0455デフォルトの名無しさん2009/04/29(水) 22:24:57
Active Tcl/Tk ver.8.5.7 になった。
0456デフォルトの名無しさん2009/05/09(土) 20:09:14
John Ousterhout博士インタビュー
http://www.computerworld.com.au/article/301772/a-z_programming_languages_tcl
「やっぱOO入れときゃよかったかもね」的発言も。
0457デフォルトの名無しさん2009/05/09(土) 20:14:56
>>456
それはooを取り込もうとがんばってるCoreTeamの
活動を支援するリップサービスでは・・・
0458デフォルトの名無しさん2009/05/14(木) 20:41:38
plplotをWindows上のTCL/TKで使いたいのですが、すぐに動くバイナリは無いものでしょうか?
探した限りは無いようですが…
0459デフォルトの名無しさん2009/05/15(金) 09:09:34
ちょっと見てみたが、そもそもソースコードしか配布されて無いように見える。
素直に自分でビルドしてみたら?
0460デフォルトの名無しさん2009/05/15(金) 21:19:57
>>459
やはりソースだけですか… LinuxだとRPMがあるみたいですが…
コンパイルとなると敷居が高そうなので、ちょっと他を探してみます
ありがとうございました。
0461デフォルトの名無しさん2009/05/15(金) 22:39:19
ttp://dishaw.org/plplot/
0462デフォルトの名無しさん2009/05/16(土) 09:24:34
>>461
ありがとうございます! 早速見てみます
0463デフォルトの名無しさん2009/06/08(月) 20:51:13
ちょっと相談に乗ってくください
Windowsでdqkitを使ってexeにラッピングしてるのですが
set cmd "wish C:/tcl/main.exe/sub.tcl $args &"
eval exec $cmd
例えばですが ↑みたいな感じでsubプロセスを動かしたいのですが動かないんですよね

ttp://www.interq.or.jp/japan/s-imai/tcltk/tclkit2.html
> Starpackにラップした実行形式(.exe)は、execコマンドあるいはパイプで実行できない。

これに引っかかってるのかなーと思うのですが
別の書き方でどうにか出来ないでしょうか?
スレッドって使ったこと無いのですがスレッドで出来るのかな
0464デフォルトの名無しさん2009/06/08(月) 22:12:18
Tclのexe化ツールは複数あるけど、基本的にはTcl側に仮想的なパスを見せ、
実際のファイルアクセスまでにそれを書き換えるという方法だからね。
外部プログラムを実行するのは最終的にシステムコールをとおしてTclの外に行っちゃうから、
システム(この場合はWindows)から見えているパスじゃないといけなくなるだろう。

で、さっきも言ったようにexe化ツールは複数あるから、共通の土台で話ができないよ。
exe化ツールのドキュメントやフォーラムの漁ってみるべし。
0465デフォルトの名無しさん2009/06/08(月) 22:35:31
どもです
いくつか比較して今のdqkitが一番適してる感じだったのですが
他の方法も検討してみます

とりあえず現状で思いついた案としてはsub側も.exeにラッピングして
exeを2個体制で・・・スマートじゃないなぁ
0466デフォルトの名無しさん2009/06/08(月) 22:41:14
一次情報に当たれと言ってるんだ。
自分の頭の中だけじゃ解決しない問題だろ。
0467デフォルトの名無しさん2009/06/09(火) 19:18:33
ActiveStateのツールじゃだめなのかいな?
0468デフォルトの名無しさん2009/06/09(火) 19:50:12
BLTと日本語を使いたいのでなるべくならdqkitが良かったんですよね
Freewrap日本語化版とかTclPro1.3じゃBLTを使うのが大層面倒っぽかったので。

ActiveStateのってTclDevKitでしょうか?
とりあえずBLT使えるか心配なのと仕事でも使いたいのでライセンスも心配ですが
ちょっと試してみます
ありがとうございました
0469デフォルトの名無しさん2009/06/10(水) 00:50:29
wishをサブプロセスで動かすの前提なら別にexeにしなくてもいいんじゃないの?とか言ってみる
0470デフォルトの名無しさん2009/06/10(水) 18:33:01
>>468
ちょっと話が変わって申し訳ないんだけど、BLTってまだメンテされてるんでしょうか?
自分も使おうかと思ってたんですけど、どっかでメンテされてないって読んだので、
躊躇している次第です。
0471本田2009/06/10(水) 20:26:49
>>470
CVSはまだメンテナンスされてる様だ。
http://blt.cvs.sourceforge.net/viewvc/blt/blt/
0472デフォルトの名無しさん2009/06/10(水) 21:22:33
躊躇って何を躊躇すんの?使ったら何かを失うわけでもないのに
0473デフォルトの名無しさん2009/06/11(木) 08:03:07
>>472
業務用のシステムなので、継続的なメンテナンスが見込めそうなのはやはり使いにくい
のですよ。
0474デフォルトの名無しさん2009/06/13(土) 19:55:17
SolarisのCDEでwish使ってるんですが、
Tkのウィンドウだけマウスポインタが通過するだけで
最前面にraiseされてしまいます。
他のウィンドウは大丈夫なのに、なんでだろ。

CDEの設定では
『ポインタでウィンドウをアクティブにするけど、
ウィンドウ順は変えない』
としているので、Tk以外のウィンドウはクリックしない限り
raiseはされないんですが、Tkだけマウスが通っただけで
ウィンドウの前後関係が変わってしまいます。
0475デフォルトの名無しさん2009/06/14(日) 11:09:44
->465
ご本家のTclkitのページ(http://www.equi4.com/tclkit/docs.html)に
 Don't expect exec and popen to work on files in VFS
と書いてあるので、execはイモ筋(dqkitでも多分ダメ)
やりたいことがよくわからないがdqkitはMT版があるので、
複数のプログラムを同時に別のスレッドで走らせる筈。
0476デフォルトの名無しさん2009/06/17(水) 17:31:59
TclOOで自分が作ったクラスのサブクラスって、どうやって作るんでしょうか?
0477デフォルトの名無しさん2009/06/17(水) 21:51:18
oo::class create mobile {
method bell {} {puts PURURURU}
}

oo::class create softbank {
superclass mobile
}
0478デフォルトの名無しさん2009/06/18(木) 10:09:49
>>477
ありがとうございました。理解できました。
検索しても見つけられなかったので助かりました。
0479デフォルトの名無しさん2009/06/23(火) 05:40:16
なんか最近tcllibがあわただしいと思ってたら、
GSoC 2009のプロジェクトでgraph操作の実装をやってるところだったのね。

http://wiki.tcl.tk/23203
0480デフォルトの名無しさん2009/06/23(火) 12:51:03
印刷サポートもやるみたいね
0481デフォルトの名無しさん2009/06/25(木) 16:42:13
ttp://wiki.tcl.tk/17158の{*}を使いたいのですが、

set l [list a b c [list e d]]
puts {*}$l

とやると、
wrong # args: should be "puts ?-nonewline? ?channelId? string"
というエラーが返ってきます。Tclのバージョンは8.5.7なのですが、
{*}の使い方が間違っているのでしょうか?どなたかご教示下さい。
0482デフォルトの名無しさん2009/06/25(木) 21:05:19
いちいちeval使うのタリーから、リストを引き数に展開するようなコマンドとか欲しくなくね?
たとえば{*}$stdargとか

ってことを書いてるんであって、どこかにそんな実装があるという話じゃないです
0483デフォルトの名無しさん2009/06/25(木) 21:48:00
えっ、これTcl8.5の新機能だよ。しかも新コマンドでもなくて正真正銘Tclの「文法」に対する拡張。
0484デフォルトの名無しさん2009/06/25(木) 22:00:23
で、481が間違っているのはputsコマンドの使い方のほうですね。シェルのechoとかとは違います。

% puts a b c {e d}
wrong # args: should be "puts ?-nonewline? ?channelId? string"
% puts $l
a b c {e d}
0485デフォルトの名無しさん2009/06/25(木) 22:21:46
>>481
puts {*}$l

puts a b c [list e d]
として実行されるからエラーになってあたりまえだ!

>>480
印刷ってなに?グラフの印刷?
04864812009/06/25(木) 22:26:27
>>484
>>485

ありがとうございました。
根本的に間違っていました。死にたいorz
0487デフォルトの名無しさん2009/06/30(火) 22:18:47
ns-2でシミュレーションやりたいんでtcl覚えたいんだが、
オヌヌメの参考書とかあるのかよ?
0488デフォルトの名無しさん2009/07/01(水) 00:14:21
Tcl/Tkデスクトップリファレンス
Effective Tcl/Tk
今となってはちょっと古いがわしはこれでおぼえた。
0489デフォルトの名無しさん2009/07/01(水) 11:48:26
俺は言語の設計者が書いた本で勉強(日本語版)。
オヌヌメだけど、今では入手できないかも。
0490デフォルトの名無しさん2009/07/02(木) 23:04:24
オレはggrksだけでなんとかしてる。
だから進歩が中途半端なのか。
0491デフォルトの名無しさん2009/07/04(土) 00:53:29
俺の場合は具具って最初に出てきたもっとTcl/Tkってサイトで感触つかんで、
文法の意味が理解できればあとはマニュアルで十分って感じ。
ActiveTclのマニュアルで桶。
意味さえわかればdllやshared libraryで拡張するのも簡単だし。
ただ、Tclは印刷できないのがなぁ。
0492デフォルトの名無しさん2009/07/04(土) 01:19:23
ns-2は確かにotclだが、次期バージョンのns-3はpythonになるそうな。
さよならotcl
0493デフォルトの名無しさん2009/07/04(土) 16:50:59
流れ豚切りますが、

昔、tcl/tk8.0.5+日本語パッチ
というバージョンでは、kinput2 での日本語入力の制御ができました。
変換の開始・終了とか、入力モードの変更とか。
kinput_start などというコマンドがあったりします。

最近のバージョンはできるんでしょうか?
0494デフォルトの名無しさん2009/07/04(土) 23:49:44
どんだけ昔の話だよ・・・。
0495デフォルトの名無しさん2009/08/01(土) 14:27:22
切り出したい関数を必要な関数;サブ関数をインライン展開してくれるツール
があれば教えて下さい。変数名も可能なかぎり縮められたらと思います。
シェルに依存しないバイナリ化擬きが意図です
0496デフォルトの名無しさん2009/08/01(土) 19:55:51
>>495
複数のTclスクリプトを1つのスクリプトにまとめる仕組みはあるようだけどな。
tcltest-2.3.0.tmとかにまとめられてるよね。
たぶんそういうツールで十分そうな気がする。
0497デフォルトの名無しさん2009/08/01(土) 20:52:47
>>495
何がしたいか全然理解できない。インライン展開ってC++のインライン関数みたいなことを
言ってるのか?ていうか関数を切り出すってどういう意味?サブ関数はTclには無いし、
サブって何をさして言ってるの?それにシェルに依存しないって意味もわからない。
execコマンド使わずにTclで完結させればいいだけのことじゃないのか?なんなの?
ていうかバイナリ化もどきって要するに難読化したいってこと?ていうかそれが、関数の
切り出しとかいうのとどういう関係が?もうはっきり言って日本語で頼む。
0498デフォルトの名無しさん2009/08/02(日) 14:08:59
TCL インタプリタのない環境でも動くスタンドアロンなアプリを作りたい、
でさらにサイズも最適化したい、ということでわ?
0499デフォルトの名無しさん2009/08/02(日) 15:45:35
関数ライブラリから欲しいコマンドだけパッケージ化して切り出したい。
イメージ的にはinfo proc bodyですが関数の依存関係をトレースして必要十分な関数群も抜き出す。
関数をfalt化したり、冗長性を除去し、サイズ縮小化、難読化、再利用防止もしたい。
TCLインタプリタに依存したくないのでpure tclのパッケージ化したい。(見た目普通のテキストの関数定義)
ソースは1元管理してアプリ毎に合成したい。
0500デフォルトの名無しさん2009/08/02(日) 21:23:26
Tclインタプリタに依存したくない、といった時点でTclインタプリタの実行ファイルにマージすることを意味するから、
シェル(OS)に依存するようになると思うんだがどうか?
0501デフォルトの名無しさん2009/08/02(日) 21:53:14
ていうか変数名を短くしてサイズ縮小化とか、どんだけカツカツの環境なんだお
0502デフォルトの名無しさん2009/08/02(日) 22:55:40
>>499
きっと8bitマイコンにでも乗せたいんだお。
PC-8001とかMZ-80で変数名削るのに苦労したお!!
0503デフォルトの名無しさん2009/08/05(水) 17:50:56
テキストウィジェットにU+9FA6以上のUnicodeの文字を
張り付けようとすると反応が返ってこなくなるのですが
これはTkのバグでしょうか。

Tcl/Tk 8.5.7を Windows XPで使っています。

pack [text .t]
.t insert end \u9FA6

上のコードを実行するとWISH85.EXEがものすごい勢いでメモリを
消費します(´・ω・`)
0504デフォルトの名無しさん2009/08/06(木) 21:38:42
>>503
vistaの8.5.6と8.6b1で試したけど、火編の常みたいなのが出てきた。
0505デフォルトの名無しさん2009/08/06(木) 22:13:24
>>504

ありがとうございます。
Vistaの8.5.6と8.6b1では動くのですね。
XP機しかないのですが、とりあえず8.6b1で試してみます。
0506デフォルトの名無しさん2009/08/07(金) 11:42:03
Windows VistaでClearTypeのメイリオを使っています。
その環境でTk 8.6のmenuを試してみたところ、メニュー・バーのフォントはClearTypeの効いた
ものになるのですが、メニュー・アイテムについてはそうなりません。
まぁ、メニュー・アイテムにClearTypeのフォントを設定すれば一応は解決できそうな感じはする
のですが、システムが使っているフォントを取得するようなコマンドはありますでしょうか?
0507デフォルトの名無しさん2009/08/10(月) 18:13:43
>>506
メイリオを使っていたらcanvasをpostscriptに変換できないので、
if {[font configure TkDefaultFont -family] == "メイリオ"}
とかしてデフォで使用されるフォントの判別をしてメイリオだったらarialにするとかやってます(windowsとLinux両方で動かすためにこんなことしてます)。
ただ、メニューバーがメイリオになっているのにメニューアイテムのフォントだけ違うのという現象にこれで対処できるかどうかは不明ですが。
0508デフォルトの名無しさん2009/09/05(土) 20:16:32
名前空間がどうしてもよくわからない
俺様かんたんに猿でも分かるように教えてください
0509デフォルトの名無しさん2009/09/05(土) 20:53:49
>>508
あらら、名前空間なんて導入されたんだ。
C++では前からあったけど。
0510デフォルトの名無しさん2009/09/05(土) 22:53:17
モジュール空間のことを言ってるんじゃないのかね。
確かに独特だわな。
0511デフォルトの名無しさん2009/09/06(日) 21:07:57
namespace だから名前空間じゃないの?
0512デフォルトの名無しさん2009/09/06(日) 22:13:13
>>511
モジュール書くときくらいしかほとんど用事がないんだがな。
0513デフォルトの名無しさん2009/09/10(木) 20:59:54
初心者です。便乗質問(?)なのですが、自分で作ったライブラリは皆さん
パッケージ(モジュール?)にしてるのでしょうか?
自分はその方法が良く分からないので、とりあえずsourceコマンドで読むという
方法で凌いでます。

ところで、amazon.comによると、Tcl言語の設計者が書いた本の改訂版が出る
ようですね。Tcl/tk 8.5に対応した内容に書き改めたとのこと。
Tclが日本でも再度注目されたりしないでしょうか。
0514デフォルトの名無しさん2009/09/12(土) 14:17:45
>>513
パッケージも結局内部ではloadやらsourceやらで読み込んでたと思います。

利点は、パスを書かずにパッケージ名だけで呼び出せるから、
位置関係を気にしなくてよくなることぐらいでしょうか。

書き方は >>1 の日本語サイトの1つめと2つめにそれぞれ解説があります。
0515デフォルトの名無しさん2009/09/12(土) 21:44:21
>>514
ありがとうございます。参考になりました。
ただ、開発途上のモジュールについても、皆さんパッケージ化されているのでしょうか?
それなりの手順を踏まないとパッケージ化はできないようなので、モジュールの開発途上では、
やはり単にsource とかで読み込むのが普通なのでしょうかね?
0516本田2009/09/13(日) 00:13:43
>Tcl言語の設計者が書いた本の改訂版が出るようですね。

90円台/ドルの円高なので今が廉く買うチャンスかも。
0517本田2009/09/13(日) 00:42:31
package - パッケージのロードとバージョン制御機能。
http://www.freesoftnet.co.jp/tclkits/doc/TclCmdRef/TclCmd/package_jp.htm
0518本田2009/09/13(日) 02:48:50
>>515
ウェルチさんの本によると、
packageは複数のアプリケーションから利用する時に使うそうです。
0519デフォルトの名無しさん2009/09/13(日) 11:47:25
>>508
変数名が名前だとすると、名前空間は苗字・・・。

>>509
10年前の8.0から導入されました・・・。

>>510
全然独特じゃないと思うけど・・・。名前空間がある言語ない言語あるけど、
変数名とかにprefixを付けてバッティングしないようにするという意味での
名前空間は汎用的なプログラミング概念だと思う。

>>511-512
8.5からはnamespace ensembleが入ったので名前空間にコマンド群を
まとめあげてサブコマンドを作ることも出来るようになった。。。
たしかにサブコマンドは名前空間の一種のような気もする・・・。

>>513
とりあえずsourceでいい。他人に配るときはpackageにするけど。
pacakgeなんて名前空間とそのバージョンを書いて、pkg_mkIndexするだけ。
大して難しいしくみでもない。
0520デフォルトの名無しさん2009/09/13(日) 21:36:11
>>518 >>519
packageの件、ありがとうございました。開発が一段落するまではsourceでやってみます。
0521デフォルトの名無しさん2009/09/13(日) 21:40:11
うむ。そうするがよい
0522デフォルトの名無しさん2009/09/16(水) 13:33:42
>>519
(Tclのnamespaceが)
>全然独特じゃないと思うけど・・・。
普通、よくあるnamespaceの使い方は宣言的なものが多いんだけど、
Tclのnamespaceはただのコマンドなので、実行文的な書き方になる。

namespace eval { }
の中でnamespace export ...
とか呼び出すのとか、かなり変に感じる。
0523デフォルトの名無しさん2009/09/16(水) 14:23:14
変に感じるのはそれだけじゃないだろう?(笑)
深く考えないのが吉。
0524デフォルトの名無しさん2009/09/16(水) 20:25:51
>>521
審議中
0525デフォルトの名無しさん2009/09/16(水) 20:38:09
>>522
それを言い出すとTclは制御文もコマンドだし・・・
0526デフォルトの名無しさん2009/09/22(火) 16:44:34
すいません。Perl質問スレでも書きましたが、
こちらのほうが適切そうだったので、こちらで質問させてもらいます。

Perl TkのTextウィジェットを使って
文字列の入出力をする方法はどのようにするのでしょうか?
Entryウィジェットを使ったサンプルはWeb上から見つけたのですが、
Textウィジェットを用いたものはないもので。。。
0527デフォルトの名無しさん2009/09/22(火) 18:09:24
>>526
Perl/Tkは触ったこと無いけど、
確かオライリーからまさにその本が出版されていたと思った。
それを購入するのが最終的には早いと思う。
日本でPerl/Tkは、ひどくマイナーだから。

あるいは、Ruby/Tkなら日本語の書籍が何冊か出版されているし、
Web/MLなどで情報の収集が容易だから、そちらに乗り換えるとか。
もちろんTcl/Tkでもオケー

ゴメン、これくらいしかレスできねえヨ

# いいレス返してあげておくれ > 他の住人さん達
0528デフォルトの名無しさん2009/09/23(水) 07:29:32
Perl/Tkでググれ、としか
0529デフォルトの名無しさん2009/09/23(水) 08:48:16
だな。一発でこんなん出たけど
http://www.geocities.jp/m_hiroi/perl_tk/perltk07.html
0530本田2009/09/23(水) 18:19:46
Mastering Perl/Tk
http://oreilly.com/catalog/9781565927162
http://examples.oreilly.com/9781565927162/
http://examples.oreilly.com/9781565927162/mastperltk_examples.tar.gz

mastperltk_examples.tar.gz
の中にサンプルプログラム有り。
0531本田2009/09/23(水) 18:23:42
Past, present and future of Tcl virtual filesystems Steve Huntley
http://www.tcl.tk/community/tcl2007/papers/Stephen_Huntley/tcl2006_slides_huntley.pdf

0532デフォルトの名無しさん2009/09/23(水) 19:10:25
>>530
一瞬、「サンプルプログラム祭り」に見えたw

Tcl/TKはいつまで経ってもマイナー言語のままだから、
簡単にこんなことができますよーって紹介はもっとあってもいいと思うけどね。
0533本田2009/09/23(水) 19:12:57
P2P A Metafile System over P2P File-sharing Network
http://spa.jssst.or.jp/WIT/2005/papers/05013.pdf
0534本田2009/09/23(水) 21:51:59
>>531
The FILTR:
(File Inventory for Loading, Transfer and Recovery)
http://filtr.sourceforge.net/
The FILTR is a program intended to be useful over the course of my lifetime.
It combines the features of a backup utility,
an archiving/version-control utility
and a document management utility to create an effective
and simple-to-use personal document management system.
Author: Stephen Huntley (stephen.huntley@alum.mit.edu)
License: Tcl license
0535デフォルトの名無しさん2009/09/29(火) 11:04:56
流れを読まずに質問ッス
Text Widget で
・「文字単位」でTAB幅?TABインデント幅?を設定するにはどしたらええのん?
・一般的なエディタ(秀丸とかemacsとか)みたいなタブ文字でのインデントを実現できないのん?

TAB幅4文字で書かれたCのソースを、Text widgetで表示して色々する作業用スクリプトを書いてる最中なんですが、
  hogehoge(); // ほげほげ
的なコメントが、エディタ上ではインデントぴったりで綺麗に並んで書いてあるのに、Text Widgetではガタガタにずれて表示され
視認性がチョー悪く、作業効率も落ちるので、なんとかしたいのです

TkのText Widgetは、デフォルトでTAB幅8文字、tabsオプションで指定はできる、
というところまでは判って、要はTAB幅4文字に変更できれば解決かなと思ったのですが…

http://homepage3.nifty.com/kaku-chan/tcl_tk/chapter_230.html
によると、「ピクセル」「mm」「inch」「cm」の4種類でしかtab stopsは設定できないと書いてあるし、
無理矢理ピクセルで指定してみても、TAB文字がそのまま「4文字相当の幅を常時取って」行の中に入ってしまうしで…
0536デフォルトの名無しさん2009/09/29(火) 21:03:35
package require Tk
text .txt -font {"MS Gothic" 12}
button .b1 -text 4tab -command {settab 4}
button .b2 -text 8tab -command {settab 8}

pack .txt -side bottom
pack .b1 .b2 -side left


proc settab {n} {
set font [.txt cget -font]
.txt configure \
-tabstyle wordprocessor \
-tabs "[expr {$n * [font measure $font 0]}] left"
}

.txt insert 0.0 {
12345678901234567890123456789012345678901234567890
#include <stdio.h>

int main(int argc, const char** argv) {
printf();
return 0;
}

}
0537デフォルトの名無しさん2009/09/29(火) 21:09:22
コピペ失敗した・・・前はタブは自動でスペースに置き換えてくれてた
木が刷るのにどういうことだ・・・・

package require Tk
text .txt -font {"MS Gothic" 12} -tabstyle wordprocessor
button .b1 -text 4tab -command {settab 4}
button .b2 -text 8tab -command {settab 8}

pack .txt -side bottom
pack .b1 .b2 -side left

proc settab {n} {
set font [.txt cget -font]
.txt configure -tabs "[expr {$n * [font measure $font 0]}] left"
}

.txt insert 0.0 {
12345678901234567890123456789012345678901234567890
#include <stdio.h>

int main(int argc, const char** argv) {
printf();
return 0;
}

}

0538デフォルトの名無しさん2009/10/01(木) 10:00:31
>>536-537
ありがとうございます!
動かしてみたらたしかにTAB幅4文字っぽくなりました
Tcl/Tkは全く詳しくないので自信がないですが、おそらく
・ -tabstyle wordprocessor 指定
・ font measure でフォント1文字の横幅ドット数を取得
→TAB幅の文字数を掛けたピクセル数にして指定
が肝なのですかね…

実はTcl/TkじゃなくてPerl/Tkでスクリプトを書いてるんですが
Tcl/Tkのtext widgetで実現できているなら
Perl/Tkでも実現できるだろう…という前提で作業してみます
0539デフォルトの名無しさん2009/10/01(木) 10:19:09
うーん…
Perl/Tkには-tabstyleが実装されてないみたいですね…
指定すると「そんな指定は知らねえよ」とエラーが出る…

http://cpansearch.perl.org/src/SREZIC/Tk-804.028_501/t/text.t
↑「XXX not yet implemented?」とか書いてあるし…

http://www.tkdocs.com/tutorial/text.html
↑ここには、指定できる文字列としてtabstyleが書いてあるんだけどなあ…

勉強も兼ねてTcl/Tkで書き直してみるかな…
それとも Python + Tkinter も試してみるか…
0540デフォルトの名無しさん2009/10/01(木) 19:17:49
Tk使うならTclが一番安心だよね。やっぱり
0541デフォルトの名無しさん2009/10/01(木) 21:12:37
Tcl/TkじゃなくてPerl/Tkの話だから
スレ違いな気もしますが一応報告だけ

* text widgetにtabstyleが実装されたのは8.0.5から、らしい
* Perl/Tk(ActivePerl+Tk)は8.0.4相当。よって実装されてない
* Perl/TkでもTkxを使えばtabstyleが使える(TkxはTcl/Tkのコア部分をそのまま使ってるそうで…)
* Tkxを使うとパッと見でTcl/Tkそっくりの記述もできる(Tkx::text(".txt", )
* ActivePerlでTkxを使うとPARでexe化したときにActiveTclを要求されるので、exe化の意味なし
* Perl+Tkxでfont measureをどう記述するかが謎 ←今ココ

Tcl/Tkにも正規表現とハッシュ(連想配列)があるらしいから、書き直すのもアリかな…
GUIの見た目も、Tcl/Tkのほうが綺麗だし
0542デフォルトの名無しさん2009/10/01(木) 21:52:01
tkのデバッグってどうしてます?
10時間くらいで落ちたり、処理速度が低下します。

0543デフォルトの名無しさん2009/10/01(木) 22:29:37
>>542
???
tk4.2の頃は、そういうことあったけど……
8.3以上では直ってるはずだと聞いてるお?

ちなみに、
落ちると言っても、「tkが動かなくなる」だけ。
原因と対処法は自分で見つけた。もちろん、報告した。
処理速度の低下は、Xサーバーに問題があったので、ちょっと弄った。
0544デフォルトの名無しさん2009/10/02(金) 23:38:25
変数に入っている値が整数(として扱える)かどうか調べる方法はありますか。
0545デフォルトの名無しさん2009/10/02(金) 23:44:20
string is integer $x
0546デフォルトの名無しさん2009/10/03(土) 23:31:56
>>545
やりたいことができた!他にも色々調べられるのね。ありがとうです(>_<)
0547デフォルトの名無しさん2009/10/05(月) 18:16:08
>>545-546
まあその場合そのとおりなんだが、
Tcl/Tkの各コマンドのヘルプページはちょっと読みづらいよね。
PHPのヘルプ並みに使いやすく整備してくれるといいんだが……。
0548デフォルトの名無しさん2009/10/05(月) 19:52:40
>>547
tclshでstring is って打つとコマンドの文法が出る。
string is a b って適当に打つと、クラスの一覧が
ズラズラ表示される。これで十分。
0549デフォルトの名無しさん2009/10/27(火) 11:40:30
TCLスクリプトを自前アプリに実装したいのですが、
なにかお勧めの書籍(web)を紹介頂けませんか?

0550デフォルトの名無しさん2009/10/30(金) 17:03:22
c++builder6で下記コードを実行するとstdoutが見つからないというエラーが表示されます。
>>301のログでTcl_SetStdChannel()で標準出力をトラップする見たいな事が記載されていますが、
どうやって行うのでしょうか?

strcpy( buf, "puts \"TEST!!\"");
Tcl_Eval( interp, buf );

エラーメッセージ:can not find channel named "stdout"
0551本田2009/10/30(金) 22:58:47
>>549
C言語からTclを呼び出すには
http://www.geocities.co.jp/SiliconValley/4137/dir4/namo.html
0552デフォルトの名無しさん2009/11/02(月) 13:03:10
CでTclを使えるようにする

Tcl_FindExecutable
Tcl_Interp
Tcl_Init

Tkも使えるようにする(MainWindow破棄でTk_MainLoopから戻る)
Tcl_FindExecutable
Tcl_Interp
Tcl_Init
Tk_Init
Tk_MainWindow
...
Tk_MainLoop

tclshみたいなプログラムにする(スクリプト終了でプログラム終了)
Tcl_Main
Tcl_AppInit中でコマンドの設定など

wishみたいなプログラムにする(スクリプト終了でプログラム終了)
Tk_Main
Tcl_AppIniti中でコマンドの設定など

拡張DLL(shared library)
dll名_Initという関数の中でコマンドの定義など
0553デフォルトの名無しさん2009/11/02(月) 17:30:39
>>551,552

有り難うございます。
なんとか実行できる様になってきました。

基本的な事をお聞きしたいのですが、
複数行に渡るコマンド(forやwhileなど)を実行するにはTcl_Eval()では駄目なのでしょうか?

以下の様なコマンドをTcl_Eval()で1行づつ実行すると(1)は実行されますが、
(3)は実行されません。
Tcl_EvalFile()でまとめて実行すると、(3)も10回実行しますが、
Tcl_EvalFile()は全部終わるまで戻ってこないので、
Tcl_Eval()で1行づつ実行したいのです。

(1)puts "TEST!!"
(2)for { set i 0 } { $i<10 } { incr i } {
(3) puts "I is $i"
(4)}
0554デフォルトの名無しさん2009/11/02(月) 18:02:38
553の続きです。
エラー処理を追加したらTcl_Eval()でエラーが発生して実行されていませんでした。

(2)→missing close-brace
(3)→can't read "i": no such variable
(4)→invalid command name "}"

試しに3行を1行にまとめたら実行できました。読みにくい・・・
for { set i 0 } { $i<10 } { incr i } { puts "I is $i" }

やはり複数行のコマンドは実行できないのかな・・・
0555デフォルトの名無しさん2009/11/03(火) 23:15:44
{
}
の中の改行は文の終わりと認識されず、改行文字を含む文字列と認識されます。
forは引数を4つとるコマンドです。
for {set i 0} {$i < $N} {incr i} {
puts $i
}
は、たまたま第4引数が改行を含む文字列であるというだけのことです。
0556デフォルトの名無しさん2009/11/04(水) 10:50:05
>>555

有り難うございます。

>>改行文字を含む文字列と認識されます。

for文などは普通は見易くする為に>>553の様に改行を入れて記述すると思います。
この様な記述をした場合には、第4引数が複数行になる為、
Tcl_Eval()を利用して1行づつ実行する事はできないという理解で良いですか?


0557デフォルトの名無しさん2009/11/04(水) 10:53:58
>>556
というかC関数をTcl側に公開して、それをfor文で普通に呼び出せばいいんじゃね?
そしたら何度も呼び出すこと考える必要ないでしょ。
0558デフォルトの名無しさん2009/11/04(水) 13:26:48
>>557

ありがとうございます。

>>C関数をTcl側に公開して

これの方法が現時点では分かりませんが、これが出来ればいけそうな気がしてきました。
早速調べて試してみます。
0559デフォルトの名無しさん2009/11/04(水) 20:18:53
>>556
見やすくするためではありません。
for文が第四の引数を解釈するに当たり、改行までをひとつのコマンドと引数列とみなして実行するためです。
よって{}中の改行は飾りではないです。
0560デフォルトの名無しさん2009/11/04(水) 20:24:23
>>558
Tcl_CreateObjCommand
引数の解釈はTcl_GetIntFromObjなどを使う。
返値はTcl_SetObjResultで。

Tcl_CreateCommandなどのTclオブジェクトを扱わない形式では
数値やリストなど全部文字列に変換されて渡されるので、速度・精度の面で使わないこと。
(Tclオブジェクトだとリスト型やdouble型を保持したままやりとりする)
0561デフォルトの名無しさん2009/11/04(水) 20:30:04
んで、ぶっちゃけ言うと
Tcl_Eval(interp, "for {set i 0} {$i < 5} {incr i} {puts $i\nputs hogehoge}");
0562デフォルトの名無しさん2009/11/04(水) 23:17:21
>>559-561

色々有り難うございます。
とりあえず、Tcl_CreateCommand()を使用してTCLスクリプトからCの関数を実行し、
パラメータを渡す事まで確認できました。
TCLで実現したい事は、「とりあえず」は出来たと思います。
残りは戻値や速度面を考慮してTcl_CreateObjCommand()などを調べて見たいと思います。
0563本田2009/11/21(土) 06:24:51
http://www.tcl.tk/
>Tcl/Tk 8.5.8 Nov 16, 2009
0564デフォルトの名無しさん2009/12/11(金) 19:14:03
Jaclてなんて発音すれば良いの?
0565デフォルトの名無しさん2009/12/11(金) 21:05:06
ジャッカル
0566デフォルトの名無しさん2009/12/16(水) 23:21:52
tclでhtmlを取り扱うウイジェット実装はいくつかあるみたいですが
お勧めとか、デファクトスタンダードなものとか
あるのでしょうか?
0567本田2009/12/18(金) 00:55:20
>>566
>デファクトスタンダード

incrtclだと思う。
http://incrtcl.sourceforge.net/iwidgets/iwidgets/scrolledhtml.html
0568デフォルトの名無しさん2009/12/20(日) 02:07:53
板違いかもしれないけれど
Ruby/Tkで、
htmldoc = '<html>〜</html>'
html = Tk::HTML_Widget.new.pack
html.parse(htmldoc)
とするとSegmentation faultが出るのは自分だけかな……。
TkHTML3、Tcl/Tk8.4、Ruby1.9.1環境です。
0569デフォルトの名無しさん2009/12/28(月) 17:45:58
折角国際化されてるんだし
だれかTcl/Tkでmigemo使えるようにしろよ〜
0570デフォルトの名無しさん2009/12/28(月) 20:24:16
IMの制御がきちんとできるようにしてくれぇ。
0571デフォルトの名無しさん2009/12/29(火) 09:37:18
結構この頃気に入っているのですが
ckて使っている人いますか?
なんか語りませんか
0572デフォルトの名無しさん2010/01/02(土) 10:50:57
>> 571
大昔、CTk http://wiki.tcl.tk/5016 は使ったことがある。
ckも2001年頃から開発が止まっているみたいけど、8.5.8環境でもちゃんと動く?
0573デフォルトの名無しさん2010/01/02(土) 20:43:14
Ckというのはhttp://www.ch-werner.de/ck/ なのですが
ページによると8.0-8.4が恐らくターゲットかと。うちでは8.0で動いています。
キャンバスなど対応しないウイジェットもあるので制限は多いですが、
Guiのプログラムとコンソールのプログラムが一つのプログラムでかけるのが
凄いです。(tcletも使えば一石三鳥?)
CTKはどんな感じでしたか?
Ckの場合難点はcursesを使う部分の日本語が上手く表示できないかんじです。
putsなど標準入出力ではOkですが。
0574本田2010/01/05(火) 22:51:35
>Ckの場合難点はCkの場合難点はcursesを使う部分の日本語が上手く表示できないかんじです。

cursesってUNICODEに対応してないのかな?
0575デフォルトの名無しさん2010/01/06(水) 23:26:35
ncursesw とかじゃん?
0576デフォルトの名無しさん2010/01/06(水) 23:35:47
>>573
CTk使っていたのは日本語パッチ版が使いたくて8.0で粘っていたころなので、さすがに覚えていない。
当時はMulti-Byte文字を使えるcursesもほとんど無くて、日本語は最初から諦めていたと思う。

Multi-Byte文字はCkとcursesの2段階で対処が必要だと思うし、8.0だとそもそも多国語対応していない
ような気がするので、tcl内部とcursesと実際の表示(xtermとか)のencodingを合わせないとだめだよね。

がんばってね。
0577デフォルトの名無しさん2010/01/18(月) 15:28:42
アプリケーション拡張言語としてのTCLってどうして普及しなかったんですか?
0578デフォルトの名無しさん2010/01/18(月) 15:34:43
>>577
いや〜、あんなもん、tkが付いてなかったら使いたくねえ!
0579デフォルトの名無しさん2010/01/18(月) 15:39:50
>>577
tk以上の発明品が生まれなかったからじゃないかな。
結局Tcl/Tkが作られた当時はアプリのスクリプト言語をサポートするという発想が新しすぎたんだと思うよ。
後スクリプト言語としては文字列と整数のデータ型の区別がされてなくて微妙に使いにくいとか。

元々HTMLの埋込み言語として開発されたPHPが、発展してフレームワークが作られるようになると
HTMLの生成がテンプレートエンジン越しになって本来の埋込スクリプトが全く使われなくなったりね。

開発当初の目的と実用される用途が一致しないのはよくあること。
0580デフォルトの名無しさん2010/01/18(月) 22:27:44
ストールマンがTclの普及自体に横槍出したのもでかいんじゃないかな
0581デフォルトの名無しさん2010/01/19(火) 00:46:35
>>577
GNUに嫌われたから
0582デフォルトの名無しさん2010/01/19(火) 12:33:16
>>580
guileも全然普及してないな。
0583デフォルトの名無しさん2010/01/19(火) 21:15:09
GIMP は SIOD から TinyScheme に変わったんだよね。
Guile 哀れw
0584デフォルトの名無しさん2010/01/26(火) 17:16:13
S-Langというのもあったけど。
0585デフォルトの名無しさん2010/02/03(水) 23:03:23
TclはPythonに喰われちゃったんだと思う
0586デフォルトの名無しさん2010/02/14(日) 10:09:59
今ならさらにLuaもあるしな。
0587デフォルトの名無しさん2010/02/14(日) 20:52:36
>>585
蛙と蛇だしな・・・
0588デフォルトの名無しさん2010/02/14(日) 22:29:44
デスクトップマスコットを作ろうかと思っているのですが、
ウィンドウを透過させて、画像だけを表示させるようなことは
tcl/tkでできるのでしょうか?

例えばこんな感じのを実現したいです
ttp://cgi32.plala.or.jp/higpen/javatips/36.shtml

OSXを使用しているので、
システム透過色を背景色に設定させるようにしてみましたが、
思い通りの結果になりません。(タイトルバーが表示されていたりします)

package require Img
pack [canvas .can -width 300 -height 300]
image create photo foo -file circle.tif
.can create image 0 0 -image foo -anchor nw

wm attributes . -transparent 1
. configure -background systemTransparent
.can configure -background systemTransparent
0589デフォルトの名無しさん2010/02/15(月) 01:13:58
osxはよくわからんけど、wm overrideredirect . 1してみたらどうなる?
0590デフォルトの名無しさん2010/02/15(月) 08:16:09
やってみましたが、
ウィンドウのサイズ、移動が出来なくなりますが、
タイトルバーは消えませんでした。
0591デフォルトの名無しさん2010/02/15(月) 21:37:46
>>588
バージョンくらいかけよアホ。これでも読んでろ
http://wiki.tcl.tk/13734
0592デフォルトの名無しさん2010/03/11(木) 21:16:58
ActiveTcl 8.5.8.1を入れたら、Tkのtextで日本語入力するとwishが落ちるようになった。
text .t; pack .t -expand yes -fill both だけのプログラムでも再現する。
IMEで1バイト文字を選択して確定しても落ちるのでIME制御で何か壊しているみたい。
こんな時に限って旧のバックアップが無いので確認できないけど8.5.8は大丈夫と思う。
だれか8.5.8残している人。ください。
0593デフォルトの名無しさん2010/03/13(土) 16:38:51
ほしゆ
0594デフォルトの名無しさん2010/03/17(水) 02:28:47
C++/Tcl 凄いな。
0595デフォルトの名無しさん2010/03/17(水) 23:05:28
>>594
ksk
0596本田2010/03/17(水) 23:34:20
>>592
ActiveTcl8.5.8.0.291595-win32-ix86-threaded.exe
05975922010/03/18(木) 21:26:34
>>596
ActiveState ポリシー変えたらしくて、Community Edition(Free)は最新バージョンしか
入手できなくなってます。
しばらくはtclkitでしのぎます。
0598本田2010/03/18(木) 22:48:35
>>597
ActiveTcl8.5.8.0.291595-win32-ix86-threaded.exe でgoogleれ。
0599デフォルトの名無しさん2010/03/18(木) 22:54:45
本田氏の本気を見た(いりこだし的な意味で)
06005922010/03/18(木) 23:39:47
>>598
それらしいURLを3つくらい見てダメだったので諦めていましたが、15番目で見つかりました。
どうもありがとう。
0601デフォルトの名無しさん2010/04/27(火) 22:17:26
perl tkでtxtウィジェット中に1秒間隔で
文字列を表示させることを考えていますがうまくいきません。

ソースは下になります。
何かおかしな点ありますでしょうか?

-----
$window1 = MainWindow->new();
$frame1 = $window1->Frame()->pack();
$output = $frame1->Scrolled('Text')->pack(-expand=>1, -fill=>'both');

for($cnt=0; $cnt<1000; $cnt++){
$output_tmp = "$cnt" . "\n";
$output->insert("end", $output_tmp);
$output_tmp = "";
sleep(1);
}

MainLoop();
-----
0602デフォルトの名無しさん2010/04/27(火) 23:35:32
perl tkは知らんけどtcl/tkで定期的に処理を実行する時はafterコマンドを使う
リファレンスマニュアルとか調べてみ
0603デフォルトの名無しさん2010/04/28(水) 06:29:41
どううまくいかないのかを書きなさい。
0604デフォルトの名無しさん2010/04/29(木) 06:13:30
>>602
ありがとうございます。ちょっと調べてみます。

>>603
上記ソースの場合、立ち上がりすらしない。
sleepをコメントアウトしたら1行づつ出力されずに、
溜め込んだ情報を一気に吐き出すといった感じです。
0605デフォルトの名無しさん2010/04/29(木) 15:45:57
>>601
描画はevent loop(MainLoop)で実行されると思うので、MainLoopの前でsleepしたら
描画出来ないと思う。
ループを切り出して、適当なeventを契機に呼ばれるようにすれば良いと思う。
どうしても今のループにしたければ、updateすると動くかもしれない。
0606デフォルトの名無しさん2010/04/29(木) 21:57:57
>>605
updateでできました!
ありがとうございました_( . _ . )_
0607デフォルトの名無しさん2010/04/29(木) 23:30:28
テクルトックで読み方あってる_
0608デフォルトの名無しさん2010/04/29(木) 23:36:58
何度もすいません。

>>601の修正版で、
常に最新出力行が確認できるようににしたい
(現状、テキストボックスが画面出力に追従しない。。。)
のですが、何かうまい方法ってあるんでしょうか?

調べてみたんですけど、うまいこといかなくて。。。

-----
use Tk;

$window1 = MainWindow->new();
$frame1 = $window1->Frame()->pack();
$output = $frame1->Scrolled('Text', -scrollbars=>'se')->pack(-expand=>1, -fill=>'both');

for($cnt=0; $cnt<1000; $cnt++){
    $output_tmp = "$cnt" . "\n";
    $output->insert("end", $output_tmp);
    $output_tmp = "";
    $window1->update();
}

MainLoop();
-----
0609デフォルトの名無しさん2010/05/02(日) 22:40:15
>608
君はイベント駆動モデルという物を全く理解していない。
>描画はevent loop(MainLoop)で実行されると思うので、MainLoopの前でsleepしたら
とも、
>ループを切り出して、適当なeventを契機に呼ばれるようにすれば良いと思う。
とも言われてるだろ?
画面描画とかは MainLoop() の中で発生してるんだってば。
その前のループの所の処理は既に終わっちゃってるの。

$window1 = MainWindow->new();
$frame1 = $window1->Frame()->pack();
$output = $frame1->Scrolled('Text', -scrollbars=>'se')->pack(-expand=>1, -fill=>'both');

$cnt = 0;

$output->repeat(1000, sub { # ここの処理が 1 秒単位で毎回呼び出される
  $output->insert("end", "$cnt\n");
  ++$cnt;
});

MainLoop();
0610本田2010/05/02(日) 23:45:07
>>608
Tk Documentation Table of Contents
http://www-users.cs.umn.edu/~amundson/perl/perltk/toc.html
fileevent Execute a callback when a file becomes readable or writable
http://www-users.cs.umn.edu/~amundson/perl/perltk/fileevent.htm
after Execute a command after a time delay
http://www-users.cs.umn.edu/~amundson/perl/perltk/after.htm
tkwait Wait for variable to change or window to be destroyed
http://www-users.cs.umn.edu/~amundson/perl/perltk/tkwait.htm
IO high level interface to Tk's 'fileevent' mechanism
http://www-users.cs.umn.edu/~amundson/perl/perltk/Tk%3A%3AIO.htm
TK/AFTER support class for Tk::Widget::after
http://www-users.cs.umn.edu/~amundson/perl/perltk/Tk%3A%3AAfter.htm
0611デフォルトの名無しさん2010/05/05(水) 01:36:11
>>608
package require Tk

pack [text .t] -side bottom -fill both -expand 1
pack [button .start -text Start] -side left

.start configure -command {RunCount 100}

proc RunCount {n} {
for {set i 1} {$i <= $n} {incr i} {
.t insert end $i\r\n
update
.t see end
after 200
}
tk_messageBox -message "End!!"
}

Tcl/Tkで書いたから適当にPerlに脳内変換して
06125922010/05/21(金) 21:14:28
ActiveTcl 8.5.8.2が出ていたので試してみましたが、8.5.8.1同様IMEが動くとwishが
落ちます。
一応、連絡しておきます。
0613デフォルトの名無しさん2010/06/02(水) 19:48:15
Tcl/Tk超初心者なんですが教えて欲しいことがあります。
tcomを使ってInternetExploerでホームページを表示させて
そのホームページのソースを取得してソースを表示させたいのですが
ホームページの表示までは上手くいったんですがソースの取得ができません。
わかる方いらっしゃったらぜひ教えてください、お願いします。

途中までのソースなんですが

package require tcom

set ie [::tcom::ref createobject "InternetExplorer.Application"]
$ie Visible 1
$ie Navigate "http://www.yahoo.co.jp/index.html"

ここまではできたんですがこのあとyahooのホームページのソースの取得方法
がわかりません、わかる方いらっしゃったらぜひお願いします。







0614デフォルトの名無しさん2010/06/02(水) 22:19:30
ソースは普通にHTTPでとってくればいいんじゃないの?
0615デフォルトの名無しさん2010/06/03(木) 09:36:16
>>614
返答ありがとうございます、初心者なのでHTTPでの取り方すらわからないのです。
もともとTcl/Tkでどうやってホームページの表示をさせるかがわからなくて
いろいろ調べた挙句tcomにいきついた次第です。できればtcomでできたらいいなー
というのが自分の希望なんですが、調べてみたんですがいまいちわからなくて
ここに行き着いたということです。
0616デフォルトの名無しさん2010/06/03(木) 09:39:40
>>615
ほい。ぐぐれ。
http://tmml.sourceforge.net/doc/tcl/http.html
0617デフォルトの名無しさん2010/06/03(木) 13:05:59
>>616
ありがとうございます、やってみます
0618本田2010/06/05(土) 05:37:34
>>615
URI utilities
http://tcllib.sourceforge.net/doc/uri.html
0619本田2010/06/05(土) 06:11:07
>>618
package require uri

set u http://www.yahoo.co.jp/index.html
set f index.html

set token [::uri::geturl $u]
if { [catch {::http::data $token} html] } {
puts stderr "Could not get $url\n$html"
exit 1
}

if { [catch {open $f w} fp ] } {
puts stderr "Could not open $f\n$fp"
exit 1
}

puts $fp $html
close $fp
0620本田2010/06/05(土) 14:29:34
>>613
optcl
http://wiki.tcl.tk/1822
http://www.patthoyts.tk/programming/optcl3010.zip
http://www.patthoyts.tk/programming/optcl-src.zip

WippleWobble - A Mini Web Browser (for Windows)
http://wiki.tcl.tk/4105
0621デフォルトの名無しさん2010/06/30(水) 07:31:52
初心者でpython2.6(tkinter)とtcl/tk 8.5を弄ってます。
widgetに入れず、Canvasのcreate_textに設定するwidthの様にheightを擬似的にでもどうにかして作りたいのですが何か良い方法は無いでしょうか。
ご教示お願い致します。
0622デフォルトの名無しさん2010/07/02(金) 01:54:21
>>621
heightを作るっていう意味がわからない
0623デフォルトの名無しさん2010/07/02(金) 08:08:21
pixel指定でその範囲に入らない状態の時は語尾に"..."を追加する物を作りたいです。
適当なtextの量自体を指定するしかないのでしょうか。

文字によってpixel幅が違うので結局label等(幅を取得したら捨てる。)
に入れ込むtextを一文字ずつlabelに入れて、そのlabel幅を取得し、
その幅から指定したpixel分のtextをcreate_textに入れ込めば出来そうですが・・
余りに遠回りで・・。

もう少し簡潔に文字数を制限したいのですが
tkがどう動作しているのか未だ良く分かっていません。
0624本田2010/07/02(金) 22:52:59
>>623
プロポーショナルフォントを使わずに、
等幅のフォントを使えば、
計算が簡単になりそうです。
0625デフォルトの名無しさん2010/07/03(土) 03:57:59
621,623です。
>>624
有り難うございます。
プロポーショナルフォントというんですね・・初めて知りました。
因みに自分足らない頭で623の内容をpythonのIDLEで書いてみたら
異様に重い上に、良く分からないエラーが出ました・・とほほ
後程、等幅フォントで再度書いてみます。

fontの高さには全角、半角も無いので
どこで改行されてるかさえ、得られれば
簡潔になるのでは、と
今の所textに直接pixel指定で改行を追加するモジュールを探しています。(どれもカラムっぽいですが・・)
font metricsも面白そうなのでついでに調べてます。
0626デフォルトの名無しさん2010/07/03(土) 10:56:10
>>623
font measureで文字列のpixel幅を得られる
のは?
0627デフォルトの名無しさん2010/07/03(土) 11:49:40
621,623,625です。
>>626
有り難うございます。
font measureで出来そうです。
0628本田2010/07/03(土) 17:32:43
>>627
老婆心ながら、
一つのスクリーン上に一つのカンバスを使って複雑なウイジェットを作る以外に、
まず一つのスクリーンを複数のフレームに分割して、
一つ一つのフレーム上にメニュー、テキストやカンバスを配置する方法もあります。
0629デフォルトの名無しさん2010/07/03(土) 20:28:35
621,623,625,627です。
>>628
有り難うございます。
カンバス自体は一応フレームに入っています。
・・がデザイン的にcanvasの内容をフレーム分けは難しいです。
まずgridで作成した所、重くて次にplace、そしてcanvas上にしています。
canvas上で作ると重いかと思っていたのですが、canvasで作ると割と軽快だったので
(textを入れる以前の話ですけれど)
canvasのままで来ているのと、canvasの自由度の高さが何より気に入っています。
canvasに変更する際からtextのこの問題がずっとネックだったので
解決出来そうで何よりです。
widgetに入れたくなかった理由としては、
折角canvasなので背景に画像を張り込める様にもしたかったからです。
マウスバインドもウイジェットに邪魔されず一つで掛けられますし。
キーバインドも勿論入れます。
どうしようも無くなった場合はplaceに戻ろうかと思っています。
0630デフォルトの名無しさん2010/07/19(月) 14:33:01
xspin.tclというソフトを使用し始めたのですが、.pmlの拡張子をフリーのパッドソフトに関連付けたら、
xspin.tclを起動しようとしたら「このファイルの種類を開くプログラムを選択してください」とでるようになってしまいました。
どのプログラムを選択すればいいか分からないし、戻し方も分からないので助けてください。
06316302010/07/19(月) 14:48:22
自己解決しました
0632デフォルトの名無しさん2010/08/04(水) 12:21:06
ActiveTcl8.5.7を使用しています。

最初に1を代入した変数を1ビットづつ左シフトしていくと80000000hの次は0hになってしまうのですが、
なにも指定しないと変数はUINT32で定義されているのでしょうか?
明示的にUINT64で定義する事は可能ですか?

set shift 1
for { set i 0 } { $i<64 } { incr i } {

set shift_h [format %016X $shift]
set shift [expr $shift << 1]
}

0633デフォルトの名無しさん2010/08/12(木) 11:58:36
>>632
サーバ(Win/Linuxじゃないよ)用に自分でコンパイルした8.5.8でも同じ結果になった。
ソースを簡単に眺めたところ、内部32bit型→64bit型に拡張する処理は見つかったけど
なぜ情報落ちするのかは判らなかった。
バグ報告するのが良いと思う。
ひょっとして、64bit環境(OS)だと問題無いのかもしれない。(うちは全部32bit環境)
0634デフォルトの名無しさん2010/08/12(木) 19:23:06
>>632
set shift 1
for { set i 0 } { $i < 64 } { incr i } {
puts [format %016lX $shift]
set shift [expr $shift << 1]
}


The fifth part of a conversion specifier is a size modifier, which must be ll, h, or l.
If it is ll it specifies that an integer value is taken without truncation for conversion
to a formatted substring. If it is h it specifies that an integer value is truncated to
a 16-bit range before converting. This option is rarely useful. If it is l it specifies
that the integer value is truncated to the same range as that produced by the wide()
function of the expr command (at least a 64-bit range). If neither h nor l are present,
the integer value is truncated to the same range as that produced by the int() function
of the expr command (at least a 32-bit range, but determined by the value of
tcl_platform(wordSize)).

http://www.tcl.tk/man/tcl8.5/TclCmd/format.htm#M15
マニュアル嫁。
06356332010/08/14(土) 00:43:23
>>634
う。そっちか。
まったく思いもしませんでした。笑ってやってください。
0636本田2010/10/02(土) 02:16:11
[Activetcl] ActiveTcl 8.5.9.0 released
http://code.activestate.com/lists/activetcl/4478/
0637デフォルトの名無しさん2010/10/11(月) 19:15:11
IMEとの衝突は修正された?
06385922010/10/12(火) 07:22:49
>> 637
直ったようです。
text widgetで漢字を入力しても落ちなくなりました。
0639デフォルトの名無しさん2010/10/12(火) 19:36:18
>>638
それは、ActiveTclのどのバージョンから?
06405922010/10/14(木) 00:15:17
直ったのは ActiveTcl 8.5.9.0
0641デフォルトの名無しさん2010/10/15(金) 13:32:10
Tkのテキストボックスの文字列が変化したとき、それを知らせるコールバックはどれですか?
0642デフォルトの名無しさん2010/10/16(土) 14:52:07
>>641
package require Tk
pack [text .text]
bind .text <Key> {puts "Pressed %K"}

http://www.tcl.tk/man/tcl/TkCmd/bind.htm
マニュアル嫁
0643Perl忍者 ◆M5ZWRnXOj6 2010/10/21(木) 23:40:37
Perl/Tkやってるやつでてこいこら
0644Perl忍者 ◆M5ZWRnXOj6 2010/10/21(木) 23:50:25
おめえハッカーだろ 本田
0645Perl忍者 ◆M5ZWRnXOj6 2010/10/30(土) 18:13:15
Perl/TKでEntryフォームに文字を入力しようとすると
入力できません

なんか前にそれで設定をして うてるようにしたんですが

scimなんとか 入力はできるんですが 日本語入力ができません

どうすればいいですか教えてください
0646デフォルトの名無しさん2010/10/30(土) 18:17:43
>scimなんとか 入力はできるんですが 日本語入力ができません
この文章どうやって打ってるんだよw
0647Perl忍者 ◆M5ZWRnXOj6 2010/10/30(土) 18:35:08
だからscimは、はいってんの

Perl/Tkでの入力のときできない

XMODIFIERS="@im=none"とやってもできない

なんで 教えて
0648Perl忍者 ◆M5ZWRnXOj6 2010/10/30(土) 18:36:20
XMODIFIERS="@im=none"
とやったら入力できるようになるけど

日本語入力ができない


重要:「日本語入力ができない」

教えて
0649デフォルトの名無しさん2010/10/30(土) 18:55:11
ウヒョー
0650デフォルトの名無しさん2010/11/06(土) 21:07:46
Perl/Tkなんてまだ使ってるやついんだな・・・。アホかと・・・
0651デフォルトの名無しさん2010/11/08(月) 00:35:04
canvasにpolygonやlineで書いた絵を画像ファイルでセーブする方法はありますか?
0652デフォルトの名無しさん2010/11/08(月) 00:45:32
標準Tkでも昔からPostscriptでセーブできる。拡張もいろいろ
0653デフォルトの名無しさん2010/11/08(月) 10:11:47
Postscript以外は、できないでしょうか?
0654本田2010/11/08(月) 21:51:18
>>653
> Postscript以外は、できないでしょうか?

GhostscriptでPostscriptをPDFやPNGに変換できるよ。
0655デフォルトの名無しさん2010/11/09(火) 00:35:08
1 imgで画面上に表示してる部分はビットマップに変換できる。
2 tkpathっていうcanvasと互換性のある拡張がある。
0656Perl忍者 ◆V8M/4amdko 2010/11/10(水) 18:58:25
こたえられねえのかよつかええねえなかす
0657デフォルトの名無しさん2010/11/11(木) 21:34:13
653の質問をしたものですが、例えばコマンドラインで
アクティブウインドウのスクリーンショットを取る外部アプリを起動すればできますか?
できればbmp,jpg,gif等に変換したいので。
0658デフォルトの名無しさん2010/11/12(金) 09:48:34
Print Screen キーを押してからペイントで・・・ってのがお手軽かと。
*.psからフィルタで変換の方がスマートだけど。
0659デフォルトの名無しさん2010/11/12(金) 13:28:10
実用的には、そうですがPostScriptは、使う人もPostScriptの環境が必要なので。
PSからの変換もいろんなソフトを使いましたが、思った様に上手くいきません。
逆に変換フィルタで良いのがあれば、教えてください。
0660デフォルトの名無しさん2010/11/12(金) 13:34:56
>>659
canvasの内容をSVG化して書き出す方法が紹介されてる。
http://wiki.tcl.tk/4534

他にはImageMagickを操作して直接画像を作るかだなぁ。
0661デフォルトの名無しさん2010/11/12(金) 21:31:10
>>660
これは、凄い。
itemgetで情報をもってきて、imageで再描画してるみたいだ。

でも、このやり方だとXBM情報とかは再生できませんね。
0662デフォルトの名無しさん2010/11/14(日) 20:28:32
tkにはワークシートとかスプレッドシートのようなものはあるんですか?
0663デフォルトの名無しさん2010/11/14(日) 20:53:56
あるよ。
0664本田2010/11/16(火) 06:10:49
Spreadsheets in Tcl-Tk
http://wiki.tcl.tk/20386
0665本田2010/11/18(木) 08:32:31
TCLによるXMLおよびWeb Servicesのプログラミング、第1回: 入門編
http://www.ibm.com/developerworks/jp/webservices/library/ws-xtcl/
0666本田2010/11/25(木) 06:14:36
Instancier des objets COM avec Tcom
http://wfr.tcl.tk/1012

MS Office - Excel
package require tcom
set application [::tcom::ref createobject "Excel.Application"]
set workbooks [$application Workbooks]
set workbook [$workbooks Add]
set worksheets [$workbook Worksheets]

OpenOffice - Calc
package require tcom
set application [::tcom::ref createobject "com.sun.star.ServiceManager"]
set desktop [$application createInstance com.sun.star.frame.Desktop]
array set arguments {}
set worksheets [$desktop LoadComponentFromUrl private:factory/scalc _blank 0 [parray arguments]]
0667デフォルトの名無しさん2010/11/25(木) 21:53:26
>>663
>>664
お答えくださいってどうもありがとうございました。
たいへん参考になりました。
0668デフォルトの名無しさん2010/11/26(金) 21:06:15
コチョコチョ
0669本田2010/11/28(日) 11:24:10
[Tcl-announce] ActiveTcl 8.6.0.0 Beta 4 released
http://code.activestate.com/lists/tcl-announce/343/
0670本田2010/11/28(日) 15:00:49
John Ousterhout
Professor (Research)
Department of Computer Science
http://www.stanford.edu/~ouster/cgi-bin/home.php
0671一応ティクラー2010/12/03(金) 17:00:29
651>>
canvasにpolygonやlineで書いた絵を画像ファイルでセーブする方法はありますか?
回答:
image create photo image123 -format window -data .any.win
image123 write C:/windows/work/your.jpg
モニタはみ出してるやつには別の対処方法ある。
Windows7 だと「遅い」ときがある。

0672デフォルトの名無しさん2010/12/05(日) 01:02:12
>>671
モニタはみ出たらどうやんの?
このやりかただと他のウィンドウが重なっててもうまくいかないんだよな。
0673本田2010/12/06(月) 23:51:47
PLplot
http://plplot.sourceforge.net/
PLplot is a cross-platform software package for creating scientific plots.
To help accomplish that task it is organized as a core C library,
language bindings for that library,
and device drivers which control how the plots are presented in non-interactive and interactive plotting contexts.


Plplotter widget
http://tuvalu.santafe.edu/~vince/Pltk.html
PLplot is relatively small, portable, freely distributable, and is rich enough to satisfy most users.
It has a wide range of plot types including line (linear, log), contour, 3D, fill, and almost 1000 characters
(including Greek and mathematical) in its extended font set.
The package is designed to make it easy to quickly get graphical output;
only a handful of function calls is typically required.
For more advanced use, virtually all aspects of plotting are configurable.
0674本田2010/12/06(月) 23:53:03
Cpptcl
http://tuvalu.santafe.edu/~vince/EvoXandCpptcl.html
Cpptcl is a tool to allow simple integration of C++ objects with Tcl (and hence Tk).
It includes automatic support for Tcl argument parsing,
command completion, container classes, run-time type information,
archival of object creations, ...
Cpptcl is a pair of loadable Tcl extensions which work fine under Unix and MacOS
(and presumably other platforms too).
0675デフォルトの名無しさん2010/12/07(火) 21:17:06
>>671
ありがとうございます。
0676デフォルトの名無しさん2010/12/07(火) 21:18:20
ところで、Tcl8.5.9でファイルのバイナリセーブの際に
fconfigureで -translation binaryとしてもファイルの最後に0x0aが出るんだけど。
これは、バグ?それとも回避方法がありますか?
0677デフォルトの名無しさん2010/12/12(日) 17:07:13
>>676
それ以外のバージョンでは出ないってこと?
0678本田2010/12/12(日) 23:29:57
[TCLCORE] ActiveTcl 8.5.9.1 released
http://code.activestate.com/lists/tcl-core/9815/
0679デフォルトの名無しさん2010/12/15(水) 21:18:44
英語もロクに読めないへたれなのですが、
Tkの日本語リファレンスってどこかにないでしょうか?
8.3対応っぽいのはぐぐったら見つかりましたが、
今使っている8.4とは微妙に違っている気がします。
0680デフォルトの名無しさん2010/12/16(木) 11:49:49
>>676
puts -nonewline
0681デフォルトの名無しさん2010/12/16(木) 22:11:23
>679
http://www.ne.jp/asahi/kazuo/sasagawa/tcltk-man-jp-13.zip
0682デフォルトの名無しさん2010/12/18(土) 19:28:30
>>680
ありがとうございます。
0683デフォルトの名無しさん2010/12/18(土) 23:59:05
Iwidgetsが使いたいのですが、使えないとです…

環境は ActivePerl 5.12.2 build 1203 + Tkx 1.09 です
スクリプト中に Tkx::package_require("Iwidgets"); と書けば使えるようになるらしいですが
can't find package Iwidgets とエラーが出てしまいます
(ActivePerl 5.10.x の頃は使えてた記憶があるのだけど…
だから Iwidgets を使ってるスクリプトが手元にあるわけだし…)
たぶん Perlインストールフォルダ\lib\auto\Tcl\tkkit.dll の中に
Iwidgets が含まれてないんだと思いますが…

ActiveTcl 8.5.9.1 もインストールしてみましたが、
こちらは teacup install Iwidgets をしたら、Tcl/Tkのスクリプト上で Iwidgets が使えました
(もしかしたら標準で入ってたかも…>Iwidgets)

ActivePerl + Tkx で Iwidgets を使えるようにできないものでしょうか?
何か手はないですかね…?
06846832010/12/19(日) 04:13:51
5.10.1を入れてみたけどダメだった。昔使えてたと思ったのは勘違いだったみたい
もしくは極めて特定のバージョンだけがIwidgetsを含んでいたか
Strawberry Perl を入れてみたけど cpan Tcl でエラーが出て Tkx まで入らない
なんかダメっぽい…

まあ元々、Tcl/Tkの成果物を横から掠め取ろうとしてるようなものですし
基本的なところが動くだけでも凄いのかもしれないですね…>hoge/Tk
Tkの真の力を発揮したかったらTcl/Tk使え、ということか…
06856832010/12/19(日) 09:08:50
連続カキコして申し訳ない
解決しましたので一応報告を
環境変数 PERL_TCL_DL_PATH で tcl85.dll を指定すれば行けるみたいです。スレ汚しスマソ
0686デフォルトの名無しさん2010/12/20(月) 05:26:01
Tcl/Tkのスクリプトをexe化したいのですが
sdx.batってどこにあるんでしょう? というかどれが最新版なんでしょう?

http://code.google.com/p/tclkit/downloads/list
tclkitsh , tclkit , sdx.kit はこれが最新版かと思うんですが
sdx.bat は見つからず…
どこから入手すればいいんだろう?
0687デフォルトの名無しさん2010/12/20(月) 10:07:44
http://www.equi4.com/pub/sk/

@tclkitsh sdx.kit %1 %2 %3 %4 %5 %6 %7 %8 %9

内容はこんだけ。更新されてないけど今でも使えるよ。
0688デフォルトの名無しさん2010/12/20(月) 10:52:19
>>687
ありがとうございます。助かります
中身見てズッコケました
これならバージョンどうこうなんて関係ないですな…dでした
0689デフォルトの名無しさん2010/12/21(火) 20:44:41
これは、凄い。使わせてもらいます。
0690デフォルトの名無しさん2010/12/21(火) 23:01:00
>>681
ありがとうございました。助かります。
EUCだったんですね。
0691本田2010/12/23(木) 10:59:09
TcomExcel - Excel utility package
http://www.posoft.de/html/extTcomExcel.html
TcomExcel is a utility package based on Tcom to script Excel functionality with Tcl.

Notes:

* No manual or online help is available.
* TcomExcel has been tested with Excel 97, 2000, 2003 and 2007.
0692本田2011/01/09(日) 21:31:18
Sockspy
http://sockspy.sourceforge.net/sockspy.html
ockspy lets you watch the conversation of a Tcp client and server.
Sockspy acts much like a gateway: it waits for a Tcp connection, then connects to the real server.
Data from the client is passed onto the server, and data from the server is passed onto the client.
0693本田2011/01/10(月) 20:15:30
Odbcisql is a windowing SQL processor for databases with ODBC interfaces.
http://wiki.tcl.tk/7110]
ftp://ftp.tcl.tk/pub/tcl/mirror/ftp.procplace.com/sorted/databases/odbcisql/1.0/index.html
ftp://ftp.tcl.tk/pub/tcl/mirror/ftp.procplace.com/sorted/databases/odbcisql/1.0/odbcisql-1.0.tar.gz

TclODBCでnvarcharを使えるようにする
http://reddog.s35.xrea.com/wiki/TclODBC%E3%81%A7nvarchar%E3%82%92%E4%BD%BF%E3%81%88%E3%82%8B%E3%82%88%E3%81%86%E3%81%AB%E3%81%99%E3%82%8B.html
http://reddog.s35.xrea.com/software/tclodbc2.5r1-win32-bin.zip

http://sourceforge.net/projects/tclodbc/
http://msdn.microsoft.com/en-us/library/ms714177(VS.85).aspx
0694お父さん2011/01/11(火) 21:16:24
>651 canvasにpolygonやlineで書いた絵を画像ファイルでセーブする方法はありますか?

→確かめた訳ではないけどこんなものがあるらしい
pdf4tcl dumping canvas to pdf

使えるフォントが英文用の3種のみなので日本語はだめだが、純tclでpdfするのはすごい。

0695デフォルトの名無しさん2011/01/11(火) 21:18:45
そんなもん入れんでも標準でepsにできるじゃまいか・・・
vista+ActiveTclではフォントをArialとかにしないとeps化できないけどな〜(MS UI Gothicが悪い?)
0696本田2011/01/12(水) 07:01:49
>>693
Microsoft ODBC Desktop Database Drivers
http://msdn.microsoft.com/en-us/library/ms711711%28v=VS.85%29.aspx
Text File Driver Programming Considerations
http://msdn.microsoft.com/en-us/library/ms714091%28v=VS.85%29.aspx
Text File Data Types
http://msdn.microsoft.com/en-us/library/ms715429%28v=VS.85%29.aspx
SQLGetInfo Returned Values for Text Files
http://msdn.microsoft.com/en-us/library/ms712518%28v=VS.85%29.aspx
Other Text File Driver Programming Details
http://msdn.microsoft.com/en-us/library/ms714680%28v=VS.85%29.aspx
Defining Text Format (Text File Driver)
http://msdn.microsoft.com/en-us/library/ms710983%28v=VS.85%29.aspx
Schema.ini File (Text File Driver)
http://msdn.microsoft.com/en-us/library/ms709353%28v=VS.85%29.aspx


0697本田2011/01/12(水) 23:18:16
mysqltcl - Tcl Mysql Interface (Version 3.05
http://www.xdobry.de/mysqltcl/index.html


MySQL 5.1 リファレンスマニュアル

13.11. CSV ストレージエンジン
http://dev.mysql.com/doc/refman/5.1/ja/csv-storage-engine.html
CSV ストレージエンジンはコンマ区切りの値を使ったフォーマットでデータをテキストファイルに保存します。

24.1. MySQL Connector/ODBC
http://dev.mysql.com/doc/refman/5.1/ja/myodbc-connector.html
0698本田2011/01/15(土) 08:37:16
>>696
Much ADO About Text Files
Greg Stemp
Microsoft Corporation
March 5, 2004
Summary: Demonstrates how script writers can use Microsoft ActiveX Database Objects (ADO) techniques to retrieve data from logs and other text files.
http://msdn.microsoft.com/en-us/library/ms974559.aspx

ADO (Visual Fox Pro oledb) - read .dbf with tcom
http://wiki.tcl.tk/16022
0699本田2011/01/15(土) 15:15:07
SourceForge.JP、個人向けGitリポジトリ/ストレージサービス「PersonalForge」をリリース
http://sourceforge.jp/magazine/11/01/13/0234231
OSDNは1月13日、同社の運営するオープンソースソフトウェア開発サイト「SourceForge.JP」において、
個人向け開発支援ツール「PersonalForge」をリリースした。
個人用Gitリポジトリおよびファイル頒布用のストレージサービス(ファイルマネージャ)が提供される。

Git ユーザマニュアル (バージョン 1.5.3 以降用)
http://www8.atwiki.jp/git_jp/pub/Documentation.ja/user-manual.html

Git
http://wiki.tcl.tk/14597
gitk
http://wiki.tcl.tk/14598
Historically, gitk was the first repository browser.
It's written in Tcl/Tk and almost the whole development history is present in the repository as referenced to on top of this page.
Regularly merges are performed in the main git repository.
0700本田2011/01/16(日) 12:13:38
>>699
Sun Yiyi氏のGit Source Control Provider for Visual Studio 2008/2010の紹介
http://www.infoq.com/jp/news/2010/06/Git-Visual-Studio

Git Source Control Provider
http://visualstudiogallery.msdn.microsoft.com/en-us/63a7e40d-4d71-4fbb-a23b-d262124b8f4c

>>698
Microsoft Jet SQL リファレンス
http://office.microsoft.com/ja-jp/access-help/CH006252688.aspx
Microsoft Jet 4.0 データベース エンジン ドライバを初期化する
http://office.microsoft.com/ja-jp/access-help/HP001032161.aspx
外部データのWindows レジストリ設定
http://office.microsoft.com/ja-jp/access-help/CH001041018.aspx
ODBC アクセスのために Microsoft Jet データベース エンジンを設定する
http://office.microsoft.com/ja-jp/access-help/HP001032164.aspx
Microsoft OLE DB Provider for Jet で接続プロパティを使用する
http://office.microsoft.com/ja-jp/access-help/HP001032169.aspx
テキスト データ ソース ドライバを初期化する
http://office.microsoft.com/ja-jp/access-help/HP001032166.aspx
0701本田2011/01/16(日) 21:53:27
>>693
Database Fishing Tool (DaFT) is a front-end to any database that can be connected to with an ODBC driver.
http://daft.sourceforge.net/

New Version: 1.4.8.1
Released: 08 OCT 2010
This is a minor release, with some major bugfixes.

* Fixed an issue with column information with non-English ODBC driver
* Fixed the problem with data sheet column headings for new query results
0702本田2011/01/21(金) 22:18:38
Miscellaneous Tcl packages
http://vectorstream.com/tcl/packages/
Packages using the Tcl >= 8.5 module system
0703本田2011/01/24(月) 06:41:26
Soar (認知アーキテクチャ)
http://ja.wikipedia.org/wiki/Soar_%28%E8%AA%8D%E7%9F%A5%E3%82%A2%E3%83%BC%E3%82%AD%E3%83%86%E3%82%AF%E3%83%81%E3%83%A3%29
Soar(SOAR)とは、カーネギーメロン大学の John Laird、アレン・ニューウェル、Paul Rosenbloom が作成した認知アーキテクチャの一種。
認識とは何かという観点と、それに基づいた人工知能用のプログラムアーキテクチャの観点から構成される。
1983年に最初に作成され、1987年に論文として発表されて以来、多くの人工知能研究者が人間の行動の様々な観点の認知モデルを作成するのに Soar を用いている。

Welcome to the Soar Home Page
http://sitemaker.umich.edu/soar/home
http://ai.eecs.umich.edu/soar/sitemaker/releases/

Soar is a general cognitive architecture for developing systems that exhibit intelligent behavior.
Researchers all over the world, both from the fields of artificial intelligence and cognitive science,
are using Soar for a variety of tasks.
http://sourceforge.net/projects/soar/
0704本田2011/01/30(日) 12:22:00
Tcl 8.5 Network Programming
https://www.packtpub.com/tcl-8-5-network-programming/book

[PDF]
Sample chapter - Tcl 8.5 Network Programming
https://www.packtpub.com/sites/default/files/0967-chapter-7-using-common-internet-services.pdf

Tcl 8.5 Network Programming [ペーパーバック]
http://www.amazon.co.jp/Tcl-Network-Programming-Wojciech-Kocjan/dp/1849510962/ref=sr_1_1?ie=UTF8&s=english-books&qid=1296357607&sr=1-1
0705デフォルトの名無しさん2011/02/04(金) 21:47:25
wish8.4を使っています。

set pipe [open "|hoge"]とパイプを開いて、
場合によりhogeを途中で終了させたいのですが、
close $pipeやexec kill [pid $pipe]とやると、
どうしてもApplication Errorのダイアログが勝手に出てしまいます。
もう少し穏便に終了させたいのですが、この手のエラーを抑制するにはどうすればよいでしょう?
0706デフォルトの名無しさん2011/02/04(金) 22:11:44
catch
0707デフォルトの名無しさん2011/02/05(土) 11:36:25
過疎スレ(過疎言語?)かと思ったら質問に20分でレスが付くとは。
GJすぐるw。本人じゃないけど礼を言いたいよ。
0708デフォルトの名無しさん2011/02/05(土) 14:37:39
>>706
ありがとうございます、例外の捕捉ができるのですね。
0709デフォルトの名無しさん2011/02/05(土) 23:58:42
このスレじゃないけど質問から1分で的確な回答が付いてたのを見たことがある
0710デフォルトの名無しさん2011/02/06(日) 00:03:35
そういうのは自演だから
0711本田2011/02/06(日) 17:02:07
Great Unified Tcl/Tk Extension Repository
http://www.flightlab.com/~joe/gutter/
0712デフォルトの名無しさん2011/02/13(日) 08:27:10
>>707
たまに本田氏が本気を出す時がある。
いりこ出汁的な意味で。
0713デフォルトの名無しさん2011/02/14(月) 22:33:41
話題は無いけど監視はしてる
0714本田2011/02/16(水) 06:58:49
My Home Page: Jean-Luc Fontaine
http://jfontain.free.fr/
Software (source, documentation, miscellaneous):
For Tcl versions 8.3.x and 8.4.x:

tclperl
a Perl package for Tcl
http://jfontain.free.fr/tclperl.htm
TclPerl/TclPython
http://www.ellogon.org/petasis/index.php?option=com_content&task=view&id=27&Itemid=43

tclpython
a Python package for Tcl
http://jfontain.free.fr/tclpython.htm
TclPerl/TclPython
http://www.ellogon.org/petasis/index.php?option=com_content&task=view&id=27&Itemid=43
0715本田2011/02/19(土) 23:56:32.45
Tcl/Tk Stuff
http://www.cs.nott.ac.uk/~nem/tcl/
Tcl interface to the NJS JavaScript interpreter library (see njs-javascript.org). Note: LGPL licensed.
http://www.cs.nott.ac.uk/~nem/tcl/tcljs-1.0.tar.gz
0716本田2011/02/20(日) 23:10:04.75
http://downloads.activestate.com/ActiveTcl/releases/8.4.19.5/ActiveTcl8.4.19.5.294332-win32-ix86-threaded.exe
http://downloads.activestate.com/ActiveTcl/releases/8.4.19.5/ActiveTcl8.4.19.5.294317-linux-ix86.tar.gz
http://downloads.activestate.com/ActiveTcl/releases/8.4.19.5/ActiveTcl8.4.19.5.294317-linux-x86_64.tar.gz
http://downloads.activestate.com/ActiveTcl/releases/8.4.19.5/ActiveTcl8.4.19.5.294317-macosx-universal-threaded.dmg

http://downloads.activestate.com/ActiveTcl/releases/8.5.9.2/ActiveTcl8.5.9.2.294317-win32-ix86-threaded.exe
http://downloads.activestate.com/ActiveTcl/releases/8.5.9.2/ActiveTcl8.5.9.2.294317-win32-x86_64-threaded.exe
http://downloads.activestate.com/ActiveTcl/releases/8.5.9.2/ActiveTcl8.5.9.2.294317-macosx10.5-i386-x86_64-threaded.dmg
http://downloads.activestate.com/ActiveTcl/releases/8.5.9.2/ActiveTcl8.5.9.2.294317-linux-ix86-threaded.tar.gz
http://downloads.activestate.com/ActiveTcl/releases/8.5.9.2/ActiveTcl8.5.9.2.294317-linux-x86_64-threaded.tar.gz

http://downloads.activestate.com/ActiveTcl/releases/8.6.0.0b5/ActiveTcl8.6.0.0b5.294318-win32-ix86-threaded.exe
http://downloads.activestate.com/ActiveTcl/releases/8.6.0.0b5/ActiveTcl8.6.0.0b5.294318-win32-x86_64-threaded.exe
http://downloads.activestate.com/ActiveTcl/releases/8.6.0.0b5/ActiveTcl8.6.0.0b5.294318-macosx10.5-i386-x86_64-threaded.dmg
http://downloads.activestate.com/ActiveTcl/releases/8.6.0.0b5/ActiveTcl8.6.0.0b5.294318-linux-ix86-threaded.tar.gz
http://downloads.activestate.com/ActiveTcl/releases/8.6.0.0b5/ActiveTcl8.6.0.0b5.294318-linux-x86_64-threaded.tar.gz
0717本田2011/02/22(火) 21:20:38.31
>>715
Embed javascript in Tcl
http://code.google.com/p/tcljs/
This project creates a Tcl extension to embed a javascript interpreter (Spidermonkey) in a Tcl/Tk application.
0718本田2011/03/26(土) 00:26:40.20
Ayam
http://ayam.sourceforge.net/
The current stable version is 1.19, released 16. Mar 2011.
0719デフォルトの名無しさん2011/04/03(日) 15:32:59.92
% puts $tcl_version
8.4
% puts $tcl_patchLevel
8.4.19
% ls -tr
a.txt   b.txt    c.txt
% ls -tr *.txt
/bin/ls: *.tclにアクセスできません: そのようなファイルやディレクトリはありません
child process exited abnormally
% exec ls -tr *.txt
ls: *.tclにアクセスできません: そのようなファイルやディレクトリはありません


なんでダメなの?
07207192011/04/03(日) 15:37:22.20
/bin/ls: *.txtにアクセスできません
の間違いです。すんません。
0721本田2011/04/03(日) 21:24:48.73
tkcon.tcl使ってみたら?
0722デフォルトの名無しさん2011/04/04(月) 23:37:12.86
globとか。
0723デフォルトの名無しさん2011/04/05(火) 22:34:50.19
>>719
OSは?
0724デフォルトの名無しさん2011/04/06(水) 10:52:07.57
>>719
eval exec ls [glob *.txt]
0725デフォルトの名無しさん2011/04/17(日) 23:05:54.75
Tcl、GoogleのNative Clientに対応した「NaTcl」を発表
http://slashdot.jp/developers/11/04/15/181223.shtml
> スクリプト言語TclをGoogleのNative Client環境で実行可能な「NaTcl」が発表された。
> NaTclを使用することでTclをWebブラウザ上で実行可能となり、Tclプログラムで
> Google ChromeのDOM(Document Object Model)に直接アクセスできる。これにより、
> JavaScriptの代わりにTclでWebアプリケーションを作成することが可能となる。
> また、Natice Client向けのTk、「NaTk」もまもなくリリースされるとのこと。

これでTcl/Tkの新しい本が出るようになるかな?
0726デフォルトの名無しさん2011/04/17(日) 23:17:37.46
昔Tcletってあったよね。
0727デフォルトの名無しさん2011/04/18(月) 09:11:17.63
>>726
今でもある
0728デフォルトの名無しさん2011/04/19(火) 00:21:24.65
すらどで話題になりなおかつそこそこコメントが付いてることにワシは感動しておるw
まだ見放されてなかったw
0729デフォルトの名無しさん2011/04/20(水) 15:53:49.10
ペイントソフトをつくろうと思っています
TkCanvasではTkcLine等を用いたベクタ形式の画像処理しかできないようですが
BMPファイル画像等の任意のピクセルの値の読み書きといった
いわゆるペイント系の処理はどのWidgetを使えば実装できるのでしょうか
ご教示お願いします
0730デフォルトの名無しさん2011/04/27(水) 20:32:05.36
できますよ
0731デフォルトの名無しさん2011/05/03(火) 23:02:06.65
>>729
難しいことなんて何もないよ。

package require Img
image create photo image1 -file sample.bmp
canvas .c
.c configure -width [image width image1] -height [image height image1]
.c create image 0 0 -image image1 -anchor nw
pack .c
set rgb [image1 get 10 10]
tk_messageBox -type ok -message "X=10,Y=10のRGB値:$rgb"
for {set i 1} {$i < 100} {incr i} {
image1 put #ff0033 -to $i $i
}
0732デフォルトの名無しさん2011/05/07(土) 22:56:08.08
バイナリファイルを読み込んで、編集して、別名で書き込むにはどうしたら良いでしょうか。
open、binary format、binary scan、puts、getsあたりを使えばできるだろうと思い、試行錯誤したのですが
どうしてもうまくいきません。
Tclは書籍(特に和書)が少ないのでwebの情報が頼りですが、
思ったような情報が見つからず困っています。
0733デフォルトの名無しさん2011/05/08(日) 00:39:37.94
そのコマンド列にfconfigureコマンドが無いのが気になった。
0734デフォルトの名無しさん2011/05/08(日) 00:55:01.94
>>733
確かにfconfigureも必要かもしれませんね。

できれば一部のデータを置換して別名で保存するようなサンプルが見てみたいです。
0735デフォルトの名無しさん2011/05/08(日) 01:34:03.82
まず、試行錯誤してみたコードを貼り付けてみたらどうですか
適当な1バイトを読んでその値を2倍して別ファイルに書き込むのは13行くらいでできた。
0736デフォルトの名無しさん2011/05/08(日) 01:49:08.08
ただファイルを読んでそのまま書き込むだけでも失敗してます。
set fileID [open IM000001]
set fileID2 [open IM000002 w]
fconfigure $fileID -translation binary
set strvar [read $fileID]
binary scan $strvar H* value
set len [string length $value]
puts $fileID2 [binary format H$len $value]
close $fileID
07377362011/05/08(日) 01:53:11.25
ちなみにPythonでは簡単に成功しました。
import re

infile = open("IM000000", 'r')
outfile = open("COPYDCM", 'w')

data = infile.read()
data = re.sub("20110214911005", "99887766554433", data)

outfile.write(data)

infile.close()
outfile.close()
07387362011/05/08(日) 01:56:24.08
737のスクリプトはIM000000というファイルの20110214911005を99887766554433に置換して
COPYDCMという名前で保存するだけです。
Tclではその程度ですら自分にはできません。
0739デフォルトの名無しさん2011/05/08(日) 02:01:45.23
少なくとも
fileID2 にも -translation binary が必要で、puts に -nonewline オプションが必要だともう。
07407362011/05/08(日) 02:06:42.32
>>739
ご指摘の通りにしたら正常に動作しました。
これがわかれば置換等の編集をして保存することも難しくないかもしれません。
頑張ってみます。
ありがとうございました。
0741733 735 7392011/05/08(日) 02:15:08.51
どういたしまして。
Pythonが使えるのになぜTclなんだという疑問がありますが、Tcl使いが増えるとちょっとうれしい。
0742デフォルトの名無しさん2011/05/10(火) 20:13:53.27
あるディレクトリ内にあるファイルのパス名のリストを得るにはどうしたら良いでしょうか?
同じ階層だけであればglobで簡単にできますが、
下層にあるディレクトリ内のファイルも全て対象にしたいのです。
0743デフォルトの名無しさん2011/05/10(火) 21:29:56.14
globを再帰でつくる
とか、
Tcllibパッケージのfileutilを使う
package require fileutil
::fileutil::findByPattern . -glob *
0744デフォルトの名無しさん2011/05/12(木) 00:00:56.94
Tcl/Tkによるバイナリエディタ
http://reddog.s35.xrea.com/wiki/bineditor.html
0745デフォルトの名無しさん2011/05/19(木) 00:16:38.55
>>741
自分はこれからTcl/Tkを覚えようかとしてるんですが、この言語けっこう恵まれてません?
まぁ、自分のニーズもあるんですが、
・スクリプトで、GUIを手軽に書ける
・グラフの描画ライブラリがある(クリック可能)
・他言語との連携ができる
・単独で動作するバイナリができる
・言語仕様が簡単
・クロスプラットフォーム
・オープンソース
・枯れてる

この条件だとPythonでもよかったんですが、Pmw.Bltはちと不安で…。
自分でメンテ+拡張しようにも、結局内部でTkコマンド呼んでるだけだったんで、なら、ということで。
0746デフォルトの名無しさん2011/05/22(日) 00:30:34.87
なぜかユーザーは少ない。最近はちょっと増えてきた気もするが
8.3〜8.4のころは本当に見向きもされてなかった
0747デフォルトの名無しさん2011/05/22(日) 23:15:17.27
PythonでTkinterを介してTkを利用するのって難しすぎじゃね?
Tcl/Tkに慣れすぎると、Tkinterが煩わしくて仕方ない。
どうしてもPythonを使わざるをえない場合は仕方ないけど
できるだけTcl/Tkでやりたくなる。
0748デフォルトの名無しさん2011/05/23(月) 23:08:54.27
まあPython使うときはTk以外の選択肢いっぱいあるのでTk使わなくてもいいんでは
0749デフォルトの名無しさん2011/06/08(水) 22:15:40.29
Tclってfork()できないのがつらい。
TclXはちょっと...
0750デフォルトの名無しさん2011/06/09(木) 20:54:44.14
誰かWin/Linuxでドラッグ&ドロップができるようになる拡張、
8.5以降に対応しているので知らんかね…

とりあえずTkDND 2.2を試して見てるんだけど、8.5には対応
してないらしく、何ヶ所かバグを潰してXConvertSelectionまで
辿り着いたとこで、手詰まった。

※XConvertSelectionをLD_PRELOADでフックして、ちゃんと
 Timeを与えるようにしたのにtimeoutになる、なぜだ…
0751デフォルトの名無しさん2011/06/11(土) 15:06:12.77
TkDNDのfixかなり粘ったけど、これは無理。
Tk本体のselection getもtext/uri-listに対応してなかったり、かなり根が深そう。
これ修正するくらいだったら、一から実装したほうが多分早い。くそぅ。
0752デフォルトの名無しさん2011/06/12(日) 13:33:18.93
誰か詳しい方、Tcl_CreateThreadについて教えてください…

拡張の処理に時間のかかる部分をThread化して、終了をvwait bgstatとかで
待とうとしてるんですけど、http://www.tcl.tk/のマニュアルには
「スレッドは親のinterpに触ってはいけない」とか書いてあるんで、スレッドから
set bgstatすることはできないようなのです。

このあたり、普通はどういう処理をするんでしょうか?
サンプルコードの場所なり、このソース読めば判るんじゃね、でも構わないんで、
なにかヒントをお願いします。
(vwaitのEXAMPLEにあるsocketコマンドは勘弁してください、挫折しました)
0753デフォルトの名無しさん2011/06/12(日) 17:44:41.87
>>752
Tcl_CreateThread()ということは、Cで拡張を書いている?
だったら、Tcl_AsyncMark()が使えると思う。
Tclのthreadコマンドだったら、thread(n)に書いてあるように、thread::sendを
使えば、threadの結果をvwait出来ると思う。
0754デフォルトの名無しさん2011/06/12(日) 18:28:11.50
>>753
Thanks!
CなのでTcl_AsyncMarkですが、マニュアルを読む限りそれっぽい!
とりあえず、何かサンプル書いて確かめてみます。
0755デフォルトの名無しさん2011/06/12(日) 19:33:11.70
…あれ?
自分の理解では、これで合ってるはずなんですが…

スレ汚し失礼。

----------

#include <stdio.h>
#include <unistd.h>
#include <tcl.h>

static Tcl_AsyncHandler async_handle;

static int proc_finished(ClientData clientData, Tcl_Interp *interp, int code)
{
Tcl_SetVar2Ex(interp, "bg_stat", NULL, Tcl_NewIntObj(1), TCL_LEAVE_ERR_MSG);
printf("bg_stat has been set to 1.\n.");
return code;
}

Tcl_ThreadCreateType threaded_proc(ClientData clientData)
{
sleep(5);
Tcl_AsyncMark(async_handle);
}

static int asynctestHandleProc(ClientData data, Tcl_Interp* interp, int objc, Tcl_Obj* CONST objv[])
{
Tcl_ThreadId idPtr;
Tcl_CreateThread(&idPtr, threaded_proc, NULL, TCL_THREAD_STACK_DEFAULT, TCL_THREAD_JOINABLE);
return TCL_OK;
}
0756デフォルトの名無しさん2011/06/12(日) 19:34:05.54
DLLEXPORT int Asynctest_Init(Tcl_Interp* interp)
{
async_handle = Tcl_AsyncCreate(proc_finished, NULL);
Tcl_CreateObjCommand(interp, "asynctest", asynctestHandleProc, NULL, NULL);
return Tcl_PkgProvide(interp, "asynctest", "0.0.1");
}

----------

#!/usr/bin/env tclsh

load [file join . libasynctest[info sharedlibextension]] asynctest

set bg_stat 0
set wait_stat 0

asynctest

puts "bg_stat is $bg_stat."
after 6000 {set wait_stat 1}
vwait wait_stat
puts "bg_stat is $bg_stat."

----------

$ ./asynctest.tcl
bg_stat is 1.
セグメンテーション違反です
0757デフォルトの名無しさん2011/06/12(日) 20:18:25.01
Tcl_SetVar2Ex呼ぶとこでinterpがNULLになってる…
なんか勘違いしてるっぽいですね。
07587532011/06/12(日) 21:15:52.82
>>755
Tcl_AsyncMark(3)の
It is also possible for proc to be invoked when no interpreter is active.
そのものでは?
interp作る場合も注意が必要かな。tcllibとかにも注意。

親Threadにthread::sendでincr varとかを投げるほうが良いような気がしてきたけど。
0759デフォルトの名無しさん2011/06/12(日) 21:53:20.76
>>758
ありがとうございます、仰る通りな気がします。

Tclのソースでも、
generic/tclAsync.c: Tcl_AsyncInvoke()
  If invoked from Tcl_Eval just after completing a command, points to interpreter. Otherwise it is NULL.
generic/tclTest.c: AsyncHandlerProc()
  this (interp==NULL) should not happen, but by definition of how async handlers are invoked, it's possible.
とか書いてありました。
ほぼUndocumentedで、これはない…

Tcl覚え始めてから、使う拡張ことごとく酷い目に合わされてるんで、
正直、使う拡張は最低限にしたく。

で、結局Tcl_AsyncCreateの第二引数にinterp渡して、無理矢理
proc_finishedで使えば、とりあえずは動くようです(Evilですが…)。
仕組み上ではこれで悪くないはず?なので、これで行こうと思います。

ほんとにありがとうございます。
07607582011/06/13(月) 00:33:27.18
>>759
どこで見たか思い出ないけど、Tcl_AsyncCreate()した時(=拡張のロード時)に
interpを保存しておいて、AsyncHandler()の引数がNULLの場合は保存したinterpを
使っていた。同じことをして動いた記憶はある。
引数がNULLということはコマンドを実行していないので、保存していたinterpを
使っても問題にはならないらしい。
逆に、複数のinterpが存在するとAsyncHandler()が呼ばれた時に渡されるinterpが
通知先である保証が無いのかな?
NULLでないのは何らかのコマンドが終了した瞬間だから、保存していたinterpを
使っても安全な気もするから、実行するコマンドが絶対に成功するようにすれば
それでいいんでは?
0761デフォルトの名無しさん2011/06/13(月) 23:10:25.66
>>760
おぉ、詳細なご説明ありがとうございます。
ぼんやりとしていた理解が、明確になった気がします。

やっぱり同じ事を考えた方はいらっしゃるんですね。
というか、スレッドの終了をvwaitで待ちたいとか割とありえる状況な気がしますが、
ぐぐってもKodersでもまともにヒットしないってどういうこと…
この辺がニッチな言語の、もの悲しいとこですね。
0762デフォルトの名無しさん2011/06/16(木) 00:12:12.28
ActiveTcl の8.4 から8.5に移行しようとしてるんだけど、8.5でなんかエクステンションが
すごく減ってない? 例えば8.4であったTclXMLが8.5には見当たらない。 インストールしたのは
ActiveTcl8.5.9.2.294317-linux-ix86-threaded.tar.gz. ドキュメントにはあるんだけど...
http://docs.activestate.com/activetcl/8.5/tclxml/index.html

だいたい、8.4のtar玉は28Mあったのに8.5は20Mしかない

http://downloads.activestate.com/ActiveTcl/releases/8.4.19.5/
http://downloads.activestate.com/ActiveTcl/releases/8.5.9.2/
07637622011/06/16(木) 02:37:19.87
>>116-119
に解答がありました。 失礼しました。
0764天使 ◆uL5esZLBSE 2011/07/05(火) 02:14:58.01
↓↓
「「「「「「「「「 に解答がありました。 失礼しました。 」」」」」」」」」(爆ッゴミッッ!
0765デフォルトの名無しさん2011/07/06(水) 17:28:55.22

<<<<<<<<<<<<< 「「「「「「「「「 に解答がありました。 失礼しました。 」」」」」」」」」(爆ッゴミッッ! >>>>>>>>>>>>>(キリッ!!!きリッ!!!!
↑↑(きリキリッッ!キリ

土方が何をほざいて(笑)



天使#test_s

「天使の煽り」の提供でお送りしました
0766デフォルトの名無しさん2011/07/07(木) 21:59:23.84
>>763
それは2007年当時の話。今のActiveTclでは
teacupで必要な拡張をダウソするのがナウ。
0767本田2011/07/11(月) 23:50:09.19
[Tcl-announce] ActiveTcl 8.5.10.0 released
http://code.activestate.com/lists/tcl-announce/371/
0768本田2011/07/12(火) 00:00:32.94
http://downloads.activestate.com/ActiveTcl/releases/8.5.10.0/
http://downloads.activestate.com/ActiveTcl/releases/8.5.10.0/ActiveTcl8.5.10.0.294993-html.tar.gz
http://downloads.activestate.com/ActiveTcl/releases/8.5.10.0/ActiveTcl8.5.10.0.294993-linux-ix86-threaded.tar.gz
http://downloads.activestate.com/ActiveTcl/releases/8.5.10.0/ActiveTcl8.5.10.0.294993-linux-x86_64-threaded.tar.gz
http://downloads.activestate.com/ActiveTcl/releases/8.5.10.0/ActiveTcl8.5.10.0.294993-macosx10.5-i386-x86_64-threaded.dmg
http://downloads.activestate.com/ActiveTcl/releases/8.5.10.0/ActiveTcl8.5.10.0.294993-win32-ix86-threaded.exe
http://downloads.activestate.com/ActiveTcl/releases/8.5.10.0/ActiveTcl8.5.10.0.294993-win32-x86_64-threaded.exe
http://downloads.activestate.com/ActiveTcl/releases/8.5.10.0/MD5SUM
http://downloads.activestate.com/ActiveTcl/releases/8.5.10.0/SHA256SUM
0769本田2011/07/12(火) 21:01:46.78
Teacup
http://wiki.tcl.tk/17305
Teacup provides access to the Tcl Extension Archive.
It is the client to the TEApot server.
It is distributed with ActiveTcl by ActiveState.
0770デフォルトの名無しさん2011/07/26(火) 13:53:55.22
canvasで書いた円と線の交差判定をしたいです。
計算しなくてもできるって聞いたんですがどうすればいいですか?
0771本田2011/07/30(土) 06:39:19.48
円じゃなくて長方形領域ようだけど。

http://homepage3.nifty.com/kaku-chan/tcl_tk/chapter_231.html
pathName addtag tag overlapping x1 y1 x2 y2
x1 y1 x2 y2 を座標とする長方形領域に少しでも重なるアイテムに対して tag で示されるタグを付けます。 x1 は x2 以下、y1 は y2 以下の数値でなければなりません。
0772本田2011/07/30(土) 06:43:22.91
http://downloads.activestate.com/ActiveTcl/releases/
http://downloads.activestate.com/ActiveTcl/releases/8.5.10.1/
http://downloads.activestate.com/ActiveTcl/releases/8.5.10.1/ActiveTcl8.5.10.1.295062-html.tar.gz
http://downloads.activestate.com/ActiveTcl/releases/8.5.10.1/ActiveTcl8.5.10.1.295062-linux-ix86-threaded.tar.gzhttp://downloads.activestate.com/ActiveTcl/releases/8.5.10.1/ActiveTcl8.5.10.1.295062-linux-x86_64-threaded.tar.gz
http://downloads.activestate.com/ActiveTcl/releases/8.5.10.1/ActiveTcl8.5.10.1.295062-macosx10.5-i386-x86_64-threaded.dmg
http://downloads.activestate.com/ActiveTcl/releases/8.5.10.1/ActiveTcl8.5.10.1.295062-win32-ix86-threaded.exe
http://downloads.activestate.com/ActiveTcl/releases/8.5.10.1/ActiveTcl8.5.10.1.295062-win32-x86_64-threaded.exe
http://downloads.activestate.com/ActiveTcl/releases/8.5.10.1/MD5SUM
http://downloads.activestate.com/ActiveTcl/releases/8.5.10.1/SHA256SUM
0773本田2011/07/30(土) 06:52:55.54
×http://downloads.activestate.com/ActiveTcl/releases/8.5.10.1/ActiveTcl8.5.10.1.295062-linux-ix86-threaded.tar.gzhttp://downloads.activestate.com/ActiveTcl/releases/8.5.10.1/ActiveTcl8.5.10.1.295062-linux-x86_64-threaded.tar.gz


http://downloads.activestate.com/ActiveTcl/releases/8.5.10.1/ActiveTcl8.5.10.1.295062-linux-ix86-threaded.tar.gz
http://downloads.activestate.com/ActiveTcl/releases/8.5.10.1/ActiveTcl8.5.10.1.295062-linux-x86_64-threaded.tar.gz
0774デフォルトの名無しさん2011/08/03(水) 22:02:33.46
Tclって複数行にわたるコメントってできるの?Cの/* ...
... */みたいな。
エディタに頼って全行頭をイゲタるしかないのか。
if 0 {
} ってのもなんだかなぁ...
0775デフォルトの名無しさん2011/08/03(水) 22:39:32.06
どこのJava
0776デフォルトの名無しさん2011/08/05(金) 22:47:02.97
>>774
できない。諦めろ。
0777デフォルトの名無しさん2011/08/05(金) 22:48:49.89
proc rem comment {}

rem {
こめんととめんと
こめんとこめんとおおおお!!!
}
0778デフォルトの名無しさん2011/08/06(土) 00:08:22.24
コメント途中に閉じ中カッコであぼーん
0779デフォルトの名無しさん2011/08/06(土) 17:21:09.88
# コメント1\
コメント2\
コメント3#

でいけそうだけどどうかな?
# もコマンドみたいなものだから \ で続けて書けそうな気がする

最後の # は無くてもいいけど終端という意味で
0780デフォルトの名無しさん2011/08/06(土) 21:28:04.24
それは毎行つけるので行頭#とあんまり大差ないな
0781デフォルトの名無しさん2011/08/07(日) 08:03:02.17
Emacsで範囲指定して
M-x comment-region
0782デフォルトの名無しさん2011/08/09(火) 19:15:00.11
C風。

proc /* {script} {}
proc */ {} {}

/* {
puts hello
puts hello
puts hello
}; */

HTML風。

proc <!-- {script} {}
proc --> {} {}

<!-- {
puts hello
puts hello
puts hello
}; -->
0783デフォルトの名無しさん2011/08/09(火) 21:18:47.70
set comment {
コメント
}
>>782>>777 と同じく、中括弧がバランスしないと破綻する。
中括弧だけなら、
set comment "
コメント
"
という手もあるけど、" と カギ括弧[] を意識しないといけない
0784デフォルトの名無しさん2011/08/09(火) 21:26:01.94
#コマンドの振る舞いって謎だな

{}は改行も含めて一つの要素にするはずだから、

# {あほ
ばか
}

で#コマンドは{あほ改行ばか改行}を一つの引数とするはずなのに、{あほ まででコメントが終了しちゃうよね。

set a {あほ
ばか
}

だとちゃんとaに{あほ改行ばか改行}が入るのに
0785デフォルトの名無しさん2011/08/09(火) 22:50:35.79
#はTclにおいてもコマンドではない。が正解。
0786デフォルトの名無しさん2011/08/10(水) 22:11:16.68
なるほど
#はコマンドの置ける位置に置かねばならないがコマンドではなく行末までのコメントとして処理されるということか
行末の\継続は生きてる状態で。
0787デフォルトの名無しさん2011/08/27(土) 23:51:43.68
toplevel .w1
bind .w1 <Destroy> "puts destroyed"
button .w1.b1
button .w1.b2
pack .w1.b1 .w1.b2

ってやって、.w1を閉じると"destroyed"が3回出てくる。
子持ちウィジェットを閉じると、子供の分まで<Destroy>イベントが発生するらしい。
これって仕様なのかな。
0788デフォルトの名無しさん2011/08/28(日) 21:06:23.24
>>787
仕様。
但し正確には、子供のぶんまでイベントが発生するのではなくて、子供が処理するイベントに
toplevelのぶんが含まれている。
"puts destroyed %W" とかするとわかると思う。
あとはbindtagsのman-page参照。
0789デフォルトの名無しさん2011/08/29(月) 23:40:56.18
>> 787
やりたいこととあってるか分からないけど、toplevel限定なら
toplevel .w1
proc CLOSE_TOPLEVEL {w} {
puts $w
}
wm protocol .w1 WM_DELETE_WINDOW [list CLOSE_TOPLEVEL .w1]
とかはできる。
0790デフォルトの名無しさん2011/08/29(月) 23:52:37.47
AssocQueryStringWというWindows APIが使いたかったので、
http://msdn.microsoft.com/en-us/library/bb773471(v=vs.85).aspx

package require Ffidl
ffidl::callout AssocQueryString {int int pointer-utf8 pointer-utf8 pointer-utf8 int} int [ffidl::symbol shlwapi.dll AssocQueryStringW]

としてみたんですが、

set ASSOCF_NOTRUNCATE 32
set ASSOCSTR_EXECUTABLE 2
set pszFile [string repeat \0 255]
set dwOut 0
AssocQueryString $ASSOCF_NOTRUNCATE $ASSOCSTR_EXECUTABLE {c:\sample.txt} "open" $pszFile $dwOut
=> -2147024809

というのが返ってきます。
たぶん、ERROR_INVALID_PARAMETER(0x80070057) のことだと思うんですが、どの辺が間違ってるんでしょうか?

0791デフォルトの名無しさん2011/08/31(水) 00:16:00.83
>>788 >>789
ありがd
とりあえず

bind .w1 <Destroy> ...

のかわりに

bind .w1.b1 <Destroy> ...

にしたら(子供がいないので)一回だけ処理されるので
目的は達成できてますが、動作が疑問だったんで。
0792デフォルトの名無しさん2011/09/01(木) 20:45:44.79
>>790
1 W系は文字列がUnicode(UTF-16)
2 dwOutが0だと書き込むメモリ領域も0扱い

package require Ffidl
ffidl::callout AssocQueryString \
{int int pointer-utf16 pointer-utf16 pointer-var int} int \
[ffidl::symbol shlwapi.dll AssocQueryStringW]

set ASSOCF_NOTRUNCATE 32
set ASSOCSTR_EXECUTABLE 2
set dwOut 1000
set pszFile [binary format x$dwOut]

set result [AssocQueryString \
$ASSOCF_NOTRUNCATE \
$ASSOCSTR_EXECUTABLE \
"c:\\sample.txt" \
"open" \
pszFile \
$dwOut]

puts result=$result
puts pszFile=[string trim [encoding convertfrom unicode $pszFile] \x00]

XPだと動くけど、64bit版Vistaだとクラッシュするのお・・・。
0793デフォルトの名無しさん2011/09/09(金) 01:55:06.30
>>792
どうもありがとう。
32bit版Win7ではクラッシュ。型が違うのかなあ。。。
0794デフォルトの名無しさん2011/09/09(金) 23:18:14.02
>>793
イベントログにはなんて出てる?ワシのは

エラー 2011/09/09 22:49:03 Application Error 1000 (100)

障害が発生しているアプリケーション tclsh85.exe、バージョン 8.5.2.2、タイム スタンプ 0x47f30c38、
障害が発生しているモジュール SHELL32.dll、バージョン 6.0.6002.18393、タイム スタンプ 0x4d39b5c7、
例外コード 0xc0000005、障害オフセット 0x00008f1a、 プロセス ID 0x17ec、
アプリケーションの開始時刻 0x01cc6ef73c41e270。

て。ひょっとしてshlwapiが壊れてる?
0795デフォルトの名無しさん2011/09/10(土) 01:09:56.11
脳が障害を起こしました
0796デフォルトの名無しさん2011/09/12(月) 00:35:13.36
>>794

なんかJITデバッガのせいでイベントログには残らないみたいですが、
デバッガには以下が表示されてました。
wish84.exe の 0x76d93d52 (shell32.dll) でハンドルされていない例外が発生しました:
0xC0000005: 場所 0x000003e8 を読み込み中にアクセス違反が発生しました。

CAssocArray::GetStringという関数でエラーになってるらしいですが、何に使われてるのかは不明。
0797デフォルトの名無しさん2011/10/22(土) 17:14:45.57
Tcl/tkって、伺かみたいなGUIは実現できるのでしょうか?
0798デフォルトの名無しさん2011/10/25(火) 23:08:12.87
> 797

この辺があればできるのではないかと。

二次元キャラ -> Tk canvas + Imgでpngファイルが使える + TkTrans.dllで背景透過
サウンド -> snack
Windows API, COMの利用 -> TWAPIとFfidl, tcom

設定画面とかは普通にTkで。垢抜けた見た目を求めるならtile拡張

知識の泉
* ActiveTclに添付のヘルプ
* http://wiki.tcl.tk/
* http://www.tkdocs.com/

ActiveTclに標準添付じゃない拡張たち

TkTrans.dll
http://goo.gl/gwXa1

TWAPI
http://twapi.magicsplat.com/

Ffidl
http://elf.org/ffidl/

0799デフォルトの名無しさん2011/10/30(日) 13:19:20.79
canvasで、ある位置の色を取得したいのですが可能でしょうか?
どうすれば取得できるでしょうか?
0800デフォルトの名無しさん2011/10/31(月) 19:58:14.80
> 799

できたよ。
http://wp.me/pSK5T-4g
0801デフォルトの名無しさん2011/10/31(月) 21:12:04.23
>>800
GDIですか、windows用ですね
参考にさせてもらいます
ありがとうございます!
0802デフォルトの名無しさん2011/11/11(金) 22:55:33.88
ActiveTcl 8.5.10->8.5.11 ファイル容量少し小さくなった
0803デフォルトの名無しさん2011/11/18(金) 23:57:56.40
envってグローバルだったんだね。
proc内でglobalつけないで使ってたら
ぜんぜん環境変数にアクセスできなくて、
半日はまった。orz
0804デフォルトの名無しさん2011/11/19(土) 01:12:58.43
>>803
env使うってCGIでも作ってるの?
組み込み変数は全部グローバルだから、
一度info globalsのリストに目を通しておくとそういうときにピンとくると思う。
0805デフォルトの名無しさん2011/11/19(土) 07:50:33.66
http://downloads.activestate.com/ActiveTcl/releases/8.5.11.0/
http://downloads.activestate.com/ActiveTcl/releases/8.5.11.0/ActiveTcl8.5.11.0.295402-html.tar.gz
http://downloads.activestate.com/ActiveTcl/releases/8.5.11.0/ActiveTcl8.5.11.0.295402-linux-ix86-threaded.tar.gz
http://downloads.activestate.com/ActiveTcl/releases/8.5.11.0/ActiveTcl8.5.11.0.295402-linux-x86_64-threaded.tar.gz
http://downloads.activestate.com/ActiveTcl/releases/8.5.11.0/ActiveTcl8.5.11.0.295402-macosx10.5-i386-x86_64-threaded.dmg
http://downloads.activestate.com/ActiveTcl/releases/8.5.11.0/ActiveTcl8.5.11.0.295402-win32-ix86-threaded.exe
http://downloads.activestate.com/ActiveTcl/releases/8.5.11.0/ActiveTcl8.5.11.0.295407-win32-x86_64-threaded.exe
http://downloads.activestate.com/ActiveTcl/releases/8.5.11.0/MD5SUM
http://downloads.activestate.com/ActiveTcl/releases/8.5.11.0/SHA256SUM
0806デフォルトの名無しさん2011/11/19(土) 12:32:51.20
誰もが一度ははまるstr
0807デフォルトの名無しさん2011/11/27(日) 12:50:30.83
ゲームでキャラを移動させるような場合、bindを用いてカーソルキーで操作すると
キーボードのオートリピート機能のせいで、動き始めた直後に一瞬動きが止まります。
スムーズに動くようにするにはどうしたら良いのでしょうか?
0808デフォルトの名無しさん2011/11/28(月) 00:52:09.92
inp(0), inp(1)
0809デフォルトの名無しさん2011/11/29(火) 00:48:45.31
>>807
簡単なテストコード見せて
0810デフォルトの名無しさん2011/11/29(火) 18:09:48.11
>>809
wm geometry . 500x500
canvas .c -bg white
pack .c -expand 1 -fill both
.c create oval 230 230 270 270 -fill red
bind . <KeyPress-Up> {.c move 1 0 -3}
bind . <KeyPress-Down> {.c move 1 0 3}
bind . <KeyPress-Right> {.c move 1 3 0}
bind . <KeyPress-Left> {.c move 1 -3 0}

キー入力の判定だけC言語で書いて、
例えばWindowsならWindows APIを利用するようにすれば解決すると思います
でも、Tclだけで解決する方法はないのでしょうか?
0811デフォルトの名無しさん2011/11/29(火) 22:33:47.99
ググってみたけどこんな方法しかないような

wm geometry . 500x500
canvas .c -bg white
pack .c -expand 1 -fill both
.c create oval 230 230 270 270 -fill red
set moveto ""
bind . <KeyPress-Up> {set moveto "up"}
bind . <KeyPress-Down> {set moveto "down"}
bind . <KeyPress-Right> {set moveto "right"}
bind . <KeyPress-Left> {set moveto "left"}
bind . <KeyRelease> {set moveto ""}
proc move {} {
global moveto
switch $moveto {
up { .c move 1 0 -3 }
down { .c move 1 0 3 }
right { .c move 1 3 0 }
left { .c move 1 -3 0 }
}
after 10 move
}
after 10 move

方向を一つの変数でまとめてるけど方向別にすれば斜め移動も出来る
0812デフォルトの名無しさん2011/11/30(水) 00:27:19.26
>>810
どういうゲームかわからないけど、イベントループを自分で管理するべき。
そして、そのイベントループの中で、KeyPressで動かしはじめて、
KeyReleaseが来るまで動かし続ける。簡単には>>811みたいな。
ちゃんとしたゲームしたいならasteroids.tclが参考になると思う。→http://wiki.tcl.tk/13601
0813デフォルトの名無しさん2011/11/30(水) 12:06:12.14
カーソルキーを押しっぱなしにすると
ずっとKeyPressのままってわけじゃない。
KeyPressとKeyReleaseが交互に発生する。
だからそれは全然アドバイスになってない。
0814デフォルトの名無しさん2011/12/01(木) 10:45:21.56
wm geometry . 500x500
canvas .c -bg white
pack .c -expand 1 -fill both
.c create oval 230 230 270 270 -fill red
array set direction {
n 0
s 0
e 0
w 0
}
set delta 3
bind . <KeyPress-Up> {set direction(n) 1}
bind . <KeyPress-Down> {set direction(s) 1}
bind . <KeyPress-Right> {set direction(e) 1}
bind . <KeyPress-Left> {set direction(w) 1}
bind . <KeyRelease-Up> {set direction(n) 0}
bind . <KeyRelease-Down> {set direction(s) 0}
bind . <KeyRelease-Right> {set direction(e) 0}
bind . <KeyRelease-Left> {set direction(w) 0}
proc move {} {
global direction delta
if {$direction(n)} {.c move 1 0 -$delta}
if {$direction(s)} {.c move 1 0 +$delta}
if {$direction(e)} {.c move 1 +$delta 0}
if {$direction(w)} {.c move 1 -$delta 0}
after 10 move
}
move
0815デフォルトの名無しさん2011/12/01(木) 13:31:06.09
>>813
普通はそうならない。
コントロールパッド本体に連射機能がついてるとかならあり得るかもしれないけど。
0816デフォルトの名無しさん2011/12/01(木) 21:21:12.29
>>815
いや、Tkのキーバインドだとキーボードのキーリピートが働いてしまう。
メモ帳とかに文字を入力する時、たとえば"a"を押しっぱなしにすると、
"a"が一つ表示された後、少し間を置いてaが連続して入力されるだろ。
あれと同じことが起こる。
下のサンプルを動かしてごらん

set x ""
pack [label .t -textvariable x]
bind . <KeyPress-a> {append x 1; update}
bind . <KeyRelease-a> {append x 0; update}
08178162011/12/01(木) 21:35:31.25
このサンプルを動かして、aを押しっぱなしにしたら
1と0が交互に表示されるはず。
そうならなかったらよっぽど特殊なキーボードを使ってるんだろう。
0818デフォルトの名無しさん2011/12/02(金) 11:26:05.96
連射機能付きJOYstickだろ
0819デフォルトの名無しさん2011/12/02(金) 15:07:54.99
>>816,817

そのコード片を試したわけでないので何だが、
通常、キーを押しっぱなしにすると
KeyPress/KeyDownは複数飛んでくるが
KeyReleaseは離したときに1回飛んでくるだけじゃないのかね。
0820デフォルトの名無しさん2011/12/02(金) 19:29:43.54
試さないで何言ってる
0821デフォルトの名無しさん2011/12/02(金) 21:14:48.05
>>819
なぜテストしなかったの?
コードを走らせてみれば一目瞭然なのに。
少なくとも俺の環境では>>816-817の言う通りになったけど。
で、>>811>>814のようにループで処理するとなめらかに動くのは
なぜか適度にKeyReleaseが無視されているからだとわかった。
それを確認するには下の2つのコードを動かしてみればいい。
ループがあるとほとんどグリーンの円のみが現れるが、
ループが無いとグリーンとレッドの円が交互に現れる。

# ループを通した例
wm geometry . 500x500
canvas .c -bg white
pack .c -expand 1 -fill both
bind . <KeyPress-a> {.c create oval 0 245 10 255 -fill green -tags en}
bind . <KeyRelease-a> {.c create oval 0 245 10 255 -fill red -tags en}

proc main {} {
.c move en 3 0
update
after 10 main
}
main

#ループ無し
wm geometry . 500x500
canvas .c -bg white
pack .c -expand 1 -fill both
bind . <KeyPress-a> {.c create oval 0 245 10 255 -fill green -tags en; .c move en 3 0; puts 0}
bind . <KeyRelease-a> {.c create oval 0 245 10 255 -fill red -tags en;.c move en 3 0; puts 1}
0822デフォルトの名無しさん2011/12/02(金) 23:24:20.45
>>821
ループ無し
http://i.imgur.com/byFnN.png
0823デフォルトの名無しさん2011/12/02(金) 23:50:43.04
ループ無し
http://ozcircle.net/_uploader/60860336

俺の環境ではこの通り
0824デフォルトの名無しさん2011/12/03(土) 10:24:08.91
だから〜環境依存の問題の臭いがしてるのに、
バージョンもOSも書かずに「俺の環境」じゃ
誰もこれ以上何もできんだろ
0825デフォルトの名無しさん2011/12/03(土) 11:50:49.20
>>824
Windows7とWindowsXPとLinux Mint 11で確認済
というか、そうならない環境が例外だと思われる
08268252011/12/03(土) 11:54:22.55
Tclのバージョンは8.4と8.5で試したが、結果は同じ
0827本田2011/12/04(日) 21:44:12.75
>>825
もし同じPCでテストしてるなら。
BIOSが同じだから結果が同じ可能性がある。
0828デフォルトの名無しさん2011/12/04(日) 21:57:17.27
>>827
俺も試してみたけど>>823みたいになった。
3台のPCでテストしたんだけど変わらない。
ってことは環境依存だとしても、そういうのって結構多いんじゃない?
0829本田2011/12/04(日) 23:25:19.71
キーのリピート速度と遅延時間を設定するには
http://www.atmarkit.co.jp/flinux/rensai/linuxtips/052keyrepert.html
 同じキーを押し続けると、そのキーが連続で入力できる。
連続で入力される速度を「リピート速度」、キーを押してからリピートを開始するまでの時間を「遅延時間」と呼ぶ。
 キーのリピート速度と遅延時間は、kbdrateコマンドで変更できる。
オプションを何も指定しないでkbdrateコマンドを実行すると、リピート速度が10.9cps(1秒当たり10.9文字)に、遅延時間が250ミリ秒(ms)に設定される。
これが、Linuxのデフォルトの数値だ。
 使用可能なオプションは、-s、-r、-dだ。
0830本田2011/12/04(日) 23:52:04.88
キー・リピート (key repeat)
http://www.atmarkit.co.jp/icd/root/32/5785932.html
 キーを押したままにしたときに、連続的にそのキーが繰り返し入力されたように扱うしくみ。
一般的には、キーが押し下げられてから、キー・リピート処理が開始されるまでの間隔と、
リピート間隔(連続的にキー入力を発生させる際の時間間隔)を設定できる。
0831デフォルトの名無しさん2011/12/05(月) 23:44:17.05
>>814>>815のものですが、>>810を見て、てっきりWindowsの話と思ってました。

これが答えになるんじゃないでしょうか。
X Window SystemではオートリピートでPress/Releaseが交互に発生するらしいです。
http://goo.gl/q3zCD

Windowsでなるという人いないはずだよね?
0832デフォルトの名無しさん2011/12/05(月) 23:57:02.19
あと、確認の仕方は以下で十分です。

bind . <KeyPress> {puts KeyPress}
bind . <KeyRelease> {puts KeyRelease}
console show
0833デフォルトの名無しさん2011/12/06(火) 10:23:09.00
WindowsのオートリピートってX Windowと挙動が違うの?
オートリピートなんてみんな同じだと思ってた
0834デフォルトの名無しさん2011/12/06(火) 21:17:09.62
X Windowって言うな
0835デフォルトの名無しさん2011/12/06(火) 21:57:13.95
>>834
いみふ
0836デフォルトの名無しさん2011/12/06(火) 22:04:04.24
X Windowsというと嫌がる人ってのは見たことあるけどな
X Windowだったら単純にSystemを省略しただけだから何が悪いのかわけわからん
0837デフォルトの名無しさん2011/12/07(水) 00:27:18.67
>>835, >>836
同感。
0838デフォルトの名無しさん2011/12/07(水) 07:30:17.47
ま、開発元は嫌がってるけどね。
0839デフォルトの名無しさん2011/12/07(水) 15:53:36.77
略すなら X のみだろ常考
0840デフォルトの名無しさん2011/12/07(水) 17:55:46.65
X Windowsでいいよ
呼び方なんぞどうでもいい
0841デフォルトの名無しさん2011/12/07(水) 19:52:34.30
tclvfsってどんなもので、どう使えばいいんでしょうか?
意外と情報が少ないし、たまたま見つけたサンプルコードのほとんどがまともに動かないんですけど。
0842デフォルトの名無しさん2011/12/07(水) 20:00:14.15
SX-Windowでいい。
国産だし。
0843デフォルトの名無しさん2011/12/07(水) 20:06:01.06
zipとかjarみたいなもんだと勝手に想像 freewrapみたいなものを自前で実装とか
0844デフォルトの名無しさん2011/12/08(木) 11:07:43.09
>>841
Starkit/Starpack, TclApp, freewrapはtclvfsを使って単一ファイル内にディレクトリ階層を持った複数のファイルを格納してる。
例えばTkSQLiteというフリーソフトがあるけど、あのEXE配布バージョンはStarpackで作られてるので(たぶん)、
package require vfs::mk4
vfs::mk4::Mount tksqlite.exe t
glob -directory t *
vfs::unmount t
とかやると中身が見れる。
ここでtは仮想的なディレクトリの名前になってるので、
set ch [open t/tksqlite.tcl]
puts [read $ch]
close $ch
とかやればファイルが読めるし、
file copy hoge.tcl t/hoge.tcl
とかやればファイルを追加できる。
自分でVFSを作ることもできる。
vfs::mk4::Mount new.vfs t
file mkdir t/subdir
set ch [open t/subdir/hoge.txt w]
close $ch
vfs::unmount t
他にもftpディレクトリをローカルファイルシステムのように扱うvfs::ftpとかいろいろあるみたいだけど使ったことはない。
0845本田2011/12/08(木) 23:16:45.72
>>841
Practical Programming in Tcl and Tk, 4th ed
http://beedub.com/book/4th/

http://beedub.com/book/4th/Starkit.pdf
http://beedub.com/book/4th/welch_examples.zip
0846デフォルトの名無しさん2011/12/10(土) 07:15:51.33
tclで'A'という文字からアスキーコード65を得るには、どうやればいいでしょうか?
0847デフォルトの名無しさん2011/12/10(土) 12:04:09.29
>>846
binary scan "A" c val
puts $val
0848デフォルトの名無しさん2011/12/10(土) 13:17:19.43
>>847
ありがとうございます
0849本田2011/12/17(土) 12:06:21.27
Graphics with TCL/TK
http://www.youtube.com/watch?v=hHFOFefE1YM
0850デフォルトの名無しさん2011/12/24(土) 12:21:45.17
toplevelで作ったウィンドウを手で動かしてから、
wm withdrawで非表示にし、wm deiconifyで再表示させると、
最初に作られた位置に出現します。
(厳密に言うとそれよりちょっと右下)

Tkの仕様なのかウィンドウマネージャの仕様なのか、
消えた時の位置に再表示されるのが自然だと思うんですが。
それともやり方が間違ってるんだろうか?

環境:
Tk 8.4
Soralis 10
CDE 1.6.3
0851デフォルトの名無しさん2012/01/03(火) 19:11:53.53
>>5
さすがだねw
0852デフォルトの名無しさん2012/01/22(日) 19:54:12.53
書けない?
0853デフォルトの名無しさん2012/01/22(日) 19:54:41.21
あれ、書けた。あけおめ。
0854デフォルトの名無しさんNGNG?2BP(1250)
ネタがなにも無くて暇だ
0855デフォルトの名無しさん2012/02/01(水) 23:51:44.54
850には答えてやんないの?
0856デフォルトの名無しさん2012/02/02(木) 00:46:23.97
>>855
だってTk8.4もう使ってないし、CDEも使ったこと無いし、
Sorarisの環境も無いし、ウィンドウマネージャーのせいな気がするから、
環境が無いと確認のしようがないし、
0857デフォルトの名無しさん2012/02/04(土) 13:14:29.62
850です。

ですよねぇ〜。
仕事のマシンで環境いじれないし、
Tcl/Tkなんて(自分以外)ほとんど使ってないからなぁー。
0858デフォルトの名無しさん2012/02/13(月) 21:11:55.61
Tclは実行前にバイトコードにコンパイルされ、高速化が図られていると、説明されています。
することにもよると思いますが、bash,perl,ruby,pythonと比べると速さはどうなんでしょう?
プログラムミング未経験者の、素朴な疑問です。
0859デフォルトの名無しさん2012/02/22(水) 11:52:16.55
>850
Windowsでは消えた場所に戻るからウィンドウマネージャの仕様だと思う。
無理やり戻すしかない。
namespace eval GeometryMemory {
variable geometry
array set geometry {}
}
proc GeometryMemory::install {t} {
bind $t <Unmap> {GeometryMemory::save %W}
bind $t <Map> {GeometryMemory::recover %W}
}
proc GeometryMemory::save {t} {
variable geometry
set geometry($t) [wm geometry $t]
}
proc GeometryMemory::recover {t} {
variable geometry
if {[info exists geometry($t)]} {
wm geometry $t $geometry($t)
array unset geometry $t
}
}
0860デフォルトの名無しさん2012/02/22(水) 11:53:14.60
テストスクリプト

proc GeometryMemory::test {t} {
toplevel $t
GeometryMemory::install $t
update
puts "0: [wm geometry $t]"
wm withdraw $t
update
puts "1: [wm geometry $t]"
wm geometry $t +0+0
update
puts "2: [wm geometry $t]"
wm deiconify $t
update
puts "3: [wm geometry $t]"
}

GeometryMemory::test .t
console show
0861デフォルトの名無しさん2012/02/22(水) 15:59:53.47
>>858

Tclは最近のベンチマークサイトからは仲間外れにされてることが多いのでなかなか比較が見つからないけど、
比較的新しいサイトを見つけました。
http://goo.gl/6vXhj

ちょっと信じがたい感じもしますが、ここによると
Perl5 >> PHP > Ruby = Python2 >> Python3 >> Tcl
みたいな感じですね。Tcl 8.4.19ですけど、8.5では劇的な速度向上はなかったと思うので、
大して変わらんのに対し、Rubyは1.9でかなり速くなったらしいので、
最新版で比べるとさらに分が悪い感じがします。

bashは、、、汎用言語といえるのかなあ。
0862デフォルトの名無しさん2012/02/22(水) 21:44:55.73
>>861
レスもらえてうれしいです。そのうえ的確なサイト紹介です。
速さとか実行速度で検索していたのですが、ベンチマークという言葉が思い当たらず、適当なサイトが見つかりませんでした。

このサイトを見て驚いたのは、Perlの速さとJava・Luaの遅さですね。また、C++は最速と思っていました。
やはり、プログラムの内容でしょうか?
>Test code grows text string by adding another string in cycle until it grows up to 4 mb.
恥ずかしながら英語も全然ですのでよく分かりませんが、このベンチマークは文字列操作に該当するのでしょうか?
LL言語は文字列操作が得意と説明されていますよね。

bashも入れたのは、私が試したいのが次のような内容で、キーボードでの打鍵数を調べたいのです。
1 英文字で100万字の普通の文書を、#,=等の記号も含めてアルファベット順に何文字あるのかカウントする。
2 少し複雑で、日本語で100万文字をローマ字入力したと解釈させカウントする。
  2のケースは条件があります。
  a 小さな'つ'の扱いです。リナックスはrinukkusuとkが2つ、アップルはappuruとpが2つとします。
  b んの扱い。例えば安心は、ansinnと'ん'のあとがナ行以外なら1文字ですみますが、それ以外の'ん'は2文字必要です。
  c 最後にちゃ、ちゅ、ちょはcha,chu,choと、しゃ、しゅ、しょはsha,shu,shoとすることです。
08638622012/02/22(水) 21:45:49.12
カウントする方法がプログラムと言えるのか、shellとかawkでも可能かどうかさえ分かりません。
このスレに書き込んだのは、今からtcl/tkの勉強を始めようと思い、実際のところを知りたかったからです。
tclshがあってインタラクティブに使え、tkでGUIも簡単に扱える、そのうえクロスプラットフォームという魅力から、
tclが多言語に比べて遅くてもよかったのです。BSDで作ったフレームがWindowsで開くまではしました。

eltclshというものを見つけました。簡単なパスとコマンドの補完ができます。
tclshではプロンプトにpwdをだせますが(改行して2行表示はできない)、eltclshではプロンプトの修正が今の私にはできません。
eltclshを改良して意地でもログインシェルにしたいと思っています。
なぜ、tclshはログインシェルになりえなかったのでしょう。

長文ついでに>>861さんにもう一度感謝をのべよう。
tclの復権を願って、これで書き逃げさせていただきます。
0864デフォルトの名無しさん2012/02/24(金) 00:13:15.78
>>859
さんくすです。
おっしゃるとおり結局は,消す前に位置を保存して,
再表示した後で位置をもどすということで解決はしましたが,
なんかすっきりしなかったんですよね。
0865デフォルトの名無しさん2012/02/24(金) 19:38:26.78
>>862
ベンチマークの内容は"abcd____________"という文字列がひたすらつながった4MB+alphaの文字列が1つの変数に格納されるというものです。
なんかベンチマーク用にあえて死ぬほど非効率な方法で実装されていますが、同じ結果を得たいだけなら100ms以下でできる方法があるので
もうちょっと妥当なスクリプトだったらと思います。まあ、それでも負けてるのでしょうが。。。

862さんが作ろうとしているものはKAKASIという漢字->ローマ字変換プログラムを使って、いったんすべてASCIIにしてから処理するのがいいと思います。
http://goo.gl/EJYi

その上で、bashよりもTclを使うメリットは、連想配列があることです。
ただ、連想配列を持つ言語はほかにいくらでもあるので、PerlでもRubyでも好きな言語を使えばいいと思います。
またbashではできないということでもないです。

bashやzshが気に入られてるのは補完機能などが充実してるからではないですかね。
0866デフォルトの名無しさん2012/02/24(金) 20:51:13.77
スクローラブルなウィンドウ(キャンバスウィンドウとか)内のアイテムを<B1-Motion>でドラッグ
するときに、ウィンドウの端あたりまでドラッグしていくとその先の方向へスクロールしてくれる
ようなのを実装したいんですが、参考になるコードスニペットないでしょうか?
0867デフォルトの名無しさん2012/02/25(土) 00:04:22.73
>>865さん
全米が泣いた。

リナックスの世界へ案内しよう
kakasi -Ha -Ja -Ka < test.txt
rinakkusunosekaiheannaishiyou
いろいろ試したのですが、案内のnが一つ少ないほかは完璧でした。
デフォルトがヘボン式なので、意図どおりです。感謝申し上げます。

打鍵数調べに速さは関係ありませんが、tclは8.4から最新バージョンだと、
20%くらい速くなっていそうですね。
http://news.mynavi.jp/news/2007/12/21/027/index.html
0868デフォルトの名無しさん2012/02/28(火) 15:49:05.74
>>867
パフォーマンスに関しては、一概には言えないんですよね。

http://wiki.tcl.tk/1611
http://wiki.tcl.tk/1616

総合成績では8.4が一番優秀だったりします。

私も速度は必要なくて、乗り換えの動機はライブラリが
8.4をサポートしなくなり始めてるということぐらいなんですが。
0869デフォルトの名無しさん2012/02/28(火) 21:11:00.69
lassign命だから8.4は愛せない
0870デフォルトの名無しさん2012/02/28(火) 22:45:08.87
8.5最強伝説
- dictで連想配列の値渡最強
- dictはarrayより最速
- 無間桁計算で国家予算もらくらく計算
- clock addで日付計算最強
- clock formatで和暦がでるんだぜ!
- in 演算子がめちゃ楽最高
- switch正規表現比較が無敵
- lindex $list end-1とか書けちゃう柔軟さ
- {*}って知ってる?eval(失笑)ww

8.6最凶伝説(審議中)
- バイトコードエンジン再実装!速いのか!?
- try {} catch {} finally {} やっと使える!やっとか!
- coroutine って何に使うんですかあ?
- ooって結局どうなの。incr tcl ngの方がいいんじゃ・・・
-
0871デフォルトの名無しさん2012/02/29(水) 16:09:13.53
>>861
試験したTCLのソースをみると単純な文字列置換に"regsub"函数を使っている
、ここを定石とおりに"string match"函数に置き換えると何百倍も速くなった。
(我輩の旧式機械で源リストを実行するとトンでもないことになるが、置き換えるとまともになる。)

tclは8版から劇的に速くなったが、正規表現まわりは遅いまま。
その事情を知って意図的に弱点を突いてきたようだ。


08728612012/02/29(水) 17:54:06.76
>>871
テストの趣旨を無視したバージョン
time {
set str "abcdefghefghefgh"
regsub -all {efgh} $str ____ str
set imax [expr {1024/[string length $str]*1024*4}]
set gstr [string repeat $str [expr {$imax+1000}]]
}
#=>4334 microseconds per iteration

少しは尊重する姿勢を見せてるバージョン
time {
set str "abcdefghefghefgh"
set imax [expr {1024/[string length $str]*1024*4}]
set gstr [string repeat $str [expr {$imax+1000}]]
regsub -all {efgh} $gstr ____ gstr
}
#=>114467 microseconds per iteration

5ms以下で終わる内容をあえてCore i5で10分以上かける方法でやるなんて
ばかばかしいよね。
08738712012/02/29(水) 23:28:59.71
tcl関係者はtcl 7.4->tcl8.1 で「劇速した」と云ったが
ユーザーは「yes except正規表現」と云っていた。
マニュアルも気合が入っていない項目と馬鹿丁寧な項目が入り混じっているし。

良くも悪くも、ちぐはぐが多いみたいだ。好き嫌いは激しかろう。
0874本田2012/03/04(日) 23:41:21.56
http://downloads.activestate.com/ActiveTcl/releases/8.4.19.6/
http://downloads.activestate.com/ActiveTcl/releases/8.4.19.6/ActiveTcl8.4.19.6.295590-html.tar.gz
http://downloads.activestate.com/ActiveTcl/releases/8.4.19.6/ActiveTcl8.4.19.6.295590-linux-ix86.tar.gz
http://downloads.activestate.com/ActiveTcl/releases/8.4.19.6/ActiveTcl8.4.19.6.295590-linux-x86_64.tar.gz
http://downloads.activestate.com/ActiveTcl/releases/8.4.19.6/ActiveTcl8.4.19.6.295590-macosx-universal-threaded.dmg
http://downloads.activestate.com/ActiveTcl/releases/8.4.19.6/ActiveTcl8.4.19.6.295590-win32-ix86-threaded.exe
http://downloads.activestate.com/ActiveTcl/releases/8.4.19.6/ActiveTcl8.4.19.6.295590-win32-x86_64-threaded.exe
http://downloads.activestate.com/ActiveTcl/releases/8.4.19.6/MD5SUM
http://downloads.activestate.com/ActiveTcl/releases/8.4.19.6/SHA256SUM
0875本田2012/03/04(日) 23:44:36.35
http://downloads.activestate.com/ActiveTcl/releases/8.5.11.1/
http://downloads.activestate.com/ActiveTcl/releases/8.5.11.1/ActiveTcl8.5.11.1.295590-html.tar.gz
http://downloads.activestate.com/ActiveTcl/releases/8.5.11.1/ActiveTcl8.5.11.1.295590-linux-ix86-threaded.tar.gz
http://downloads.activestate.com/ActiveTcl/releases/8.5.11.1/ActiveTcl8.5.11.1.295590-linux-x86_64-threaded.tar.gz
http://downloads.activestate.com/ActiveTcl/releases/8.5.11.1/ActiveTcl8.5.11.1.295590-macosx10.5-i386-x86_64-threaded.dmg
http://downloads.activestate.com/ActiveTcl/releases/8.5.11.1/ActiveTcl8.5.11.1.295590-win32-ix86-threaded.exe
http://downloads.activestate.com/ActiveTcl/releases/8.5.11.1/ActiveTcl8.5.11.1.295590-win32-x86_64-threaded.exe
http://downloads.activestate.com/ActiveTcl/releases/8.5.11.1/MD5SUM
http://downloads.activestate.com/ActiveTcl/releases/8.5.11.1/SHA256SUM
0876本田2012/03/04(日) 23:47:21.25
http://downloads.activestate.com/ActiveTcl/releases/8.6.0.0b7/
http://downloads.activestate.com/ActiveTcl/releases/8.6.0.0b7/ActiveTcl8.6.0.0b7.295590-html.tar.gz
http://downloads.activestate.com/ActiveTcl/releases/8.6.0.0b7/ActiveTcl8.6.0.0b7.295590-linux-ix86-threaded.tar.gz
http://downloads.activestate.com/ActiveTcl/releases/8.6.0.0b7/ActiveTcl8.6.0.0b7.295590-linux-x86_64-threaded.tar.gz
http://downloads.activestate.com/ActiveTcl/releases/8.6.0.0b7/ActiveTcl8.6.0.0b7.295590-macosx10.5-i386-x86_64-threaded.dmg
http://downloads.activestate.com/ActiveTcl/releases/8.6.0.0b7/ActiveTcl8.6.0.0b7.295590-win32-ix86-threaded.exe
http://downloads.activestate.com/ActiveTcl/releases/8.6.0.0b7/ActiveTcl8.6.0.0b7.295590-win32-x86_64-threaded.exe
http://downloads.activestate.com/ActiveTcl/releases/8.6.0.0b7/MD5SUM
http://downloads.activestate.com/ActiveTcl/releases/8.6.0.0b7/SHA256SUM
0877デフォルトの名無しさん2012/03/07(水) 20:28:21.05
TclでCのstatic宣言みたいなのができるとありがたいです。
いい方法はないでしょうか?

たとえば,プロシージャの中で,呼ばれた回数に依存した処理をするような場合,
下のように,global変数をインクリメントしたりしてますが,
他のglobal変数とぶつかったりしないか心配で,夜も眠れません。
namespaceだと大げさになりそうで。

proc foo {} {
global bar

if [info exists bar] {
incr bar
} else {
set bar 1
}

# 呼ばれた回数に依存する処理
}
0878デフォルトの名無しさん2012/03/07(水) 22:30:41.71
>>877
ttp://wiki.tcl.tk/1532 の下から二番目のスニペットとか。
0879本田2012/03/07(水) 23:08:53.76
>>877
singleton application
http://wiki.tcl.tk/1558
0880デフォルトの名無しさん2012/03/09(金) 20:33:11.94
>>878
>>879
おふた方ともありがとうございます。
やっぱりそんな簡単にはいかないですね。

それにしても反応早すぎw
0881デフォルトの名無しさん2012/03/10(土) 11:07:27.49
間違えた。
速すぎ。
0882デフォルトの名無しさん2012/03/14(水) 18:44:21.69
>>877
namespace大げさではけど、使いづらいとは思う。

もともと[incr Tcl]を取り込んだという割には、
名前空間付きの変数を作るitcl::scopeに相当するコマンドがなかったり、
プロシージャは見えるのに変数はvariableなしでは見れなかったりというのが使いづらい。
08838822012/03/14(水) 18:45:23.25
x 大げさではけど
o 大げさではないけど
0884デフォルトの名無しさん2012/04/16(月) 17:32:28.78
tk_getOpenFile でショートカット指すとホンモノの名前が返ってきて読むとき便利だけど、ショートカット入ってたディレクトリーがどこだかわからない。どうすりゃ判るの?
0885デフォルトの名無しさん2012/04/17(火) 11:23:18.41
tk_getOpenFileはショートカット(.lnk)ファイルそのものを返すことはできない。
Tkの組み込みコマンドなのでスクリプトで改造もできない。
OSネイティブのきれいなダイアログじゃなくてよければ可能。

::tk::dialog::file:: open

tk_getOpenFileコマンドがないときに使われる古いダイアログみたい。

詳しくは以下参照。
$::tk_library/tk.tcl
$::tk_library/tkfbox.tcl
0886デフォルトの名無しさん2012/04/17(火) 11:28:02.15
>>884
http://wiki.tcl.tk/1060
0887デフォルトの名無しさん2012/04/17(火) 21:42:15.41
>>885
>>886
884です。貴重なコメントありがとうございます。
いずれにしてもかなり敷居が高そうですね。

取り敢えずは回避策を軸に考えます。

0888デフォルトの名無しさん2012/04/26(木) 15:47:16.82
>>887

全然敷居高くないよ。単に見た目が違うのを我慢してと言ってるだけ。

::tk::dialog::file:: open

というコマンドは、tk_getOpenFileと同じオプションを指定できるから
オプションは同じでコマンドだけ置き換えればおk
0889デフォルトの名無しさん2012/05/01(火) 21:23:39.21
http://jim.tcl.tk/index.html/doc/www/www/index.html
Tcl8.6 のサブセットの Jim Tcl、本体は 8 ビットクリーンなのですが、内蔵ラインエディタが悪さしてシェル上での日本語入力を通しません。
それで、以下のようにしてその内蔵ラインエディタを外せばシェル上でも日本語を受け付けるようになります (CP932 でエスケープ文字と 2
バイト目が重なるようなものも、波かっこで挟んでエスケープ処理を抑制すれば入れられます)。
./configure --utf8 --disable-lineedit
utf8 のフォーマットに合う場合だけ utf8 として処理し、それ以外は単に 1 文字 8 ビットの文字列として処理します。Tcl8.6 の CVS 版に先
駆け、1 文字が 5 バイト長の utf8 文字列も取り扱えます。
なお、configure の処理実体が Tcl コードのため、そのままでのコンパイルには別の Tcl が必要です。

http://www.hecl.org/
Tcl 似の超コンパクトな言語 Hecl の方も、内蔵のラインエディタ jLine が日本語入力の邪魔をしているようですが、こちらは完全に組み込
まれているので、ソース自体の書き換えが必要になります (この理由で、jLine を外せば問題が解決するかどうかまでは試していません)。
0890デフォルトの名無しさん2012/05/02(水) 23:32:02.54
configureがtclだと、、、?マジカヨ、、
0891デフォルトの名無しさん2012/05/04(金) 10:40:49.18
>>888
884です。ご教唆ありがとう。これで読むとショートカットは尻に".lnk"が付いているので区別できるようですね。
次はショートカット・ファイルからリンク先を取り出す方法に格闘します。
0892デフォルトの名無しさん2012/05/05(土) 00:53:02.81
>>891
ずいぶん難しいことしてるね。
Windowsのショートカットファイルはバイナリフォーマットだから自力で解析するよりtwapiを使うのがよいと思うよ。
http://goo.gl/9D9tI
0893デフォルトの名無しさん2012/05/06(日) 16:30:46.62
>>892
884です。何から何まで ありがとうございます。
尻が".lnk"のファイルは twapi::read_shortcut でホンモノの名前を白状させることができました。
お蔭様で、見掛けはしょぼく 中身が立派なスクリプトができました。
0894デフォルトの名無しさん2012/05/12(土) 09:00:26.16
ここ読んでる人たちはEDA関連の人たちが多いんだろうなー
0895デフォルトの名無しさん2012/05/18(金) 22:51:20.91
64bit用のtcl8.5のtcom.dllどこかにないでしょうか
tcl8.6 64bit用のtcom.dllは見つけたのですが・・・

ttp://www.tin-pot.coco.mydisk.se/

tcomはソースがあるから何とかなりそうだけど、コンパイルやったことない。。。
twapiが代わりになるけど、こっちはExcelとかのオブジェクトを自動でに開放してくれない(´・ω・`)

どなたか手段わかりませんでしょうか
0896デフォルトの名無しさん2012/05/19(土) 00:05:40.60
おれもWindows7 64ビットにしたとき、
Tclも64ビットライブラリで作り直したかったけど、
依存する奴全部揃えられなくて諦めた。
まあ64ビットにしないといけないアプリじゃなかったし。

で、tcomみたいなOFFICEアプリ?とかを操作するのに
64ビットじゃないといけないの?答えになってないが。
0897デフォルトの名無しさん2012/05/19(土) 01:56:01.60
>>896
まあ、office操作自体は確かに64bitにする必要がないんです

とあるソフトに32bit版と64bit版があって、
これにそれぞれ32bitと64bitのtclが組み込まれていているんですが、
自分が32bitで動くスクリプトを作った後に、
それをそのまま64bitに持っていったらdllの問題で組み込めなかった・・・

悔しい。

という話です。。
64bitのPCに32bitのそのソフトをインストールすれば動作自体はするのですが。
0898デフォルトの名無しさん2012/05/25(金) 16:17:21.15
>>861 のベンチマークはちょっと変えるとTclが圧倒的に速くなるよ。
[Ruby1.9.3]
+ str=str.gsub(/efgh/, "____")
gstr+=str;
- gstr=gstr.gsub(/efgh/, "____")
exec.tm.sec str.length
2sec 256kb
略)
395sec 3840kb
455sec 4096kb
[Tcl8.5.11]
+ regsub -all {efgh} $str ____ str
append gstr $str;
- regsub -all {efgh} $gstr ____ gstr
exec.tm.sec str.length
0sec 256kb
略)
0sec 3840kb
0sec 4096kb
0899デフォルトの名無しさん2012/06/17(日) 21:24:30.09
ジオメトリーマネージャ(pack, grid, place)の働きが
イマイチよくわかりません。通り一遍のことはぐぐれば
わかりますが、ちょっと凝ったことをしようとすると
どれを選んでどういったオプションを指定すればよいか
いつも迷ってしまいます。
何かこうスッキリわかりやすく解説してくれてるとこって
ないですかね。書物は、この手のものはたいてい
高額なのでちょっと手が出ないかな。。。
0900デフォルトの名無しさん2012/06/18(月) 07:52:40.33
>>899
僕も最初はあいまいなまま結果オーライで使ってたけど、Ruby/Tkの本が丁寧な解説で役立ったよ。
Rubyを256倍使うための本・界道編
http://goo.gl/YuZuF
0901デフォルトの名無しさん2012/06/18(月) 09:01:28.10
   ┌─┐
   │●│
   └─┤
   _   ∩
  ( ゚∀゚)彡
┌─┬⊂彡
│●│ おっぱい!おっぱい!
└─┘
0902デフォルトの名無しさん2012/06/18(月) 22:46:47.84
>>900
256倍シリーズってまだあったんですね。
確かにあれはわかりやすいかも。
Rubyは盲点でした。
0903デフォルトの名無しさん2012/06/19(火) 06:41:21.59
grid最強
pack, placeは後方互換用と思ってよい

…とtkdocsのサイトには書いてあった
http://www.tkdocs.com/tutorial/grid.html
0904デフォルトの名無しさん2012/06/19(火) 19:32:26.30
>>903
packはともかくplaceは置き換えられない部分があると思うなあ。
右上とか右下にくっついて動くロゴみたいなのはgridだとかえって難しい気がする。
gridのコマ割り考えるのも結構面倒。
0905デフォルトの名無しさん2012/06/19(火) 22:00:48.41
pack,place,gridだけで配置するより、ある程度区切ったらframeを乗せて
その中で個別にpack,place,grid使って配置した方が楽
0906デフォルトの名無しさん2012/06/19(火) 22:03:34.92
placeはゲームのようなドット単位で指定したりするときに便利。
俺はTkでそういうのを作る機会がなかったので使ったことがないけど。
gridが全てにおいて万能というわけでもない。
0907デフォルトの名無しさん2012/06/20(水) 14:33:31.82
place使ってプログレスバーを作ってる例ならあるよ。Ruby/Tkだけど。
http://www.dumbo.ai.kyutech.ac.jp/~nagai/RubyTk/?%A4%BD%A4%CE%C2%BE%A4%CE%A5%B5%A5%F3%A5%D7%A5%EB%A5%B9%A5%AF%A5%EA%A5%D7%A5%C8
0908デフォルトの名無しさん2012/06/22(金) 20:34:56.08
tclでテキスト処理して結果をxterm -e w3mで出力させたいのですが、以下のようにしても動きません。
どのようなやり方で出力させればよいでしょうか?

% tclsh
% set a "
test
test
"
% exec xterm -e "echo $a | w3m "

0909デフォルトの名無しさん2012/06/30(土) 01:51:50.71
>>908
意図がよくわからないんだけど、aの中身はホントはHTMLにして
ターミナルにw3mでレイアウト表示したいってことなら、

set ch [open |[list w3m -T text/html << $a] r]
puts [read $ch]; close $ch

一応w3mが整形したとおりに出力される。
0910デフォルトの名無しさん2012/06/30(土) 01:59:12.62
あ、xtermってあれか、Xのターミナルエミュレータか。
じゃあ、ちょっと違うかな。
リダイレクトのバリエーションでTclのチャネルを別プロセスに渡す方法とかあるみたいだから見てみたらいいかもしれない。
http://www.tcl.tk/man/tcl/tutorial/Tcl26.html
0911デフォルトの名無しさん2012/07/01(日) 08:06:09.94
>>909,910
909を見てて下を試しましたら、出力することができました。

% exec xterm -e "w3m << a
$a
"
ありがとうございました。
0912デフォルトの名無しさん2012/07/28(土) 08:05:27.41
Tcl/Tk 8.5.12 Release Announcement
July 27, 2012
0913デフォルトの名無しさん2012/08/02(木) 19:12:11.95
ActiveTcl 8.5.12.0
http://www.activestate.com/activetcl/downloads
0914本田2012/08/02(木) 23:54:45.63
http://downloads.activestate.com/ActiveTcl/releases/8.5.12.0/
ttp://downloads.activestate.com/ActiveTcl/releases/8.5.12.0/ActiveTcl8.5.12.0.296033-html.tar.gz
ttp://downloads.activestate.com/ActiveTcl/releases/8.5.12.0/ActiveTcl8.5.12.0.296033-linux-ix86-threaded.tar.gz
ttp://downloads.activestate.com/ActiveTcl/releases/8.5.12.0/ActiveTcl8.5.12.0.296033-linux-x86_64-threaded.tar.gz
ttp://downloads.activestate.com/ActiveTcl/releases/8.5.12.0/ActiveTcl8.5.12.0.296033-macosx10.5-i386-x86_64-threaded.dmg
ttp://downloads.activestate.com/ActiveTcl/releases/8.5.12.0/ActiveTcl8.5.12.0.296033-win32-ix86-threaded.exe
ttp://downloads.activestate.com/ActiveTcl/releases/8.5.12.0/ActiveTcl8.5.12.0.296033-win32-x86_64-threaded.exe
ttp://downloads.activestate.com/ActiveTcl/releases/8.5.12.0/MD5SUM
ttp://downloads.activestate.com/ActiveTcl/releases/8.5.12.0/SHA256SUM
0915デフォルトの名無しさん2012/09/12(水) 07:36:14.95
PTさん、8.5.12のtclkit作ってくれないのかなぁ
0916デフォルトの名無しさん2012/09/27(木) 00:17:38.23
pack [frame .f -background ""] -fill both -expand 1
ってやると,色々配置したウィンドウを見た目変えずに一気に無効にできる。
destroy .f
で有効化。
だから何っていわれてもアレだけど。
0917デフォルトの名無しさん2012/10/05(金) 20:50:57.35
>>915 こんなんありますけど
http://www.cqi.com.tw/coopermaa/tcl/20041107-01.doc

0918デフォルトの名無しさん2012/10/05(金) 22:25:49.47
>>916
確かにマニュアルにもframeの-bg ""の挙動は書いてあるけど、Windows7+Tk 8.5.11だとバグってるっぽい。
なぜか一旦destroyしてもう一回 frame作るとそれっぽい動きにはなる。最大化するとやっぱりいろいろおかしい。
Linuxだと問題ないのかな。

button .b1 -text hoge
button .b2 -text hoge
place .b1 -x 10 -y 10
place .b2 -x 50 -y 50
pack [frame .f -background ""] -fill both -expand 1
0919デフォルトの名無しさん2012/11/20(火) 00:18:52.14
保守?
0920デフォルトの名無しさん2012/11/26(月) 18:33:59.94
Latest Release: Tcl/Tk 8.5.13 (Nov 12, 2012)
0921デフォルトの名無しさん2012/12/08(土) 02:46:12.21
今、html5がやろうとしてることって、もともとtcl/tkがやろうとしてたことだよね
何で政治的に負けちゃったんだろう
0922デフォルトの名無しさん2012/12/15(土) 17:34:24.88
expectもTCLだからここで聞いていいよね

expectというかtclで、設定ファイルを読みたい
bashのように、設定ファイルと見せかけて実は実行 でもいい

ロードかインクルードの方法ってありますか?
0923デフォルトの名無しさん2012/12/15(土) 20:09:19.04
>>922
sourceじゃダメなのか?
>>920
ActiveTcl来た
PTさんのtclkitも来た
0924デフォルトの名無しさん2012/12/17(月) 13:28:41.57
そろそろ8.6がリリースされるんじゃないかと思って
今年4月にPro Studioのサブスクリプションを自腹で1年延長してみたものの、
8.6に対応するときはメジャーアップデートでアップグレード対象外になる可能性に今頃気付いた。
そんなもったいないことしてる人は他にいないと思うが。。。
でもいいの。ActiveTclだけでもリリースし続けてくれてるだけで満足でございます。
0925デフォルトの名無しさん2012/12/24(月) 22:46:13.42
ついにTcl/Tk 8.6が12/20にリリースされました。
0926デフォルトの名無しさん2012/12/26(水) 21:31:39.97
SL4AでTcl動かそうと思ったけど、うまくいかんな。つまらん
0927デフォルトの名無しさん2013/01/18(金) 03:10:56.99
ubuntuが出すタブレットPCでも動くのかな?
0928デフォルトの名無しさん2013/01/21(月) 19:38:03.19
ActiveTcl 8.6.0.0リリースだよ。
0929デフォルトの名無しさん2013/02/19(火) 07:16:05.65
特定のwidgetだけ再描画することは出来ないでしょうか?
textに数千行読む時にprogressbarを更新したいけど、その他の再描画は無駄なので止めたいのです。
updateだと全体を再描画になります。
0930デフォルトの名無しさん2013/02/21(木) 22:20:12.72
特定widgetだけ再描画する方法は分からないけど、
textへの追加を1行ずつしないで、全部を一旦変数に入れて一発でinsertする、じゃダメなの?
0931デフォルトの名無しさん2013/02/22(金) 21:07:25.94
C:\Program Files\Tcl\demos\Tk8.5\widget.tcl
Scales and Progress Bars 4. Progress bar
はupdate なし
configure命令
0932デフォルトの名無しさん2013/02/23(土) 21:44:59.02
Tkの部品はconfig命令を使うと色や形の現在値は変更できるが、Tkは高速化の為に画面への反映は遅延表示させているので途中経過を表示せずにいきなり最終結果が表示されたりする。
プロバー表示では現在値を強制表示させる為にupdate命令を使うのが定石だがこれが禁じ手になると結構難しいか。

@930番さんの様にまとめて一発表示
Aupdate命令間隔をを10秒置きとか極端に長くする
Bその他の部品はforgetオプション等で退避しておいて後で表示
C?
ところでTkのtext表示は普通はそんなに遅くはないが改行文字なしの長い行を表示させると異様に遅くなるみたい。
0933デフォルトの名無しさん2013/03/06(水) 21:36:21.62
SSD環境なので参考にならんかもしれませんが、2000文字x5000行のファイルでは、
5行おきのアップデートにすると秒単位で高速化されました。
それでもプログレスバー表示しない場合の11.5倍時間がかかりました。

create_file: 483288 microseconds per iteration
gets_lines: 271409 microseconds per iteration
read_bulk: 252275 microseconds per iteration

test_full_update: 5123759 microseconds per iteration
test_skip_update: 3374500 microseconds per iteration
test_no_update: 291779 microseconds per iteration
test_bulk_insert: 285029 microseconds per iteration
0934デフォルトの名無しさん2013/03/09(土) 03:48:33.45
最初にファイルサイズ取得して、サイズに応じてupdateする行数変更するとか。
5000行のファイルに5行おきにプログレスバーを更新するってのが...
0935デフォルトの名無しさん2013/03/12(火) 17:51:41.39
tcl8.6爆速なんだけど↓からだいぶ状況変わったの?
http://d.hatena.ne.jp/satosystems/20121228/1356655565
この速さはただの再帰もループになってる?

5桁とかになると1分以上かかって他に大きく離される
これはループにしても変わらないから多倍長ライブラリの性能かな
0936デフォルトの名無しさん2013/03/12(火) 18:29:56.59
すまん関数名同じだからかんちがいした
fib 38は固まるわ
0937デフォルトの名無しさん2013/03/12(火) 22:01:59.60
>935
私の中古機械で試してみた。式をまとめると約10倍速くなった
どうしてこんなに違うのか??
fib <39088169> term <80312600 microseconds per iteration>
proc fib {n} {
if {$n < 2} { return $n }
return [expr {[fib [expr {$n - 1}]] +[fib [expr {$n - 2}]]}]
}

fib <39088169> term <714145387 microseconds per iteration>
proc fib {n} {
if {$n < 2} { return $n }
set a [expr $n - 2]
set b [expr $n - 1]
set x [fib $a]
set y [fib $b]
return [expr $x + $y]
}
0938デフォルトの名無しさん2013/03/15(金) 22:54:42.21
>>937
exprの引数を{ }で囲むだけでだいぶ違うな
0939デフォルトの名無しさん2013/03/15(金) 23:06:47.65
初心者が初心者に嘘を教えるスレです
0940デフォルトの名無しさん2013/03/15(金) 23:08:30.06
exprの引数を{ }で囲むのは8.6以前からの定石。
2回評価させないようにする。
0941デフォルトの名無しさん2013/03/23(土) 22:06:55.05
937です。より速くより汚く
proc fib {n} {
if {$n < 2} { return $n }
return [expr {[fib [incr n -2]] +[fib [incr n ]]}]
}
fib <39088169> term <72891401 microseconds per iteration> でした。

935 引用のページからC++を複写してVisualC++Express2008(要するに無料ソフト)を使って実行してみた
fib44=701408733
fib45=1134903170
fib46=1836311903
fib47=-1323752223
fib48=512559680

tcl/tk(ver8.5.13)でfib47 は
fib <2971215073> term <1253824233 microseconds per iteration>
1254秒!!。鈍足で正確でした。なっとく

速度、精度、価格、安直さ、どれも一つの側面でしかなく、それらを総合的に評価して最適ソフトを選択することが肝要だと思う。
09429292013/03/24(日) 10:09:02.93
ありがとうございます。規制されてて遅くなりました。
progressbarはupdate idletasksで表示が更新されましたが、古いPCのWindowsXPでは5〜6秒程度updateしないと
メニュー部分が白くなって、その後はprogressbarも更新されなくなります。(update idletasksではダメ)
ということで、数秒おきにupdateしないとprogressbarが更新されません。
見た目を重視しているので無駄はあきらめることにしました。
0943デフォルトの名無しさん2013/03/31(日) 08:08:41.45
Tcl/Tk 8.4.20予告 6/1(随分さきの話だが)に最終版リリース予定らしい。まだ8.4.を改良してたのか。
Tcl/Tk 8.4.20 Release Announcement
June 1, 2013

The Tcl Core Team is pleased to announce the 8.4.20 releases of the Tcl
dynamic language and the Tk toolkit. This is the twentieth and *FINAL*
patch release of Tcl/Tk 8.4. With this release, support for Tcl/Tk 8.4
comes to an end.
0944デフォルトの名無しさん2013/04/03(水) 22:36:01.28
Tcl/Tk 8.5.14 Release Announcement
April 3, 2013
0945デフォルトの名無しさん2013/04/09(火) 21:46:20.56
>>5の予想を裏切り2014年まで持つ勢いだが、
ActiveTcl 8.6.1.0とTclDevKit 6.0の登場が変えてくれることを願う。
0946デフォルトの名無しさん2013/04/20(土) 09:26:13.99
0947デフォルトの名無しさん2013/04/20(土) 09:26:55.27
まだTCLなんてあったんだ。10年前に学校の授業で使ったのが懐かしい。
0948デフォルトの名無しさん2013/04/20(土) 09:51:28.05
まだTCLなんてあったんだ。20年前に学校の授業で使ったのが懐かしい。
0949デフォルトの名無しさん2013/04/20(土) 10:29:53.36
まだTCLなんてあったんだ。30年前に学校の授業で使ったのが懐かしい。
0950デフォルトの名無しさん2013/04/20(土) 10:31:56.44
30年前には存在しない
0951デフォルトの名無しさん2013/04/20(土) 10:47:05.42
おーまいがー
0952デフォルトの名無しさん2013/04/24(水) 15:08:39.78
http://wiki.tcl.tk/37866

なるほどなぁ…centos 5.5かぁ…
0953デフォルトの名無しさん2013/05/07(火) 12:31:39.81
age
0954デフォルトの名無しさん2013/05/10(金) 09:11:32.01
ActiveTcl 8.5.14.0 released
http://code.activestate.com/lists/tcl-core/13226/
0955デフォルトの名無しさん2013/06/05(水) 20:40:09.70
Tcl/Tk 8.4.20 final patch release
code.activestate.com/lists/tcl-core/13294/
0956デフォルトの名無しさん2013/07/11(木) NY:AN:NY.ANID:YGMQYZf2!
海外ですらもtkはディスられていた。
0957デフォルトの名無しさん2013/07/11(木) NY:AN:NY.AN
TKは衰退しました
0958デフォルトの名無しさん2013/07/15(月) NY:AN:NY.AN
そろそろ次スレ立てた方がいいと思う
0959デフォルトの名無しさん2013/07/17(水) NY:AN:NY.AN
新このホストではしばらくスレ立てられません

【英語サイト】
プロジェクト本拠地
http://tcl.sourceforge.net/
最新版ソースコード
ftp://ftp.tcl.tk/pub/tcl/nightly-cvs/
The Tcler's Wiki
http://wiki.tcl.tk/
The comp.lang.tcl Newsgroup
http://groups.google.com/group/comp.lang.tcl/
ActiveTcl
http://www.activestate.com/products/activetcl/

【日本語サイト】
もっとTcl/Tk
http://www.interq.or.jp/japan/s-imai/tcltk/
Tcl/Tk Scripting Laboratory
http://www.geocities.jp/urano343/tcltk.html
Tcl/Tk Primer
http://mibai.tec.u-ryukyu.ac.jp/~oshiro/Doc/tcltk_primer/ ← 応答なし
Tcl 8.4.1 Manual Command Reference
http://www.freesoftnet.co.jp/tclkits/doc/TclCmdRef/tcl_contents_jp.htm
CategoryTclTk - mynote
http://reddog.s35.xrea.com/wiki/CategoryTclTk.html

【前スレ】
●●●●TCL/TKなら俺に聞け 2●●●●
http://toro.2ch.net/test/read.cgi/tech/1177998764/
●●●●TCL/TKなら俺に聞け●●●●
http://pc11.2ch.net/test/read.cgi/tech/1033628416/
0960デフォルトの名無しさん2013/07/17(水) NY:AN:NY.AN
次スレですん

●●●●TCL/TKなら俺に聞け 3●●●●
http://toro.2ch.net/test/read.cgi/tech/1374052935/
0961デフォルトの名無しさん2013/07/18(木) NY:AN:NY.AN
保守あげ
0962デフォルトの名無しさん2013/07/24(水) NY:AN:NY.AN
うげ
0963デフォルトの名無しさん2013/07/24(水) NY:AN:NY.AN
うめとくか
0964デフォルトの名無しさん2013/07/24(水) NY:AN:NY.AN
0965デフォルトの名無しさん2013/07/24(水) NY:AN:NY.AN
0966デフォルトの名無しさん2013/07/24(水) NY:AN:NY.AN
0967デフォルトの名無しさん2013/07/24(水) NY:AN:NY.AN
0968デフォルトの名無しさん2013/07/24(水) NY:AN:NY.AN
0969 忍法帖【Lv=40,xxxPT】(0+0:5) 2013/07/25(木) NY:AN:NY.AN
マンコ
0970デフォルトの名無しさん2013/07/25(木) NY:AN:NY.AN
0971デフォルトの名無しさん2013/07/27(土) NY:AN:NY.AN
0972デフォルトの名無しさん2013/08/02(金) NY:AN:NY.AN
>>960
先に落ちてしまった?
0973デフォルトの名無しさん2013/08/02(金) NY:AN:NY.AN
2020年まで持たなかったなw
0974デフォルトの名無しさん2013/08/02(金) NY:AN:NY.AN
前スレは4年半も持ったので、このスレも2012年くらいまではいけるという予言

このスレは6年2か月も持ったので、次スレも2020年くらいまではいけるという予言

次スレは流産だったので、次々スレもいつ落ちるか判らないという予言

こうですね
0975デフォルトの名無しさん2013/08/02(金) NY:AN:NY.AN
>いつ落ちるか判らない

って予言ちゃうし
0976デフォルトの名無しさん2013/08/02(金) NY:AN:NY.AN
ume
0977デフォルトの名無しさん2013/08/02(金) NY:AN:NY.AN
天才チンパンジーのアイちゃんを召喚しなかったから落ちたんだな。
0978デフォルトの名無しさん2013/08/02(金) NY:AN:NY.AN
ume
0979デフォルトの名無しさん2013/08/02(金) NY:AN:NY.AN
埋め
0980デフォルトの名無しさん2013/08/04(日) NY:AN:NY.AN
次スレ消滅するの早過ぎだろ…
0981デフォルトの名無しさん2013/08/05(月) NY:AN:NY.AN
次スレです

●●●●TCL/TKなら俺に聞け 4●●●●
http://toro.2ch.net/test/read.cgi/tech/1375678740/
レス数が950を超えています。1000を超えると書き込みができなくなります。