●●●●TCL/TKなら俺に聞け 2●●●●
■ このスレッドは過去ログ倉庫に格納されています
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/
0219デフォルトの名無しさん
2008/03/08(土) 10:58:390220本田
2008/03/08(土) 11:22:01特別関係は深くないと思う。
ただTKの方は、色々な言語から使える。
0221本田
2008/03/08(土) 11:24:10"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:39DQN男の家族死ね DQN男の親死ね DQN男の友達死ね DQN男の親戚死ね
DQN男の家族死ね DQN男の親死ね DQN男の友達死ね DQN男の親戚死ね
DQN男の家族死ね DQN男の親死ね DQN男の友達死ね DQN男の親戚死ね
0223デフォルトの名無しさん
2008/03/08(土) 12:43:060224本田
2008/03/08(土) 13:03:45なぜ Tcl を使うべきではないのか
http://www.os-omicron.org/~takano/private/trans/tcl_j.html
0225本田
2008/03/08(土) 13:10:51Tcl7.x時代の話でTcl8.xにはもう当てはまらない議論。
0226デフォルトの名無しさん
2008/03/08(土) 13:35:140227本田
2008/03/14(金) 22:01:12http://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:13http://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>March 28, 2008
http://www.tcl.tk/software/tcltk/8.5.html
0230デフォルトの名無しさん
2008/04/03(木) 15:17:360231本田
2008/04/06(日) 12:46:05>tcltk8.5.2-014-20080405.exe
http://sourceforge.net/project/showfiles.php?group_id=204414&package_id=248905&release_id=589844
0232gth
2008/04/06(日) 14:25:37出口
0233七つの海の
2008/04/10(木) 23:24:00○ティコティケェィーィエ
0234デフォルトの名無しさん
2008/04/13(日) 03:08:28動かそうとしたらcannot execute binaryとなってダメなんですけど、
どうすればいいんですか?原因はなんなんですか?
中学生にも分かるように説明してくれませんか?
0235本田
2008/04/14(月) 06:00:48http://www.tcl.tk/
0236本田
2008/04/14(月) 06:02:18サポートセンターに電話すべし。
0237デフォルトの名無しさん
2008/04/16(水) 04:48:20libc6-i386というのをインストールしたら64ビットOSでも
動きました。でも、32ビットOSのときよりも動きが遅いです。
0238本田
2008/04/22(火) 08:24:49>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:53gets $ch line
regsub -all \" $line \\" buf
puts [lindex $buf 0]
0241239
2008/05/02(金) 20:56:37あ、自分のは -all 忘れてましたわ。
ありがとうございます。
ちなみに、\\"で動くのですが、それだとemacsの色付けが異常になるので\\\"にしました。
0242デフォルトの名無しさん
2008/05/05(月) 18:25:210243デフォルトの名無しさん
2008/05/06(火) 10:44:47ver.8.4.17以降2ヶ月毎に改版されている。随分頻繁に改版しているけど、どこが換わっているのやら。
0244デフォルトの名無しさん
2008/05/08(木) 16:18:48regularExpressionの速さはピカ一ですが
0245デフォルトの名無しさん
2008/05/08(木) 20:01:200246デフォルトの名無しさん
2008/05/09(金) 04:16:30この観点から見るとtclひどすぎ。
正規表現使う構文にしてもすっきりしてないし。
0247デフォルトの名無しさん
2008/05/09(金) 12:00:110248デフォルトの名無しさん
2008/05/09(金) 12:42:240249デフォルトの名無しさん
2008/05/14(水) 08:49:38Tcl ってよー出来てるって思えるから。
0250デフォルトの名無しさん
2008/05/14(水) 13:17:13他がちょっと弱いけど。
0251デフォルトの名無しさん
2008/05/14(水) 13:44:240252デフォルトの名無しさん
2008/05/15(木) 02:02:59Win版の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'"'だけでなく'{'とか'}'とかも気をつける必要がある気がするんだけど。
tcl faq list eval とかで検索してみたけど結局どうすれば。
0254デフォルトの名無しさん
2008/05/18(日) 17:33:48コメントをなんとか書けないものかなあ
0255本田
2008/05/22(木) 06:02:40http://lists.activestate.com/expect%40listserv.ActiveState.com/6A3BD65D48E1EC45AF1B466D4E2A470F02630419%40HQSX5711.Hospira.corp
0256デフォルトの名無しさん
2008/05/23(金) 08:27:470257デフォルトの名無しさん
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なんやこれ。こんなんできたのか。長年使ってるけどはじめて知ったわ
0259デフォルトの名無しさん
2008/05/24(土) 01:27:29出来た!
ありがとうございます
0260デフォルトの名無しさん
2008/05/25(日) 04:51:53~/.tclshに ls color=auto を入れたいんだけど
0261本田
2008/05/25(日) 06:00:16http://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パッチとか修正とか、かなり手を入れないと使えないのでしょうか。
0263デフォルトの名無しさん
2008/06/02(月) 21:39:25ここにその議論がある。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作成のガイドラインから外れた古い作りになっているんだろう。
実際何年も更新されてないようだし。
自前ビルドしてやるしか。
0264262
2008/06/03(火) 11:42:06http://jos.decoster.googlepages.com/bltfortk8.5.2
を基に試してみました。
demosやexamplesの一部 (多く?) が失敗するけど、なんとなく使えそうです。
BLT-3.0で対応するのかなぁ。
0265デフォルトの名無しさん
2008/06/14(土) 18:22:11これは試した?
0266262
2008/06/16(月) 16:43:53Fedora 9で試してまして、そうこうしてるうちに、>>263の方法で対応したパッケージがリリースされました。
https://bugzilla.redhat.com/show_bug.cgi?id=446862
で対処してくださったようです。
0267デフォルトの名無しさん
2008/06/20(金) 19:54:08また、できれば選択した文字列が表示されるテキストボックス部分を
複数行表示にしたいのですが、可能でしょうか?
0268デフォルトの名無しさん
2008/06/20(金) 21:03:00tile拡張のttk::comboboxのやつか?
ttk::combobox .cb -width 100 とかでいけんじゃね
>>複数行表示にしたいのですが、可能でしょうか?
不可能じゃね
0269デフォルトの名無しさん
2008/06/27(金) 03:20:15set a hoge
set b a
set c b
とやって、cからたどってhogeに辿り着くには
どうすればいいのでしょうか。
$$$c とか $[$[$c]] とかいろいろやってみたのですが
できません……。
0270デフォルトの名無しさん
2008/06/27(金) 22:53:22set b a
set c b
proc aho foo {
upvar $foo bar
return $var
}
puts [aho [aho $c]]
0271デフォルトの名無しさん
2008/06/27(金) 23:22:33puts [set [set $c]]
>>267
2行は無理。BWidgetsのコンボを改造すればできるかも
0272デフォルトの名無しさん
2008/06/28(土) 00:44:17へ〜、setって変数の参照にも使えるんだ。 勉強になりますた。
0273デフォルトの名無しさん
2008/06/28(土) 03:31:47> ただし連続する空白文字に対する動作が意図と異なるかもしれない。
この制約がどうにも辛いです。
連続した空白があってもそれをただ一つの区切りとみなしつつ、
安全にファイルなどから読み込んだ文字列を処理するには
どうしたらいいのだろうか。
0275デフォルトの名無しさん
2008/06/28(土) 06:01:58そんなの教わったregsub使えよ
while {[gets $ch line] >= 0} {
puts [lindex [split $line [regsub -all -- {\s+} $line { }]] 0]
}
0276デフォルトの名無しさん
2008/06/28(土) 12:50:19set line {He said "I am}
foreach word [string map {\" \\"} $line] {
puts $word
}
0277デフォルトの名無しさん
2008/06/28(土) 14:34:54'{' inside string
0278デフォルトの名無しさん
2008/06/28(土) 17:20:38必要がない時の条件がよく分からん。。。
あと、ファイルから読み込んだ行を一律regsubしてしまって
常に構わないのかどうかも。。。
0279デフォルトの名無しさん
2008/06/28(土) 21:56:13文字列をリストに自動変換してるところは気にしろ。文字列を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.6a1 June 25, 2008
>Tcl/Tk 8.4.19 Apr 18, 2008
http://www.tcl.tk/
0282263
2008/07/02(水) 07:53:23そもそもの話をしてもいいだろうか。
こんなコードは試しましたか?
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にライブラリが置かれてるよ。
0283239
2008/07/02(水) 09:03:58>>282
それじゃ根本的に違うんだよね〜
getsで一行ごとにテキストファイルから読んでるの文字列に「"」があるのがミソなんで
set lines {He said "I am}
を処理することになるんですよ。
0284デフォルトの名無しさん
2008/07/02(水) 19:51:00string is list $strが追加されてんぞ。
0285デフォルトの名無しさん
2008/07/03(木) 00:00:27そもそもデータ自体が1行ずつ処理されるように書かれていないのになぜ、1行ずつ
処理したがるのか
0286デフォルトの名無しさん
2008/07/03(木) 01:29:080287デフォルトの名無しさん
2008/07/03(木) 01:43:11flex/bisonでやるか PureTclでやるならfickle/taccle
0288デフォルトの名無しさん
2008/07/04(金) 11:09:03自分の描画ルーチンが重いのではなく、Tkがcanvasをリフレッシュするのが激重です。
描画したアイテムを選択して移動とかするつもりはなく、単に絵が表示されればいいのですが…
こんな場合は、image photoに直接力技で図形を書いていくしかないですかね。
0289デフォルトの名無しさん
2008/07/05(土) 12:36:31書いた絵をドラッグできるとかそういう系。
0290本田
2008/07/06(日) 13:21:30Zinc Is Not Canvas!
http://www.tkzinc.org/tkzinc/index.php
OpenGLが、速い環境が無いと、遅すぎてかなわん。
0291デフォルトの名無しさん
2008/07/07(月) 21:37:100292デフォルトの名無しさん
2008/07/08(火) 00:37:160293デフォルトの名無しさん
2008/07/09(水) 07:59:32>>292
1000を超える描画単位(図形やウィジェットなど)をリアルタイムで取り扱うことはスクリプト言語系のツールキットでは想定されてないと思う。
素直にネイティブコードで動く言語で実装したほうが早いんじゃない? 描画結果のキャッシュでもしつつ。
0294デフォルトの名無しさん
2008/07/09(水) 20:18:400295デフォルトの名無しさん
2008/07/09(水) 22:18:260296デフォルトの名無しさん
2008/07/09(水) 23:06:430297デフォルトの名無しさん
2008/07/09(水) 23:44:51非同期で走っている複数のスレッドから進行状況や終了などをメインのスレッドで
受け取るにはどういう手段があるんでしょう? tsv でスレッド内で状況をセットして
メインでpollするというぐらいしか思いつかないのですが。 メインの方で
vwaitしてスレッドのほうからthread::sendなんて出来ませんよね?
0298デフォルトの名無しさん
2008/07/10(木) 06:48:22Tcl_Eval()でTclスクリプトを実行したときにそのスクリプトにエラーが含まれていると、
エラーメッセージはResultの中に入ってる。
これをResultの代わりにエラー出力に出したいんだが、その方法がよくわからない。
やり方があるようなら教えてもらえないだろうか。
0299297
2008/07/10(木) 06:54:59Expectを多用してるので諦めます。
http://community.activestate.com/forum-topic/expect-tcl-threads
0300本田
2008/07/10(木) 07:54:03http://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.
0301298
2008/07/10(木) 10:32:22ご協力ありがとう。
読んでみたけどどうやらこれは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>>299
http://www.tcl.tk/doc/howto/thread_model.html
0303デフォルトの名無しさん
2008/07/10(木) 14:59:25TCL_ERRORだったらResultを出力すればいいだけじゃね?
0304デフォルトの名無しさん
2008/07/10(木) 22:13:52なんでそんなことそをする必要があるかもう少し詳しく書いた方がいいぞ。そうしないと、
>>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);
}
0305304
2008/07/10(木) 22:23:390306本田
2008/07/22(火) 20:12:44NEXTSTEP(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:22http://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:370309デフォルトの名無しさん
2008/07/24(木) 20:37:58set 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>$$$c とか $[$[$c]] とか…
puts [subst $[subst $[subst $c]]]
遅レスだが…
0311デフォルトの名無しさん
2008/07/27(日) 18:35:14$$var (間接指定)について
http://psg.com/%7Ejoem/tcl/faq.html#DoubleIndirect
に丁寧な説明がある。
古い我家頁だが、今でもアクセス可能と思う。
0312デフォルトの名無しさん
2008/07/29(火) 00:59:08いきなり消滅してて悲しい・・・
0313デフォルトの名無しさん
2008/08/02(土) 08:48:510314デフォルトの名無しさん
2008/08/05(火) 04:33:00暗号化したいがどうすればよいでしょうか?
0315デフォルトの名無しさん
2008/08/05(火) 21:26:28http://home.netyou.jp/22/tanida/MazeOfProgram.htm
隠ぺいのためになるかは不明.
0316デフォルトの名無しさん
2008/08/11(月) 10:37:56相手が何も返してこないと、一生待ちつづけてしまうのですが、
タイムアウトさせたりする方法は無いですか?
0317デフォルトの名無しさん
2008/08/12(火) 07:07:15Tcllibは調べた?
0318デフォルトの名無しさん
2008/08/12(火) 08:05:26fconfigure -blocking
fileeventで非同期に処理するのが良いと思う
0319デフォルトの名無しさん
2008/08/13(水) 20:58:56■ このスレッドは過去ログ倉庫に格納されています