1 名前:デフォルトの名無しさん mailto:sage [2007/05/01(火) 14:52:44 ] 【英語サイト】 プロジェクト本拠地 tcl.sourceforge.net/ 最新版ソースコード ftp://ftp.tcl.tk/pub/tcl/nightly-cvs/ The Tcler's Wiki wiki.tcl.tk/ The comp.lang.tcl Newsgroup groups.google.com/group/comp.lang.tcl/ ActiveTcl www.activestate.com/products/activetcl/ 【日本語サイト】 もっとTcl/Tk www.interq.or.jp/japan/s-imai/tcltk/ Tcl/Tk Scripting Laboratory www.geocities.jp/urano343/tcltk.html Tcl/Tk Primer mibai.tec.u-ryukyu.ac.jp/~oshiro/Doc/tcltk_primer/ Tcl 8.4.1 Manual Command Reference www.freesoftnet.co.jp/tclkits/doc/TclCmdRef/tcl_contents_jp.htm CategoryTclTk - mynote reddog.s35.xrea.com/wiki/CategoryTclTk.html 【前スレ】 ●●●●TCL/TKなら俺に聞け●●●● pc11.2ch.net/test/read.cgi/tech/1033628416/
503 名前:デフォルトの名無しさん mailto:sage [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がものすごい勢いでメモリを 消費します(´・ω・`)
504 名前:デフォルトの名無しさん mailto:sage [2009/08/06(木) 21:38:42 ] >>503 vistaの8.5.6と8.6b1で試したけど、火編の常みたいなのが出てきた。
505 名前:デフォルトの名無しさん mailto:sage [2009/08/06(木) 22:13:24 ] >>504 ありがとうございます。 Vistaの8.5.6と8.6b1では動くのですね。 XP機しかないのですが、とりあえず8.6b1で試してみます。
506 名前:デフォルトの名無しさん mailto:sage [2009/08/07(金) 11:42:03 ] Windows VistaでClearTypeのメイリオを使っています。 その環境でTk 8.6のmenuを試してみたところ、メニュー・バーのフォントはClearTypeの効いた ものになるのですが、メニュー・アイテムについてはそうなりません。 まぁ、メニュー・アイテムにClearTypeのフォントを設定すれば一応は解決できそうな感じはする のですが、システムが使っているフォントを取得するようなコマンドはありますでしょうか?
507 名前:デフォルトの名無しさん mailto:sage [2009/08/10(月) 18:13:43 ] >>506 メイリオを使っていたらcanvasをpostscriptに変換できないので、 if {[font configure TkDefaultFont -family] == "メイリオ"} とかしてデフォで使用されるフォントの判別をしてメイリオだったらarialにするとかやってます(windowsとLinux両方で動かすためにこんなことしてます)。 ただ、メニューバーがメイリオになっているのにメニューアイテムのフォントだけ違うのという現象にこれで対処できるかどうかは不明ですが。
508 名前:デフォルトの名無しさん mailto:sage [2009/09/05(土) 20:16:32 ] 名前空間がどうしてもよくわからない 俺様かんたんに猿でも分かるように教えてください
509 名前:デフォルトの名無しさん mailto:sage [2009/09/05(土) 20:53:49 ] >>508 あらら、名前空間なんて導入されたんだ。 C++では前からあったけど。
510 名前:デフォルトの名無しさん mailto:sage [2009/09/05(土) 22:53:17 ] モジュール空間のことを言ってるんじゃないのかね。 確かに独特だわな。
511 名前:デフォルトの名無しさん mailto:sage [2009/09/06(日) 21:07:57 ] namespace だから名前空間じゃないの?
512 名前:デフォルトの名無しさん mailto:sage [2009/09/06(日) 22:13:13 ] >>511 モジュール書くときくらいしかほとんど用事がないんだがな。
513 名前:デフォルトの名無しさん mailto:sage [2009/09/10(木) 20:59:54 ] 初心者です。便乗質問(?)なのですが、自分で作ったライブラリは皆さん パッケージ(モジュール?)にしてるのでしょうか? 自分はその方法が良く分からないので、とりあえずsourceコマンドで読むという 方法で凌いでます。 ところで、amazon.comによると、Tcl言語の設計者が書いた本の改訂版が出る ようですね。Tcl/tk 8.5に対応した内容に書き改めたとのこと。 Tclが日本でも再度注目されたりしないでしょうか。
514 名前:デフォルトの名無しさん mailto:sage [2009/09/12(土) 14:17:45 ] >>513 パッケージも結局内部ではloadやらsourceやらで読み込んでたと思います。 利点は、パスを書かずにパッケージ名だけで呼び出せるから、 位置関係を気にしなくてよくなることぐらいでしょうか。 書き方は >>1 の日本語サイトの1つめと2つめにそれぞれ解説があります。
515 名前:デフォルトの名無しさん mailto:sage [2009/09/12(土) 21:44:21 ] >>514 ありがとうございます。参考になりました。 ただ、開発途上のモジュールについても、皆さんパッケージ化されているのでしょうか? それなりの手順を踏まないとパッケージ化はできないようなので、モジュールの開発途上では、 やはり単にsource とかで読み込むのが普通なのでしょうかね?
516 名前:本田 [2009/09/13(日) 00:13:43 ] >Tcl言語の設計者が書いた本の改訂版が出るようですね。 90円台/ドルの円高なので今が廉く買うチャンスかも。
517 名前:本田 [2009/09/13(日) 00:42:31 ] package - パッケージのロードとバージョン制御機能。 www.freesoftnet.co.jp/tclkits/doc/TclCmdRef/TclCmd/package_jp.htm
518 名前:本田 [2009/09/13(日) 02:48:50 ] >>515 ウェルチさんの本によると、 packageは複数のアプリケーションから利用する時に使うそうです。
519 名前:デフォルトの名無しさん mailto:sage [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するだけ。 大して難しいしくみでもない。
520 名前:デフォルトの名無しさん mailto:sage [2009/09/13(日) 21:36:11 ] >>518 >>519 packageの件、ありがとうございました。開発が一段落するまではsourceでやってみます。
521 名前:デフォルトの名無しさん mailto:sage [2009/09/13(日) 21:40:11 ] うむ。そうするがよい
522 名前:デフォルトの名無しさん mailto:sage [2009/09/16(水) 13:33:42 ] >>519 (Tclのnamespaceが) >全然独特じゃないと思うけど・・・。 普通、よくあるnamespaceの使い方は宣言的なものが多いんだけど、 Tclのnamespaceはただのコマンドなので、実行文的な書き方になる。 namespace eval { } の中でnamespace export ... とか呼び出すのとか、かなり変に感じる。
523 名前:デフォルトの名無しさん mailto:sage [2009/09/16(水) 14:23:14 ] 変に感じるのはそれだけじゃないだろう?(笑) 深く考えないのが吉。
524 名前:デフォルトの名無しさん mailto:sage [2009/09/16(水) 20:25:51 ] >>521 審議中
525 名前:デフォルトの名無しさん mailto:sage [2009/09/16(水) 20:38:09 ] >>522 それを言い出すとTclは制御文もコマンドだし・・・
526 名前:デフォルトの名無しさん [2009/09/22(火) 16:44:34 ] すいません。Perl質問スレでも書きましたが、 こちらのほうが適切そうだったので、こちらで質問させてもらいます。 Perl TkのTextウィジェットを使って 文字列の入出力をする方法はどのようにするのでしょうか? Entryウィジェットを使ったサンプルはWeb上から見つけたのですが、 Textウィジェットを用いたものはないもので。。。
527 名前:デフォルトの名無しさん mailto:sage [2009/09/22(火) 18:09:24 ] >>526 Perl/Tkは触ったこと無いけど、 確かオライリーからまさにその本が出版されていたと思った。 それを購入するのが最終的には早いと思う。 日本でPerl/Tkは、ひどくマイナーだから。 あるいは、Ruby/Tkなら日本語の書籍が何冊か出版されているし、 Web/MLなどで情報の収集が容易だから、そちらに乗り換えるとか。 もちろんTcl/Tkでもオケー ゴメン、これくらいしかレスできねえヨ # いいレス返してあげておくれ > 他の住人さん達
528 名前:デフォルトの名無しさん mailto:sage [2009/09/23(水) 07:29:32 ] Perl/Tkでググれ、としか
529 名前:デフォルトの名無しさん mailto:sage [2009/09/23(水) 08:48:16 ] だな。一発でこんなん出たけど www.geocities.jp/m_hiroi/perl_tk/perltk07.html
530 名前:本田 [2009/09/23(水) 18:19:46 ] Mastering Perl/Tk oreilly.com/catalog/9781565927162 examples.oreilly.com/9781565927162/ examples.oreilly.com/9781565927162/mastperltk_examples.tar.gz mastperltk_examples.tar.gz の中にサンプルプログラム有り。
531 名前:本田 [2009/09/23(水) 18:23:42 ] Past, present and future of Tcl virtual filesystems Steve Huntley www.tcl.tk/community/tcl2007/papers/Stephen_Huntley/tcl2006_slides_huntley.pdf 。
532 名前:デフォルトの名無しさん mailto:sage [2009/09/23(水) 19:10:25 ] >>530 一瞬、「サンプルプログラム祭り」に見えたw Tcl/TKはいつまで経ってもマイナー言語のままだから、 簡単にこんなことができますよーって紹介はもっとあってもいいと思うけどね。
533 名前:本田 mailto:sage [2009/09/23(水) 19:12:57 ] P2P A Metafile System over P2P File-sharing Network spa.jssst.or.jp/WIT/2005/papers/05013.pdf 。
534 名前:本田 mailto:sage [2009/09/23(水) 21:51:59 ] >>531 The FILTR: (File Inventory for Loading, Transfer and Recovery) 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
535 名前:デフォルトの名無しさん mailto:sage [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文字に変更できれば解決かなと思ったのですが… homepage3.nifty.com/kaku-chan/tcl_tk/chapter_230.html によると、「ピクセル」「mm」「inch」「cm」の4種類でしかtab stopsは設定できないと書いてあるし、 無理矢理ピクセルで指定してみても、TAB文字がそのまま「4文字相当の幅を常時取って」行の中に入ってしまうしで…
536 名前:デフォルトの名無しさん mailto:sage [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; } }
537 名前:デフォルトの名無しさん mailto:sage [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; } }
538 名前:デフォルトの名無しさん mailto:sage [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でも実現できるだろう…という前提で作業してみます
539 名前:デフォルトの名無しさん mailto:sage [2009/10/01(木) 10:19:09 ] うーん… Perl/Tkには-tabstyleが実装されてないみたいですね… 指定すると「そんな指定は知らねえよ」とエラーが出る… cpansearch.perl.org/src/SREZIC/Tk-804.028_501/t/text.t ↑「XXX not yet implemented?」とか書いてあるし… www.tkdocs.com/tutorial/text.html ↑ここには、指定できる文字列としてtabstyleが書いてあるんだけどなあ… 勉強も兼ねてTcl/Tkで書き直してみるかな… それとも Python + Tkinter も試してみるか…
540 名前:デフォルトの名無しさん mailto:sage [2009/10/01(木) 19:17:49 ] Tk使うならTclが一番安心だよね。やっぱり
541 名前:デフォルトの名無しさん mailto:sage [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のほうが綺麗だし
542 名前:デフォルトの名無しさん mailto:sage [2009/10/01(木) 21:52:01 ] tkのデバッグってどうしてます? 10時間くらいで落ちたり、処理速度が低下します。
543 名前:デフォルトの名無しさん mailto:sage [2009/10/01(木) 22:29:37 ] >>542 ??? tk4.2の頃は、そういうことあったけど…… 8.3以上では直ってるはずだと聞いてるお? ちなみに、 落ちると言っても、「tkが動かなくなる」だけ。 原因と対処法は自分で見つけた。もちろん、報告した。 処理速度の低下は、Xサーバーに問題があったので、ちょっと弄った。
544 名前:デフォルトの名無しさん mailto:sage [2009/10/02(金) 23:38:25 ] 変数に入っている値が整数(として扱える)かどうか調べる方法はありますか。
545 名前:デフォルトの名無しさん [2009/10/02(金) 23:44:20 ] string is integer $x
546 名前:デフォルトの名無しさん mailto:sage [2009/10/03(土) 23:31:56 ] >>545 やりたいことができた!他にも色々調べられるのね。ありがとうです(>_<)
547 名前:デフォルトの名無しさん mailto:sage [2009/10/05(月) 18:16:08 ] >>545-546 まあその場合そのとおりなんだが、 Tcl/Tkの各コマンドのヘルプページはちょっと読みづらいよね。 PHPのヘルプ並みに使いやすく整備してくれるといいんだが……。
548 名前:デフォルトの名無しさん mailto:sage [2009/10/05(月) 19:52:40 ] >>547 tclshでstring is って打つとコマンドの文法が出る。 string is a b って適当に打つと、クラスの一覧が ズラズラ表示される。これで十分。
549 名前:デフォルトの名無しさん [2009/10/27(火) 11:40:30 ] TCLスクリプトを自前アプリに実装したいのですが、 なにかお勧めの書籍(web)を紹介頂けませんか?
550 名前:デフォルトの名無しさん [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"
551 名前:本田 [2009/10/30(金) 22:58:47 ] >>549 C言語からTclを呼び出すには www.geocities.co.jp/SiliconValley/4137/dir4/namo.html
552 名前:デフォルトの名無しさん mailto:sage [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という関数の中でコマンドの定義など
553 名前:デフォルトの名無しさん [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)}
554 名前:デフォルトの名無しさん [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" } やはり複数行のコマンドは実行できないのかな・・・
555 名前:デフォルトの名無しさん mailto:sage [2009/11/03(火) 23:15:44 ] { } の中の改行は文の終わりと認識されず、改行文字を含む文字列と認識されます。 forは引数を4つとるコマンドです。 for {set i 0} {$i < $N} {incr i} { puts $i } は、たまたま第4引数が改行を含む文字列であるというだけのことです。
556 名前:デフォルトの名無しさん [2009/11/04(水) 10:50:05 ] >>555 有り難うございます。 >>改行文字を含む文字列と認識されます。 for文などは普通は見易くする為に>>553 の様に改行を入れて記述すると思います。 この様な記述をした場合には、第4引数が複数行になる為、 Tcl_Eval()を利用して1行づつ実行する事はできないという理解で良いですか?
557 名前:デフォルトの名無しさん mailto:sage [2009/11/04(水) 10:53:58 ] >>556 というかC関数をTcl側に公開して、それをfor文で普通に呼び出せばいいんじゃね? そしたら何度も呼び出すこと考える必要ないでしょ。
558 名前:デフォルトの名無しさん [2009/11/04(水) 13:26:48 ] >>557 ありがとうございます。 >>C関数をTcl側に公開して これの方法が現時点では分かりませんが、これが出来ればいけそうな気がしてきました。 早速調べて試してみます。
559 名前:デフォルトの名無しさん mailto:sage [2009/11/04(水) 20:18:53 ] >>556 見やすくするためではありません。 for文が第四の引数を解釈するに当たり、改行までをひとつのコマンドと引数列とみなして実行するためです。 よって{}中の改行は飾りではないです。
560 名前:デフォルトの名無しさん mailto:sage [2009/11/04(水) 20:24:23 ] >>558 Tcl_CreateObjCommand 引数の解釈はTcl_GetIntFromObjなどを使う。 返値はTcl_SetObjResultで。 Tcl_CreateCommandなどのTclオブジェクトを扱わない形式では 数値やリストなど全部文字列に変換されて渡されるので、速度・精度の面で使わないこと。 (Tclオブジェクトだとリスト型やdouble型を保持したままやりとりする)
561 名前:デフォルトの名無しさん mailto:sage [2009/11/04(水) 20:30:04 ] んで、ぶっちゃけ言うと Tcl_Eval(interp, "for {set i 0} {$i < 5} {incr i} {puts $i\nputs hogehoge}");
562 名前:デフォルトの名無しさん [2009/11/04(水) 23:17:21 ] >>559-561 色々有り難うございます。 とりあえず、Tcl_CreateCommand()を使用してTCLスクリプトからCの関数を実行し、 パラメータを渡す事まで確認できました。 TCLで実現したい事は、「とりあえず」は出来たと思います。 残りは戻値や速度面を考慮してTcl_CreateObjCommand()などを調べて見たいと思います。
563 名前:本田 [2009/11/21(土) 06:24:51 ] www.tcl.tk/ >Tcl/Tk 8.5.8 Nov 16, 2009
564 名前:デフォルトの名無しさん [2009/12/11(金) 19:14:03 ] Jaclてなんて発音すれば良いの?
565 名前:デフォルトの名無しさん [2009/12/11(金) 21:05:06 ] ジャッカル
566 名前:デフォルトの名無しさん [2009/12/16(水) 23:21:52 ] tclでhtmlを取り扱うウイジェット実装はいくつかあるみたいですが お勧めとか、デファクトスタンダードなものとか あるのでしょうか?
567 名前:本田 [2009/12/18(金) 00:55:20 ] >>566 >デファクトスタンダード incrtclだと思う。 incrtcl.sourceforge.net/iwidgets/iwidgets/scrolledhtml.html
568 名前:デフォルトの名無しさん mailto:sage [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環境です。
569 名前:デフォルトの名無しさん [2009/12/28(月) 17:45:58 ] 折角国際化されてるんだし だれかTcl/Tkでmigemo使えるようにしろよ〜
570 名前:デフォルトの名無しさん mailto:sage [2009/12/28(月) 20:24:16 ] IMの制御がきちんとできるようにしてくれぇ。
571 名前:デフォルトの名無しさん [2009/12/29(火) 09:37:18 ] 結構この頃気に入っているのですが ckて使っている人いますか? なんか語りませんか
572 名前:デフォルトの名無しさん mailto:sage [2010/01/02(土) 10:50:57 ] >> 571 大昔、CTk wiki.tcl.tk/5016 は使ったことがある。 ckも2001年頃から開発が止まっているみたいけど、8.5.8環境でもちゃんと動く?
573 名前:デフォルトの名無しさん mailto:sage [2010/01/02(土) 20:43:14 ] Ckというのはwww.ch-werner.de/ck/ なのですが ページによると8.0-8.4が恐らくターゲットかと。うちでは8.0で動いています。 キャンバスなど対応しないウイジェットもあるので制限は多いですが、 Guiのプログラムとコンソールのプログラムが一つのプログラムでかけるのが 凄いです。(tcletも使えば一石三鳥?) CTKはどんな感じでしたか? Ckの場合難点はcursesを使う部分の日本語が上手く表示できないかんじです。 putsなど標準入出力ではOkですが。
574 名前:本田 [2010/01/05(火) 22:51:35 ] >Ckの場合難点はCkの場合難点はcursesを使う部分の日本語が上手く表示できないかんじです。 cursesってUNICODEに対応してないのかな?
575 名前:デフォルトの名無しさん mailto:sage [2010/01/06(水) 23:26:35 ] ncursesw とかじゃん?
576 名前:デフォルトの名無しさん mailto:sage [2010/01/06(水) 23:35:47 ] >>573 CTk使っていたのは日本語パッチ版が使いたくて8.0で粘っていたころなので、さすがに覚えていない。 当時はMulti-Byte文字を使えるcursesもほとんど無くて、日本語は最初から諦めていたと思う。 Multi-Byte文字はCkとcursesの2段階で対処が必要だと思うし、8.0だとそもそも多国語対応していない ような気がするので、tcl内部とcursesと実際の表示(xtermとか)のencodingを合わせないとだめだよね。 がんばってね。
577 名前:デフォルトの名無しさん mailto:sage [2010/01/18(月) 15:28:42 ] アプリケーション拡張言語としてのTCLってどうして普及しなかったんですか?
578 名前:デフォルトの名無しさん mailto:sage [2010/01/18(月) 15:34:43 ] >>577 いや〜、あんなもん、tkが付いてなかったら使いたくねえ!
579 名前:デフォルトの名無しさん mailto:sage [2010/01/18(月) 15:39:50 ] >>577 tk以上の発明品が生まれなかったからじゃないかな。 結局Tcl/Tkが作られた当時はアプリのスクリプト言語をサポートするという発想が新しすぎたんだと思うよ。 後スクリプト言語としては文字列と整数のデータ型の区別がされてなくて微妙に使いにくいとか。 元々HTMLの埋込み言語として開発されたPHPが、発展してフレームワークが作られるようになると HTMLの生成がテンプレートエンジン越しになって本来の埋込スクリプトが全く使われなくなったりね。 開発当初の目的と実用される用途が一致しないのはよくあること。
580 名前:デフォルトの名無しさん mailto:sage [2010/01/18(月) 22:27:44 ] ストールマンがTclの普及自体に横槍出したのもでかいんじゃないかな
581 名前:デフォルトの名無しさん mailto:sage [2010/01/19(火) 00:46:35 ] >>577 GNUに嫌われたから
582 名前:デフォルトの名無しさん mailto:sage [2010/01/19(火) 12:33:16 ] >>580 guileも全然普及してないな。
583 名前:デフォルトの名無しさん [2010/01/19(火) 21:15:09 ] GIMP は SIOD から TinyScheme に変わったんだよね。 Guile 哀れw
584 名前:デフォルトの名無しさん mailto:sage [2010/01/26(火) 17:16:13 ] S-Langというのもあったけど。
585 名前:デフォルトの名無しさん mailto:sage [2010/02/03(水) 23:03:23 ] TclはPythonに喰われちゃったんだと思う
586 名前:デフォルトの名無しさん mailto:sage [2010/02/14(日) 10:09:59 ] 今ならさらにLuaもあるしな。
587 名前:デフォルトの名無しさん mailto:sage [2010/02/14(日) 20:52:36 ] >>585 蛙と蛇だしな・・・
588 名前:デフォルトの名無しさん mailto:sage [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
589 名前:デフォルトの名無しさん mailto:sage [2010/02/15(月) 01:13:58 ] osxはよくわからんけど、wm overrideredirect . 1してみたらどうなる?
590 名前:デフォルトの名無しさん mailto:sage [2010/02/15(月) 08:16:09 ] やってみましたが、 ウィンドウのサイズ、移動が出来なくなりますが、 タイトルバーは消えませんでした。
591 名前:デフォルトの名無しさん mailto:sage [2010/02/15(月) 21:37:46 ] >>588 バージョンくらいかけよアホ。これでも読んでろ wiki.tcl.tk/13734
592 名前:デフォルトの名無しさん mailto:sage [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残している人。ください。
593 名前:デフォルトの名無しさん mailto:sage [2010/03/13(土) 16:38:51 ] ほしゆ
594 名前:デフォルトの名無しさん mailto:sage [2010/03/17(水) 02:28:47 ] C++/Tcl 凄いな。
595 名前:デフォルトの名無しさん mailto:sage [2010/03/17(水) 23:05:28 ] >>594 ksk
596 名前:本田 [2010/03/17(水) 23:34:20 ] >>592 ActiveTcl8.5.8.0.291595-win32-ix86-threaded.exe
597 名前:592 mailto:sage [2010/03/18(木) 21:26:34 ] >>596 ActiveState ポリシー変えたらしくて、Community Edition(Free)は最新バージョンしか 入手できなくなってます。 しばらくはtclkitでしのぎます。
598 名前:本田 [2010/03/18(木) 22:48:35 ] >>597 ActiveTcl8.5.8.0.291595-win32-ix86-threaded.exe でgoogleれ。
599 名前:デフォルトの名無しさん mailto:sage [2010/03/18(木) 22:54:45 ] 本田氏の本気を見た(いりこだし的な意味で)
600 名前:592 mailto:sage [2010/03/18(木) 23:39:47 ] >>598 それらしいURLを3つくらい見てダメだったので諦めていましたが、15番目で見つかりました。 どうもありがとう。
601 名前:デフォルトの名無しさん [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(); -----
602 名前:デフォルトの名無しさん mailto:sage [2010/04/27(火) 23:35:32 ] perl tkは知らんけどtcl/tkで定期的に処理を実行する時はafterコマンドを使う リファレンスマニュアルとか調べてみ
603 名前:デフォルトの名無しさん [2010/04/28(水) 06:29:41 ] どううまくいかないのかを書きなさい。
604 名前:デフォルトの名無しさん [2010/04/29(木) 06:13:30 ] >>602 ありがとうございます。ちょっと調べてみます。 >>603 上記ソースの場合、立ち上がりすらしない。 sleepをコメントアウトしたら1行づつ出力されずに、 溜め込んだ情報を一気に吐き出すといった感じです。
605 名前:デフォルトの名無しさん mailto:sage [2010/04/29(木) 15:45:57 ] >>601 描画はevent loop(MainLoop)で実行されると思うので、MainLoopの前でsleepしたら 描画出来ないと思う。 ループを切り出して、適当なeventを契機に呼ばれるようにすれば良いと思う。 どうしても今のループにしたければ、updateすると動くかもしれない。
606 名前:デフォルトの名無しさん [2010/04/29(木) 21:57:57 ] >>605 updateでできました! ありがとうございました_( . _ . )_
607 名前:デフォルトの名無しさん [2010/04/29(木) 23:30:28 ] テクルトックで読み方あってる_
608 名前:デフォルトの名無しさん [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(); -----
609 名前:デフォルトの名無しさん mailto:sage [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();
610 名前:本田 [2010/05/02(日) 23:45:07 ] >>608 Tk Documentation Table of Contents www-users.cs.umn.edu/~amundson/perl/perltk/toc.html fileevent Execute a callback when a file becomes readable or writable www-users.cs.umn.edu/~amundson/perl/perltk/fileevent.htm after Execute a command after a time delay www-users.cs.umn.edu/~amundson/perl/perltk/after.htm tkwait Wait for variable to change or window to be destroyed www-users.cs.umn.edu/~amundson/perl/perltk/tkwait.htm IO high level interface to Tk's 'fileevent' mechanism www-users.cs.umn.edu/~amundson/perl/perltk/Tk%3A%3AIO.htm TK/AFTER support class for Tk::Widget::after www-users.cs.umn.edu/~amundson/perl/perltk/Tk%3A%3AAfter.htm
611 名前:デフォルトの名無しさん mailto:sage [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に脳内変換して
612 名前:592 mailto:sage [2010/05/21(金) 21:14:28 ] ActiveTcl 8.5.8.2が出ていたので試してみましたが、8.5.8.1同様IMEが動くとwishが 落ちます。 一応、連絡しておきます。
613 名前:デフォルトの名無しさん [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 "www.yahoo.co.jp/index.html " ここまではできたんですがこのあとyahooのホームページのソースの取得方法 がわかりません、わかる方いらっしゃったらぜひお願いします。
614 名前:デフォルトの名無しさん [2010/06/02(水) 22:19:30 ] ソースは普通にHTTPでとってくればいいんじゃないの?
615 名前:デフォルトの名無しさん mailto:sage [2010/06/03(木) 09:36:16 ] >>614 返答ありがとうございます、初心者なのでHTTPでの取り方すらわからないのです。 もともとTcl/Tkでどうやってホームページの表示をさせるかがわからなくて いろいろ調べた挙句tcomにいきついた次第です。できればtcomでできたらいいなー というのが自分の希望なんですが、調べてみたんですがいまいちわからなくて ここに行き着いたということです。
616 名前:デフォルトの名無しさん mailto:sage [2010/06/03(木) 09:39:40 ] >>615 ほい。ぐぐれ。 tmml.sourceforge.net/doc/tcl/http.html
617 名前:デフォルトの名無しさん mailto:sage [2010/06/03(木) 13:05:59 ] >>616 ありがとうございます、やってみます
618 名前:本田 [2010/06/05(土) 05:37:34 ] >>615 URI utilities tcllib.sourceforge.net/doc/uri.html
619 名前:本田 [2010/06/05(土) 06:11:07 ] >>618 package require uri set u 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
620 名前:本田 [2010/06/05(土) 14:29:34 ] >>613 optcl wiki.tcl.tk/1822 www.patthoyts.tk/programming/optcl3010.zip www.patthoyts.tk/programming/optcl-src.zip WippleWobble - A Mini Web Browser (for Windows) wiki.tcl.tk/4105
621 名前:デフォルトの名無しさん [2010/06/30(水) 07:31:52 ] 初心者でpython2.6(tkinter)とtcl/tk 8.5を弄ってます。 widgetに入れず、Canvasのcreate_textに設定するwidthの様にheightを擬似的にでもどうにかして作りたいのですが何か良い方法は無いでしょうか。 ご教示お願い致します。
622 名前:デフォルトの名無しさん mailto:sage [2010/07/02(金) 01:54:21 ] >>621 heightを作るっていう意味がわからない
623 名前:デフォルトの名無しさん [2010/07/02(金) 08:08:21 ] pixel指定でその範囲に入らない状態の時は語尾に"..."を追加する物を作りたいです。 適当なtextの量自体を指定するしかないのでしょうか。 文字によってpixel幅が違うので結局label等(幅を取得したら捨てる。) に入れ込むtextを一文字ずつlabelに入れて、そのlabel幅を取得し、 その幅から指定したpixel分のtextをcreate_textに入れ込めば出来そうですが・・ 余りに遠回りで・・。 もう少し簡潔に文字数を制限したいのですが tkがどう動作しているのか未だ良く分かっていません。
624 名前:本田 [2010/07/02(金) 22:52:59 ] >>623 プロポーショナルフォントを使わずに、 等幅のフォントを使えば、 計算が簡単になりそうです。
625 名前:デフォルトの名無しさん [2010/07/03(土) 03:57:59 ] 621,623です。 >>624 有り難うございます。 プロポーショナルフォントというんですね・・初めて知りました。 因みに自分足らない頭で623の内容をpythonのIDLEで書いてみたら 異様に重い上に、良く分からないエラーが出ました・・とほほ 後程、等幅フォントで再度書いてみます。 fontの高さには全角、半角も無いので どこで改行されてるかさえ、得られれば 簡潔になるのでは、と 今の所textに直接pixel指定で改行を追加するモジュールを探しています。(どれもカラムっぽいですが・・) font metricsも面白そうなのでついでに調べてます。
626 名前:デフォルトの名無しさん mailto:sage [2010/07/03(土) 10:56:10 ] >>623 font measureで文字列のpixel幅を得られる のは?
627 名前:デフォルトの名無しさん [2010/07/03(土) 11:49:40 ] 621,623,625です。 >>626 有り難うございます。 font measureで出来そうです。
628 名前:本田 [2010/07/03(土) 17:32:43 ] >>627 老婆心ながら、 一つのスクリーン上に一つのカンバスを使って複雑なウイジェットを作る以外に、 まず一つのスクリーンを複数のフレームに分割して、 一つ一つのフレーム上にメニュー、テキストやカンバスを配置する方法もあります。
629 名前:デフォルトの名無しさん [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に戻ろうかと思っています。
630 名前:デフォルトの名無しさん mailto:sage [2010/07/19(月) 14:33:01 ] xspin.tclというソフトを使用し始めたのですが、.pmlの拡張子をフリーのパッドソフトに関連付けたら、 xspin.tclを起動しようとしたら「このファイルの種類を開くプログラムを選択してください」とでるようになってしまいました。 どのプログラムを選択すればいいか分からないし、戻し方も分からないので助けてください。
631 名前:630 mailto:sage [2010/07/19(月) 14:48:22 ] 自己解決しました
632 名前:デフォルトの名無しさん mailto:age [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] }
633 名前:デフォルトの名無しさん mailto:sage [2010/08/12(木) 11:58:36 ] >>632 サーバ(Win/Linuxじゃないよ)用に自分でコンパイルした8.5.8でも同じ結果になった。 ソースを簡単に眺めたところ、内部32bit型→64bit型に拡張する処理は見つかったけど なぜ情報落ちするのかは判らなかった。 バグ報告するのが良いと思う。 ひょっとして、64bit環境(OS)だと問題無いのかもしれない。(うちは全部32bit環境)
634 名前:デフォルトの名無しさん mailto:sage [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)). www.tcl.tk/man/tcl8.5/TclCmd/format.htm#M15 マニュアル嫁。
635 名前:633 mailto:sage [2010/08/14(土) 00:43:23 ] >>634 う。そっちか。 まったく思いもしませんでした。笑ってやってください。
636 名前:本田 [2010/10/02(土) 02:16:11 ] [Activetcl] ActiveTcl 8.5.9.0 released code.activestate.com/lists/activetcl/4478/
637 名前:デフォルトの名無しさん mailto:sage [2010/10/11(月) 19:15:11 ] IMEとの衝突は修正された?
638 名前:592 mailto:sage [2010/10/12(火) 07:22:49 ] >> 637 直ったようです。 text widgetで漢字を入力しても落ちなくなりました。
639 名前:デフォルトの名無しさん mailto:sage [2010/10/12(火) 19:36:18 ] >>638 それは、ActiveTclのどのバージョンから?
640 名前:592 mailto:sage [2010/10/14(木) 00:15:17 ] 直ったのは ActiveTcl 8.5.9.0
641 名前:デフォルトの名無しさん mailto:sage [2010/10/15(金) 13:32:10 ] Tkのテキストボックスの文字列が変化したとき、それを知らせるコールバックはどれですか?
642 名前:デフォルトの名無しさん mailto:sage [2010/10/16(土) 14:52:07 ] >>641 package require Tk pack [text .text] bind .text <Key> {puts "Pressed %K"} www.tcl.tk/man/tcl/TkCmd/bind.htm マニュアル嫁
643 名前:Perl忍者 ◆M5ZWRnXOj6 [2010/10/21(木) 23:40:37 ] Perl/Tkやってるやつでてこいこら
644 名前:Perl忍者 ◆M5ZWRnXOj6 [2010/10/21(木) 23:50:25 ] おめえハッカーだろ 本田
645 名前:Perl忍者 ◆M5ZWRnXOj6 [2010/10/30(土) 18:13:15 ] Perl/TKでEntryフォームに文字を入力しようとすると 入力できません なんか前にそれで設定をして うてるようにしたんですが scimなんとか 入力はできるんですが 日本語入力ができません どうすればいいですか教えてください
646 名前:デフォルトの名無しさん mailto:sage [2010/10/30(土) 18:17:43 ] >scimなんとか 入力はできるんですが 日本語入力ができません この文章どうやって打ってるんだよw
647 名前:Perl忍者 ◆M5ZWRnXOj6 [2010/10/30(土) 18:35:08 ] だからscimは、はいってんの Perl/Tkでの入力のときできない XMODIFIERS="@im=none"とやってもできない なんで 教えて
648 名前:Perl忍者 ◆M5ZWRnXOj6 [2010/10/30(土) 18:36:20 ] XMODIFIERS="@im=none" とやったら入力できるようになるけど 日本語入力ができない 重要:「日本語入力ができない」 教えて
649 名前:デフォルトの名無しさん mailto:sage [2010/10/30(土) 18:55:11 ] ウヒョー
650 名前:デフォルトの名無しさん mailto:sage [2010/11/06(土) 21:07:46 ] Perl/Tkなんてまだ使ってるやついんだな・・・。アホかと・・・
651 名前:デフォルトの名無しさん mailto:sage [2010/11/08(月) 00:35:04 ] canvasにpolygonやlineで書いた絵を画像ファイルでセーブする方法はありますか?
652 名前:デフォルトの名無しさん [2010/11/08(月) 00:45:32 ] 標準Tkでも昔からPostscriptでセーブできる。拡張もいろいろ
653 名前:デフォルトの名無しさん mailto:sage [2010/11/08(月) 10:11:47 ] Postscript以外は、できないでしょうか?
654 名前:本田 [2010/11/08(月) 21:51:18 ] >>653 > Postscript以外は、できないでしょうか? GhostscriptでPostscriptをPDFやPNGに変換できるよ。
655 名前:デフォルトの名無しさん mailto:sage [2010/11/09(火) 00:35:08 ] 1 imgで画面上に表示してる部分はビットマップに変換できる。 2 tkpathっていうcanvasと互換性のある拡張がある。
656 名前:Perl忍者 ◆V8M/4amdko [2010/11/10(水) 18:58:25 ] こたえられねえのかよつかええねえなかす
657 名前:デフォルトの名無しさん mailto:sage [2010/11/11(木) 21:34:13 ] 653の質問をしたものですが、例えばコマンドラインで アクティブウインドウのスクリーンショットを取る外部アプリを起動すればできますか? できればbmp,jpg,gif等に変換したいので。
658 名前:デフォルトの名無しさん mailto:sage [2010/11/12(金) 09:48:34 ] Print Screen キーを押してからペイントで・・・ってのがお手軽かと。 *.psからフィルタで変換の方がスマートだけど。
659 名前:デフォルトの名無しさん mailto:sage [2010/11/12(金) 13:28:10 ] 実用的には、そうですがPostScriptは、使う人もPostScriptの環境が必要なので。 PSからの変換もいろんなソフトを使いましたが、思った様に上手くいきません。 逆に変換フィルタで良いのがあれば、教えてください。
660 名前:デフォルトの名無しさん mailto:sage [2010/11/12(金) 13:34:56 ] >>659 canvasの内容をSVG化して書き出す方法が紹介されてる。 wiki.tcl.tk/4534 他にはImageMagickを操作して直接画像を作るかだなぁ。
661 名前:デフォルトの名無しさん mailto:sage [2010/11/12(金) 21:31:10 ] >>660 これは、凄い。 itemgetで情報をもってきて、imageで再描画してるみたいだ。 でも、このやり方だとXBM情報とかは再生できませんね。
662 名前:デフォルトの名無しさん mailto:sage [2010/11/14(日) 20:28:32 ] tkにはワークシートとかスプレッドシートのようなものはあるんですか?
663 名前:デフォルトの名無しさん [2010/11/14(日) 20:53:56 ] あるよ。
664 名前:本田 [2010/11/16(火) 06:10:49 ] Spreadsheets in Tcl-Tk wiki.tcl.tk/20386
665 名前:本田 [2010/11/18(木) 08:32:31 ] TCLによるXMLおよびWeb Servicesのプログラミング、第1回: 入門編 www.ibm.com/developerworks/jp/webservices/library/ws-xtcl/
666 名前:本田 [2010/11/25(木) 06:14:36 ] Instancier des objets COM avec Tcom 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]]
667 名前:デフォルトの名無しさん mailto:sage [2010/11/25(木) 21:53:26 ] >>663 >>664 お答えくださいってどうもありがとうございました。 たいへん参考になりました。
668 名前:デフォルトの名無しさん mailto:sage [2010/11/26(金) 21:06:15 ] コチョコチョ
669 名前:本田 [2010/11/28(日) 11:24:10 ] [Tcl-announce] ActiveTcl 8.6.0.0 Beta 4 released code.activestate.com/lists/tcl-announce/343/
670 名前:本田 [2010/11/28(日) 15:00:49 ] John Ousterhout Professor (Research) Department of Computer Science www.stanford.edu/~ouster/cgi-bin/home.php
671 名前:一応ティクラー [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 だと「遅い」ときがある。
672 名前:デフォルトの名無しさん mailto:sage [2010/12/05(日) 01:02:12 ] >>671 モニタはみ出たらどうやんの? このやりかただと他のウィンドウが重なっててもうまくいかないんだよな。
673 名前:本田 [2010/12/06(月) 23:51:47 ] PLplot 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 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.
674 名前:本田 [2010/12/06(月) 23:53:03 ] Cpptcl 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).
675 名前:デフォルトの名無しさん mailto:sage [2010/12/07(火) 21:17:06 ] >>671 ありがとうございます。
676 名前:デフォルトの名無しさん mailto:sage [2010/12/07(火) 21:18:20 ] ところで、Tcl8.5.9でファイルのバイナリセーブの際に fconfigureで -translation binaryとしてもファイルの最後に0x0aが出るんだけど。 これは、バグ?それとも回避方法がありますか?
677 名前:デフォルトの名無しさん mailto:sage [2010/12/12(日) 17:07:13 ] >>676 それ以外のバージョンでは出ないってこと?
678 名前:本田 [2010/12/12(日) 23:29:57 ] [TCLCORE] ActiveTcl 8.5.9.1 released code.activestate.com/lists/tcl-core/9815/
679 名前:デフォルトの名無しさん mailto:sage [2010/12/15(水) 21:18:44 ] 英語もロクに読めないへたれなのですが、 Tkの日本語リファレンスってどこかにないでしょうか? 8.3対応っぽいのはぐぐったら見つかりましたが、 今使っている8.4とは微妙に違っている気がします。
680 名前:デフォルトの名無しさん mailto:sage [2010/12/16(木) 11:49:49 ] >>676 puts -nonewline
681 名前:デフォルトの名無しさん [2010/12/16(木) 22:11:23 ] >679 www.ne.jp/asahi/kazuo/sasagawa/tcltk-man-jp-13.zip
682 名前:デフォルトの名無しさん mailto:sage [2010/12/18(土) 19:28:30 ] >>680 ありがとうございます。
683 名前:デフォルトの名無しさん mailto:sage [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 を使えるようにできないものでしょうか? 何か手はないですかね…?
684 名前:683 mailto:sage [2010/12/19(日) 04:13:51 ] 5.10.1を入れてみたけどダメだった。昔使えてたと思ったのは勘違いだったみたい もしくは極めて特定のバージョンだけがIwidgetsを含んでいたか Strawberry Perl を入れてみたけど cpan Tcl でエラーが出て Tkx まで入らない なんかダメっぽい… まあ元々、Tcl/Tkの成果物を横から掠め取ろうとしてるようなものですし 基本的なところが動くだけでも凄いのかもしれないですね…>hoge/Tk Tkの真の力を発揮したかったらTcl/Tk使え、ということか…
685 名前:683 mailto:sage [2010/12/19(日) 09:08:50 ] 連続カキコして申し訳ない 解決しましたので一応報告を 環境変数 PERL_TCL_DL_PATH で tcl85.dll を指定すれば行けるみたいです。スレ汚しスマソ
686 名前:デフォルトの名無しさん mailto:sage [2010/12/20(月) 05:26:01 ] Tcl/Tkのスクリプトをexe化したいのですが sdx.batってどこにあるんでしょう? というかどれが最新版なんでしょう? code.google.com/p/tclkit/downloads/list tclkitsh , tclkit , sdx.kit はこれが最新版かと思うんですが sdx.bat は見つからず… どこから入手すればいいんだろう?
687 名前:デフォルトの名無しさん [2010/12/20(月) 10:07:44 ] www.equi4.com/pub/sk/ @tclkitsh sdx.kit %1 %2 %3 %4 %5 %6 %7 %8 %9 内容はこんだけ。更新されてないけど今でも使えるよ。
688 名前:デフォルトの名無しさん mailto:sage [2010/12/20(月) 10:52:19 ] >>687 ありがとうございます。助かります 中身見てズッコケました これならバージョンどうこうなんて関係ないですな…dでした
689 名前:デフォルトの名無しさん mailto:sage [2010/12/21(火) 20:44:41 ] これは、凄い。使わせてもらいます。
690 名前:デフォルトの名無しさん mailto:sage [2010/12/21(火) 23:01:00 ] >>681 ありがとうございました。助かります。 EUCだったんですね。
691 名前:本田 [2010/12/23(木) 10:59:09 ] TcomExcel - Excel utility package 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.
692 名前:本田 [2011/01/09(日) 21:31:18 ] Sockspy 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.
693 名前:本田 [2011/01/10(月) 20:15:30 ] Odbcisql is a windowing SQL processor for databases with ODBC interfaces. 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を使えるようにする 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 reddog.s35.xrea.com/software/tclodbc2.5r1-win32-bin.zip sourceforge.net/projects/tclodbc/ msdn.microsoft.com/en-us/library/ms714177 (VS.85).aspx
694 名前:お父さん [2011/01/11(火) 21:16:24 ] >651 canvasにpolygonやlineで書いた絵を画像ファイルでセーブする方法はありますか? →確かめた訳ではないけどこんなものがあるらしい pdf4tcl dumping canvas to pdf 使えるフォントが英文用の3種のみなので日本語はだめだが、純tclでpdfするのはすごい。
695 名前:デフォルトの名無しさん mailto:sage [2011/01/11(火) 21:18:45 ] そんなもん入れんでも標準でepsにできるじゃまいか・・・ vista+ActiveTclではフォントをArialとかにしないとeps化できないけどな〜(MS UI Gothicが悪い?)
696 名前:本田 [2011/01/12(水) 07:01:49 ] >>693 Microsoft ODBC Desktop Database Drivers msdn.microsoft.com/en-us/library/ms711711%28v=VS.85%29.aspx Text File Driver Programming Considerations msdn.microsoft.com/en-us/library/ms714091%28v=VS.85%29.aspx Text File Data Types msdn.microsoft.com/en-us/library/ms715429%28v=VS.85%29.aspx SQLGetInfo Returned Values for Text Files msdn.microsoft.com/en-us/library/ms712518%28v=VS.85%29.aspx Other Text File Driver Programming Details msdn.microsoft.com/en-us/library/ms714680%28v=VS.85%29.aspx Defining Text Format (Text File Driver) msdn.microsoft.com/en-us/library/ms710983%28v=VS.85%29.aspx Schema.ini File (Text File Driver) msdn.microsoft.com/en-us/library/ms709353%28v=VS.85%29.aspx
697 名前:本田 [2011/01/12(水) 23:18:16 ] mysqltcl - Tcl Mysql Interface (Version 3.05 www.xdobry.de/mysqltcl/index.html MySQL 5.1 リファレンスマニュアル 13.11. CSV ストレージエンジン dev.mysql.com/doc/refman/5.1/ja/csv-storage-engine.html CSV ストレージエンジンはコンマ区切りの値を使ったフォーマットでデータをテキストファイルに保存します。 24.1. MySQL Connector/ODBC dev.mysql.com/doc/refman/5.1/ja/myodbc-connector.html
698 名前:本田 [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. msdn.microsoft.com/en-us/library/ms974559.aspx ADO (Visual Fox Pro oledb) - read .dbf with tcom wiki.tcl.tk/16022
699 名前:本田 [2011/01/15(土) 15:15:07 ] SourceForge.JP、個人向けGitリポジトリ/ストレージサービス「PersonalForge」をリリース sourceforge.jp/magazine/11/01/13/0234231 OSDNは1月13日、同社の運営するオープンソースソフトウェア開発サイト「SourceForge.JP」において、 個人向け開発支援ツール「PersonalForge」をリリースした。 個人用Gitリポジトリおよびファイル頒布用のストレージサービス(ファイルマネージャ)が提供される。 Git ユーザマニュアル (バージョン 1.5.3 以降用) www8.atwiki.jp/git_jp/pub/Documentation.ja/user-manual.html Git wiki.tcl.tk/14597 gitk 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.
700 名前:本田 [2011/01/16(日) 12:13:38 ] >>699 Sun Yiyi氏のGit Source Control Provider for Visual Studio 2008/2010の紹介 www.infoq.com/jp/news/2010/06/Git-Visual-Studio Git Source Control Provider visualstudiogallery.msdn.microsoft.com/en-us/63a7e40d-4d71-4fbb-a23b-d262124b8f4c >>698 Microsoft Jet SQL リファレンス office.microsoft.com/ja-jp/access-help/CH006252688.aspx Microsoft Jet 4.0 データベース エンジン ドライバを初期化する office.microsoft.com/ja-jp/access-help/HP001032161.aspx 外部データのWindows レジストリ設定 office.microsoft.com/ja-jp/access-help/CH001041018.aspx ODBC アクセスのために Microsoft Jet データベース エンジンを設定する office.microsoft.com/ja-jp/access-help/HP001032164.aspx Microsoft OLE DB Provider for Jet で接続プロパティを使用する office.microsoft.com/ja-jp/access-help/HP001032169.aspx テキスト データ ソース ドライバを初期化する office.microsoft.com/ja-jp/access-help/HP001032166.aspx
701 名前:本田 [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. 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
702 名前:本田 [2011/01/21(金) 22:18:38 ] Miscellaneous Tcl packages vectorstream.com/tcl/packages/ Packages using the Tcl >= 8.5 module system
703 名前:本田 [2011/01/24(月) 06:41:26 ] Soar (認知アーキテクチャ) 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 sitemaker.umich.edu/soar/home 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. sourceforge.net/projects/soar/
704 名前:本田 [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 [ペーパーバック] 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
705 名前:デフォルトの名無しさん [2011/02/04(金) 21:47:25 ] wish8.4を使っています。 set pipe [open "|hoge"]とパイプを開いて、 場合によりhogeを途中で終了させたいのですが、 close $pipeやexec kill [pid $pipe]とやると、 どうしてもApplication Errorのダイアログが勝手に出てしまいます。 もう少し穏便に終了させたいのですが、この手のエラーを抑制するにはどうすればよいでしょう?
706 名前:デフォルトの名無しさん mailto:sage [2011/02/04(金) 22:11:44 ] catch
707 名前:デフォルトの名無しさん mailto:sage [2011/02/05(土) 11:36:25 ] 過疎スレ(過疎言語?)かと思ったら質問に20分でレスが付くとは。 GJすぐるw。本人じゃないけど礼を言いたいよ。
708 名前:デフォルトの名無しさん mailto:sage [2011/02/05(土) 14:37:39 ] >>706 ありがとうございます、例外の捕捉ができるのですね。
709 名前:デフォルトの名無しさん mailto:sage [2011/02/05(土) 23:58:42 ] このスレじゃないけど質問から1分で的確な回答が付いてたのを見たことがある
710 名前:デフォルトの名無しさん mailto:sage [2011/02/06(日) 00:03:35 ] そういうのは自演だから
711 名前:本田 [2011/02/06(日) 17:02:07 ] Great Unified Tcl/Tk Extension Repository www.flightlab.com/~joe/gutter/
712 名前:デフォルトの名無しさん mailto:sage [2011/02/13(日) 08:27:10 ] >>707 たまに本田氏が本気を出す時がある。 いりこ出汁的な意味で。
713 名前:デフォルトの名無しさん mailto:sage [2011/02/14(月) 22:33:41 ] 話題は無いけど監視はしてる
714 名前:本田 [2011/02/16(水) 06:58:49 ] My Home Page: Jean-Luc Fontaine jfontain.free.fr/ Software (source, documentation, miscellaneous): For Tcl versions 8.3.x and 8.4.x: tclperl a Perl package for Tcl jfontain.free.fr/tclperl.htm TclPerl/TclPython www.ellogon.org/petasis/index.php?option=com_content&task=view&id=27&Itemid=43 tclpython a Python package for Tcl jfontain.free.fr/tclpython.htm TclPerl/TclPython www.ellogon.org/petasis/index.php?option=com_content&task=view&id=27&Itemid=43
715 名前:本田 [2011/02/19(土) 23:56:32.45 ] Tcl/Tk Stuff www.cs.nott.ac.uk/~nem/tcl/ Tcl interface to the NJS JavaScript interpreter library (see njs-javascript.org). Note: LGPL licensed. www.cs.nott.ac.uk/~nem/tcl/tcljs-1.0.tar.gz
716 名前:本田 [2011/02/20(日) 23:10:04.75 ] downloads.activestate.com/ActiveTcl/releases/8.4.19.5/ActiveTcl8.4.19.5.294332-win32-ix86-threaded.exe downloads.activestate.com/ActiveTcl/releases/8.4.19.5/ActiveTcl8.4.19.5.294317-linux-ix86.tar.gz downloads.activestate.com/ActiveTcl/releases/8.4.19.5/ActiveTcl8.4.19.5.294317-linux-x86_64.tar.gz downloads.activestate.com/ActiveTcl/releases/8.4.19.5/ActiveTcl8.4.19.5.294317-macosx-universal-threaded.dmg downloads.activestate.com/ActiveTcl/releases/8.5.9.2/ActiveTcl8.5.9.2.294317-win32-ix86-threaded.exe downloads.activestate.com/ActiveTcl/releases/8.5.9.2/ActiveTcl8.5.9.2.294317-win32-x86_64-threaded.exe downloads.activestate.com/ActiveTcl/releases/8.5.9.2/ActiveTcl8.5.9.2.294317-macosx10.5-i386-x86_64-threaded.dmg downloads.activestate.com/ActiveTcl/releases/8.5.9.2/ActiveTcl8.5.9.2.294317-linux-ix86-threaded.tar.gz downloads.activestate.com/ActiveTcl/releases/8.5.9.2/ActiveTcl8.5.9.2.294317-linux-x86_64-threaded.tar.gz downloads.activestate.com/ActiveTcl/releases/8.6.0.0b5/ActiveTcl8.6.0.0b5.294318-win32-ix86-threaded.exe downloads.activestate.com/ActiveTcl/releases/8.6.0.0b5/ActiveTcl8.6.0.0b5.294318-win32-x86_64-threaded.exe downloads.activestate.com/ActiveTcl/releases/8.6.0.0b5/ActiveTcl8.6.0.0b5.294318-macosx10.5-i386-x86_64-threaded.dmg downloads.activestate.com/ActiveTcl/releases/8.6.0.0b5/ActiveTcl8.6.0.0b5.294318-linux-ix86-threaded.tar.gz downloads.activestate.com/ActiveTcl/releases/8.6.0.0b5/ActiveTcl8.6.0.0b5.294318-linux-x86_64-threaded.tar.gz
717 名前:本田 [2011/02/22(火) 21:20:38.31 ] >>715 Embed javascript in Tcl code.google.com/p/tcljs/ This project creates a Tcl extension to embed a javascript interpreter (Spidermonkey) in a Tcl/Tk application.
718 名前:本田 [2011/03/26(土) 00:26:40.20 ] Ayam ayam.sourceforge.net/ The current stable version is 1.19, released 16. Mar 2011.
719 名前:デフォルトの名無しさん [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にアクセスできません: そのようなファイルやディレクトリはありません なんでダメなの?
720 名前:719 mailto:sage [2011/04/03(日) 15:37:22.20 ] /bin/ls: *.txtにアクセスできません の間違いです。すんません。
721 名前:本田 [2011/04/03(日) 21:24:48.73 ] tkcon.tcl使ってみたら?
722 名前:デフォルトの名無しさん mailto:sage [2011/04/04(月) 23:37:12.86 ] globとか。
723 名前:デフォルトの名無しさん mailto:sage [2011/04/05(火) 22:34:50.19 ] >>719 OSは?
724 名前:デフォルトの名無しさん mailto:sage [2011/04/06(水) 10:52:07.57 ] >>719 eval exec ls [glob *.txt]
725 名前:デフォルトの名無しさん mailto:sage [2011/04/17(日) 23:05:54.75 ] Tcl、GoogleのNative Clientに対応した「NaTcl」を発表 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の新しい本が出るようになるかな?
726 名前:デフォルトの名無しさん [2011/04/17(日) 23:17:37.46 ] 昔Tcletってあったよね。
727 名前:デフォルトの名無しさん mailto:sage [2011/04/18(月) 09:11:17.63 ] >>726 今でもある
728 名前:デフォルトの名無しさん mailto:sage [2011/04/19(火) 00:21:24.65 ] すらどで話題になりなおかつそこそこコメントが付いてることにワシは感動しておるw まだ見放されてなかったw
729 名前:デフォルトの名無しさん mailto:sage [2011/04/20(水) 15:53:49.10 ] ペイントソフトをつくろうと思っています TkCanvasではTkcLine等を用いたベクタ形式の画像処理しかできないようですが BMPファイル画像等の任意のピクセルの値の読み書きといった いわゆるペイント系の処理はどのWidgetを使えば実装できるのでしょうか ご教示お願いします
730 名前:デフォルトの名無しさん mailto:sage [2011/04/27(水) 20:32:05.36 ] できますよ
731 名前:デフォルトの名無しさん mailto:sage [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 }
732 名前:デフォルトの名無しさん [2011/05/07(土) 22:56:08.08 ] バイナリファイルを読み込んで、編集して、別名で書き込むにはどうしたら良いでしょうか。 open、binary format、binary scan、puts、getsあたりを使えばできるだろうと思い、試行錯誤したのですが どうしてもうまくいきません。 Tclは書籍(特に和書)が少ないのでwebの情報が頼りですが、 思ったような情報が見つからず困っています。
733 名前:デフォルトの名無しさん mailto:sage [2011/05/08(日) 00:39:37.94 ] そのコマンド列にfconfigureコマンドが無いのが気になった。
734 名前:デフォルトの名無しさん mailto:sage [2011/05/08(日) 00:55:01.94 ] >>733 確かにfconfigureも必要かもしれませんね。 できれば一部のデータを置換して別名で保存するようなサンプルが見てみたいです。
735 名前:デフォルトの名無しさん mailto:sage [2011/05/08(日) 01:34:03.82 ] まず、試行錯誤してみたコードを貼り付けてみたらどうですか 適当な1バイトを読んでその値を2倍して別ファイルに書き込むのは13行くらいでできた。
736 名前:デフォルトの名無しさん mailto:sage [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
737 名前:736 mailto:sage [2011/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()
738 名前:736 mailto:sage [2011/05/08(日) 01:56:24.08 ] 737のスクリプトはIM000000というファイルの20110214911005を99887766554433に置換して COPYDCMという名前で保存するだけです。 Tclではその程度ですら自分にはできません。
739 名前:デフォルトの名無しさん mailto:sage [2011/05/08(日) 02:01:45.23 ] 少なくとも fileID2 にも -translation binary が必要で、puts に -nonewline オプションが必要だともう。
740 名前:736 [2011/05/08(日) 02:06:42.32 ] >>739 ご指摘の通りにしたら正常に動作しました。 これがわかれば置換等の編集をして保存することも難しくないかもしれません。 頑張ってみます。 ありがとうございました。
741 名前:733 735 739 mailto:sage [2011/05/08(日) 02:15:08.51 ] どういたしまして。 Pythonが使えるのになぜTclなんだという疑問がありますが、Tcl使いが増えるとちょっとうれしい。
742 名前:デフォルトの名無しさん [2011/05/10(火) 20:13:53.27 ] あるディレクトリ内にあるファイルのパス名のリストを得るにはどうしたら良いでしょうか? 同じ階層だけであればglobで簡単にできますが、 下層にあるディレクトリ内のファイルも全て対象にしたいのです。
743 名前:デフォルトの名無しさん mailto:sage [2011/05/10(火) 21:29:56.14 ] globを再帰でつくる とか、 Tcllibパッケージのfileutilを使う package require fileutil ::fileutil::findByPattern . -glob *
744 名前:デフォルトの名無しさん mailto:sage [2011/05/12(木) 00:00:56.94 ] Tcl/Tkによるバイナリエディタ reddog.s35.xrea.com/wiki/bineditor.html
745 名前:デフォルトの名無しさん mailto:sage [2011/05/19(木) 00:16:38.55 ] >>741 自分はこれからTcl/Tkを覚えようかとしてるんですが、この言語けっこう恵まれてません? まぁ、自分のニーズもあるんですが、 ・スクリプトで、GUIを手軽に書ける ・グラフの描画ライブラリがある(クリック可能) ・他言語との連携ができる ・単独で動作するバイナリができる ・言語仕様が簡単 ・クロスプラットフォーム ・オープンソース ・枯れてる この条件だとPythonでもよかったんですが、Pmw.Bltはちと不安で…。 自分でメンテ+拡張しようにも、結局内部でTkコマンド呼んでるだけだったんで、なら、ということで。
746 名前:デフォルトの名無しさん mailto:sage [2011/05/22(日) 00:30:34.87 ] なぜかユーザーは少ない。最近はちょっと増えてきた気もするが 8.3〜8.4のころは本当に見向きもされてなかった
747 名前:デフォルトの名無しさん [2011/05/22(日) 23:15:17.27 ] PythonでTkinterを介してTkを利用するのって難しすぎじゃね? Tcl/Tkに慣れすぎると、Tkinterが煩わしくて仕方ない。 どうしてもPythonを使わざるをえない場合は仕方ないけど できるだけTcl/Tkでやりたくなる。
748 名前:デフォルトの名無しさん [2011/05/23(月) 23:08:54.27 ] まあPython使うときはTk以外の選択肢いっぱいあるのでTk使わなくてもいいんでは
749 名前:デフォルトの名無しさん mailto:sage [2011/06/08(水) 22:15:40.29 ] Tclってfork()できないのがつらい。 TclXはちょっと...
750 名前:デフォルトの名無しさん mailto:sage [2011/06/09(木) 20:54:44.14 ] 誰かWin/Linuxでドラッグ&ドロップができるようになる拡張、 8.5以降に対応しているので知らんかね… とりあえずTkDND 2.2を試して見てるんだけど、8.5には対応 してないらしく、何ヶ所かバグを潰してXConvertSelectionまで 辿り着いたとこで、手詰まった。 ※XConvertSelectionをLD_PRELOADでフックして、ちゃんと Timeを与えるようにしたのにtimeoutになる、なぜだ…
751 名前:デフォルトの名無しさん mailto:sage [2011/06/11(土) 15:06:12.77 ] TkDNDのfixかなり粘ったけど、これは無理。 Tk本体のselection getもtext/uri-listに対応してなかったり、かなり根が深そう。 これ修正するくらいだったら、一から実装したほうが多分早い。くそぅ。
752 名前:デフォルトの名無しさん mailto:sage [2011/06/12(日) 13:33:18.93 ] 誰か詳しい方、Tcl_CreateThreadについて教えてください… 拡張の処理に時間のかかる部分をThread化して、終了をvwait bgstatとかで 待とうとしてるんですけど、www.tcl.tk/ のマニュアルには 「スレッドは親のinterpに触ってはいけない」とか書いてあるんで、スレッドから set bgstatすることはできないようなのです。 このあたり、普通はどういう処理をするんでしょうか? サンプルコードの場所なり、このソース読めば判るんじゃね、でも構わないんで、 なにかヒントをお願いします。 (vwaitのEXAMPLEにあるsocketコマンドは勘弁してください、挫折しました)
753 名前:デフォルトの名無しさん mailto:sage [2011/06/12(日) 17:44:41.87 ] >>752 Tcl_CreateThread()ということは、Cで拡張を書いている? だったら、Tcl_AsyncMark()が使えると思う。 Tclのthreadコマンドだったら、thread(n)に書いてあるように、thread::sendを 使えば、threadの結果をvwait出来ると思う。
754 名前:デフォルトの名無しさん mailto:sage [2011/06/12(日) 18:28:11.50 ] >>753 Thanks! CなのでTcl_AsyncMarkですが、マニュアルを読む限りそれっぽい! とりあえず、何かサンプル書いて確かめてみます。
755 名前:デフォルトの名無しさん mailto:sage [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; }
756 名前:デフォルトの名無しさん mailto:sage [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. セグメンテーション違反です
757 名前:デフォルトの名無しさん mailto:sage [2011/06/12(日) 20:18:25.01 ] Tcl_SetVar2Ex呼ぶとこでinterpがNULLになってる… なんか勘違いしてるっぽいですね。
758 名前:753 mailto:sage [2011/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とかを投げるほうが良いような気がしてきたけど。
759 名前:デフォルトの名無しさん mailto:sage [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ですが…)。 仕組み上ではこれで悪くないはず?なので、これで行こうと思います。 ほんとにありがとうございます。
760 名前:758 mailto:sage [2011/06/13(月) 00:33:27.18 ] >>759 どこで見たか思い出ないけど、Tcl_AsyncCreate()した時(=拡張のロード時)に interpを保存しておいて、AsyncHandler()の引数がNULLの場合は保存したinterpを 使っていた。同じことをして動いた記憶はある。 引数がNULLということはコマンドを実行していないので、保存していたinterpを 使っても問題にはならないらしい。 逆に、複数のinterpが存在するとAsyncHandler()が呼ばれた時に渡されるinterpが 通知先である保証が無いのかな? NULLでないのは何らかのコマンドが終了した瞬間だから、保存していたinterpを 使っても安全な気もするから、実行するコマンドが絶対に成功するようにすれば それでいいんでは?
761 名前:デフォルトの名無しさん mailto:sage [2011/06/13(月) 23:10:25.66 ] >>760 おぉ、詳細なご説明ありがとうございます。 ぼんやりとしていた理解が、明確になった気がします。 やっぱり同じ事を考えた方はいらっしゃるんですね。 というか、スレッドの終了をvwaitで待ちたいとか割とありえる状況な気がしますが、 ぐぐってもKodersでもまともにヒットしないってどういうこと… この辺がニッチな言語の、もの悲しいとこですね。
762 名前:デフォルトの名無しさん mailto:sage [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. ドキュメントにはあるんだけど... docs.activestate.com/activetcl/8.5/tclxml/index.html だいたい、8.4のtar玉は28Mあったのに8.5は20Mしかない downloads.activestate.com/ActiveTcl/releases/8.4.19.5/ downloads.activestate.com/ActiveTcl/releases/8.5.9.2/
763 名前:762 mailto:sage [2011/06/16(木) 02:37:19.87 ] >>116-119 に解答がありました。 失礼しました。
764 名前:天使 ◆uL5esZLBSE mailto:sage [2011/07/05(火) 02:14:58.01 ] ↓↓ 「「「「「「「「「 に解答がありました。 失礼しました。 」」」」」」」」」(爆ッゴミッッ!
765 名前:デフォルトの名無しさん mailto:http://www.geocities.jp/c_zelos/soto/tensi_no_aori.zip [2011/07/06(水) 17:28:55.22 ] ↓ <<<<<<<<<<<<< 「「「「「「「「「 に解答がありました。 失礼しました。 」」」」」」」」」(爆ッゴミッッ! >>>>>>>>>>>>>(キリッ!!!きリッ!!!! ↑↑(きリキリッッ!キリ 土方が何をほざいて(笑) 天使#test_s 「天使の煽り」の提供でお送りしました
766 名前:デフォルトの名無しさん mailto:sage [2011/07/07(木) 21:59:23.84 ] >>763 それは2007年当時の話。今のActiveTclでは teacupで必要な拡張をダウソするのがナウ。
767 名前:本田 [2011/07/11(月) 23:50:09.19 ] [Tcl-announce] ActiveTcl 8.5.10.0 released code.activestate.com/lists/tcl-announce/371/
768 名前:本田 [2011/07/12(火) 00:00:32.94 ] downloads.activestate.com/ActiveTcl/releases/8.5.10.0/ downloads.activestate.com/ActiveTcl/releases/8.5.10.0/ActiveTcl8.5.10.0.294993-html.tar.gz downloads.activestate.com/ActiveTcl/releases/8.5.10.0/ActiveTcl8.5.10.0.294993-linux-ix86-threaded.tar.gz downloads.activestate.com/ActiveTcl/releases/8.5.10.0/ActiveTcl8.5.10.0.294993-linux-x86_64-threaded.tar.gz downloads.activestate.com/ActiveTcl/releases/8.5.10.0/ActiveTcl8.5.10.0.294993-macosx10.5-i386-x86_64-threaded.dmg downloads.activestate.com/ActiveTcl/releases/8.5.10.0/ActiveTcl8.5.10.0.294993-win32-ix86-threaded.exe downloads.activestate.com/ActiveTcl/releases/8.5.10.0/ActiveTcl8.5.10.0.294993-win32-x86_64-threaded.exe downloads.activestate.com/ActiveTcl/releases/8.5.10.0/MD5SUM downloads.activestate.com/ActiveTcl/releases/8.5.10.0/SHA256SUM
769 名前:本田 [2011/07/12(火) 21:01:46.78 ] Teacup 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.
770 名前:デフォルトの名無しさん mailto:sage [2011/07/26(火) 13:53:55.22 ] canvasで書いた円と線の交差判定をしたいです。 計算しなくてもできるって聞いたんですがどうすればいいですか?
771 名前:本田 [2011/07/30(土) 06:39:19.48 ] 円じゃなくて長方形領域ようだけど。 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 以下の数値でなければなりません。
772 名前:本田 [2011/07/30(土) 06:43:22.91 ] downloads.activestate.com/ActiveTcl/releases/ downloads.activestate.com/ActiveTcl/releases/8.5.10.1/ downloads.activestate.com/ActiveTcl/releases/8.5.10.1/ActiveTcl8.5.10.1.295062-html.tar.gz 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 downloads.activestate.com/ActiveTcl/releases/8.5.10.1/ActiveTcl8.5.10.1.295062-macosx10.5-i386-x86_64-threaded.dmg downloads.activestate.com/ActiveTcl/releases/8.5.10.1/ActiveTcl8.5.10.1.295062-win32-ix86-threaded.exe downloads.activestate.com/ActiveTcl/releases/8.5.10.1/ActiveTcl8.5.10.1.295062-win32-x86_64-threaded.exe downloads.activestate.com/ActiveTcl/releases/8.5.10.1/MD5SUM downloads.activestate.com/ActiveTcl/releases/8.5.10.1/SHA256SUM
773 名前:本田 [2011/07/30(土) 06:52:55.54 ] ×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 downloads.activestate.com/ActiveTcl/releases/8.5.10.1/ActiveTcl8.5.10.1.295062-linux-ix86-threaded.tar.gz downloads.activestate.com/ActiveTcl/releases/8.5.10.1/ActiveTcl8.5.10.1.295062-linux-x86_64-threaded.tar.gz
774 名前:デフォルトの名無しさん mailto:sage [2011/08/03(水) 22:02:33.46 ] Tclって複数行にわたるコメントってできるの?Cの/* ... ... */みたいな。 エディタに頼って全行頭をイゲタるしかないのか。 if 0 { } ってのもなんだかなぁ...
775 名前:デフォルトの名無しさん mailto:sage [2011/08/03(水) 22:39:32.06 ] どこのJava
776 名前:デフォルトの名無しさん mailto:sage [2011/08/05(金) 22:47:02.97 ] >>774 できない。諦めろ。
777 名前:デフォルトの名無しさん mailto:sage [2011/08/05(金) 22:48:49.89 ] proc rem comment {} rem { こめんととめんと こめんとこめんとおおおお!!! }
778 名前:デフォルトの名無しさん mailto:sage [2011/08/06(土) 00:08:22.24 ] コメント途中に閉じ中カッコであぼーん
779 名前:デフォルトの名無しさん mailto:sage [2011/08/06(土) 17:21:09.88 ] # コメント1\ コメント2\ コメント3# でいけそうだけどどうかな? # もコマンドみたいなものだから \ で続けて書けそうな気がする 最後の # は無くてもいいけど終端という意味で
780 名前:デフォルトの名無しさん [2011/08/06(土) 21:28:04.24 ] それは毎行つけるので行頭#とあんまり大差ないな
781 名前:デフォルトの名無しさん mailto:sage [2011/08/07(日) 08:03:02.17 ] Emacsで範囲指定して M-x comment-region
782 名前:デフォルトの名無しさん mailto:sage [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 }; -->
783 名前:デフォルトの名無しさん mailto:sage [2011/08/09(火) 21:18:47.70 ] set comment { コメント } >>782 と >>777 と同じく、中括弧がバランスしないと破綻する。 中括弧だけなら、 set comment " コメント " という手もあるけど、" と カギ括弧[] を意識しないといけない
784 名前:デフォルトの名無しさん mailto:sage [2011/08/09(火) 21:26:01.94 ] #コマンドの振る舞いって謎だな {}は改行も含めて一つの要素にするはずだから、 # {あほ ばか } で#コマンドは{あほ改行ばか改行}を一つの引数とするはずなのに、{あほ まででコメントが終了しちゃうよね。 set a {あほ ばか } だとちゃんとaに{あほ改行ばか改行}が入るのに
785 名前:デフォルトの名無しさん [2011/08/09(火) 22:50:35.79 ] #はTclにおいてもコマンドではない。が正解。
786 名前:デフォルトの名無しさん mailto:sage [2011/08/10(水) 22:11:16.68 ] なるほど #はコマンドの置ける位置に置かねばならないがコマンドではなく行末までのコメントとして処理されるということか 行末の\継続は生きてる状態で。
787 名前:デフォルトの名無しさん mailto:sage [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>イベントが発生するらしい。 これって仕様なのかな。
788 名前:デフォルトの名無しさん mailto:sage [2011/08/28(日) 21:06:23.24 ] >>787 仕様。 但し正確には、子供のぶんまでイベントが発生するのではなくて、子供が処理するイベントに toplevelのぶんが含まれている。 "puts destroyed %W" とかするとわかると思う。 あとはbindtagsのman-page参照。
789 名前:デフォルトの名無しさん mailto:sage [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] とかはできる。
790 名前:デフォルトの名無しさん mailto:sage [2011/08/29(月) 23:52:37.47 ] AssocQueryStringWというWindows APIが使いたかったので、 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) のことだと思うんですが、どの辺が間違ってるんでしょうか?
791 名前:デフォルトの名無しさん mailto:sage [2011/08/31(水) 00:16:00.83 ] >>788 >>789 ありがd とりあえず bind .w1 <Destroy> ... のかわりに bind .w1.b1 <Destroy> ... にしたら(子供がいないので)一回だけ処理されるので 目的は達成できてますが、動作が疑問だったんで。
792 名前:デフォルトの名無しさん mailto:sage [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だとクラッシュするのお・・・。
793 名前:デフォルトの名無しさん mailto:sage [2011/09/09(金) 01:55:06.30 ] >>792 どうもありがとう。 32bit版Win7ではクラッシュ。型が違うのかなあ。。。
794 名前:デフォルトの名無しさん mailto:sage [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が壊れてる?
795 名前:デフォルトの名無しさん mailto:sage [2011/09/10(土) 01:09:56.11 ] 脳が障害を起こしました
796 名前:デフォルトの名無しさん mailto:sage [2011/09/12(月) 00:35:13.36 ] >>794 なんかJITデバッガのせいでイベントログには残らないみたいですが、 デバッガには以下が表示されてました。 wish84.exe の 0x76d93d52 (shell32.dll) でハンドルされていない例外が発生しました: 0xC0000005: 場所 0x000003e8 を読み込み中にアクセス違反が発生しました。 CAssocArray::GetStringという関数でエラーになってるらしいですが、何に使われてるのかは不明。
797 名前:デフォルトの名無しさん mailto:sage [2011/10/22(土) 17:14:45.57 ] Tcl/tkって、伺かみたいなGUIは実現できるのでしょうか?
798 名前:デフォルトの名無しさん mailto:sage [2011/10/25(火) 23:08:12.87 ] > 797 この辺があればできるのではないかと。 二次元キャラ -> Tk canvas + Imgでpngファイルが使える + TkTrans.dllで背景透過 サウンド -> snack Windows API, COMの利用 -> TWAPIとFfidl, tcom 設定画面とかは普通にTkで。垢抜けた見た目を求めるならtile拡張 知識の泉 * ActiveTclに添付のヘルプ * wiki.tcl.tk/ * www.tkdocs.com/ ActiveTclに標準添付じゃない拡張たち TkTrans.dll goo.gl/gwXa1 TWAPI twapi.magicsplat.com/ Ffidl elf.org/ffidl/
799 名前:デフォルトの名無しさん mailto:sage [2011/10/30(日) 13:19:20.79 ] canvasで、ある位置の色を取得したいのですが可能でしょうか? どうすれば取得できるでしょうか?
800 名前:デフォルトの名無しさん mailto:sage [2011/10/31(月) 19:58:14.80 ] > 799 できたよ。 wp.me/pSK5T-4g
801 名前:デフォルトの名無しさん mailto:sage [2011/10/31(月) 21:12:04.23 ] >>800 GDIですか、windows用ですね 参考にさせてもらいます ありがとうございます!
802 名前:デフォルトの名無しさん [2011/11/11(金) 22:55:33.88 ] ActiveTcl 8.5.10->8.5.11 ファイル容量少し小さくなった
803 名前:デフォルトの名無しさん mailto:sage [2011/11/18(金) 23:57:56.40 ] envってグローバルだったんだね。 proc内でglobalつけないで使ってたら ぜんぜん環境変数にアクセスできなくて、 半日はまった。orz
804 名前:デフォルトの名無しさん mailto:sage [2011/11/19(土) 01:12:58.43 ] >>803 env使うってCGIでも作ってるの? 組み込み変数は全部グローバルだから、 一度info globalsのリストに目を通しておくとそういうときにピンとくると思う。
805 名前:デフォルトの名無しさん [2011/11/19(土) 07:50:33.66 ] downloads.activestate.com/ActiveTcl/releases/8.5.11.0/ downloads.activestate.com/ActiveTcl/releases/8.5.11.0/ActiveTcl8.5.11.0.295402-html.tar.gz downloads.activestate.com/ActiveTcl/releases/8.5.11.0/ActiveTcl8.5.11.0.295402-linux-ix86-threaded.tar.gz downloads.activestate.com/ActiveTcl/releases/8.5.11.0/ActiveTcl8.5.11.0.295402-linux-x86_64-threaded.tar.gz downloads.activestate.com/ActiveTcl/releases/8.5.11.0/ActiveTcl8.5.11.0.295402-macosx10.5-i386-x86_64-threaded.dmg downloads.activestate.com/ActiveTcl/releases/8.5.11.0/ActiveTcl8.5.11.0.295402-win32-ix86-threaded.exe downloads.activestate.com/ActiveTcl/releases/8.5.11.0/ActiveTcl8.5.11.0.295407-win32-x86_64-threaded.exe downloads.activestate.com/ActiveTcl/releases/8.5.11.0/MD5SUM downloads.activestate.com/ActiveTcl/releases/8.5.11.0/SHA256SUM
806 名前:デフォルトの名無しさん mailto:sage [2011/11/19(土) 12:32:51.20 ] 誰もが一度ははまるstr
807 名前:デフォルトの名無しさん [2011/11/27(日) 12:50:30.83 ] ゲームでキャラを移動させるような場合、bindを用いてカーソルキーで操作すると キーボードのオートリピート機能のせいで、動き始めた直後に一瞬動きが止まります。 スムーズに動くようにするにはどうしたら良いのでしょうか?
808 名前:デフォルトの名無しさん mailto:sage [2011/11/28(月) 00:52:09.92 ] inp(0), inp(1)
809 名前:デフォルトの名無しさん mailto:sage [2011/11/29(火) 00:48:45.31 ] >>807 簡単なテストコード見せて
810 名前:デフォルトの名無しさん mailto:sage [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だけで解決する方法はないのでしょうか?
811 名前:デフォルトの名無しさん mailto:sage [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 方向を一つの変数でまとめてるけど方向別にすれば斜め移動も出来る
812 名前:デフォルトの名無しさん mailto:sage [2011/11/30(水) 00:27:19.26 ] >>810 どういうゲームかわからないけど、イベントループを自分で管理するべき。 そして、そのイベントループの中で、KeyPressで動かしはじめて、 KeyReleaseが来るまで動かし続ける。簡単には>>811 みたいな。 ちゃんとしたゲームしたいならasteroids.tclが参考になると思う。→wiki.tcl.tk/13601
813 名前:デフォルトの名無しさん [2011/11/30(水) 12:06:12.14 ] カーソルキーを押しっぱなしにすると ずっとKeyPressのままってわけじゃない。 KeyPressとKeyReleaseが交互に発生する。 だからそれは全然アドバイスになってない。
814 名前:デフォルトの名無しさん mailto:sage [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
815 名前:デフォルトの名無しさん mailto:sage [2011/12/01(木) 13:31:06.09 ] >>813 普通はそうならない。 コントロールパッド本体に連射機能がついてるとかならあり得るかもしれないけど。
816 名前:デフォルトの名無しさん [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}
817 名前:816 mailto:sage [2011/12/01(木) 21:35:31.25 ] このサンプルを動かして、aを押しっぱなしにしたら 1と0が交互に表示されるはず。 そうならなかったらよっぽど特殊なキーボードを使ってるんだろう。
818 名前:デフォルトの名無しさん mailto:sage [2011/12/02(金) 11:26:05.96 ] 連射機能付きJOYstickだろ
819 名前:デフォルトの名無しさん mailto:sage [2011/12/02(金) 15:07:54.99 ] >>816 ,817 そのコード片を試したわけでないので何だが、 通常、キーを押しっぱなしにすると KeyPress/KeyDownは複数飛んでくるが KeyReleaseは離したときに1回飛んでくるだけじゃないのかね。
820 名前:デフォルトの名無しさん [2011/12/02(金) 19:29:43.54 ] 試さないで何言ってる
821 名前:デフォルトの名無しさん mailto:sage [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}
822 名前:デフォルトの名無しさん mailto:sage [2011/12/02(金) 23:24:20.45 ] >>821 ループ無し i.imgur.com/byFnN.png
823 名前:デフォルトの名無しさん mailto:sage [2011/12/02(金) 23:50:43.04 ] ループ無し ozcircle.net/_uploader/60860336 俺の環境ではこの通り
824 名前:デフォルトの名無しさん mailto:sage [2011/12/03(土) 10:24:08.91 ] だから〜環境依存の問題の臭いがしてるのに、 バージョンもOSも書かずに「俺の環境」じゃ 誰もこれ以上何もできんだろ
825 名前:デフォルトの名無しさん mailto:sage [2011/12/03(土) 11:50:49.20 ] >>824 Windows7とWindowsXPとLinux Mint 11で確認済 というか、そうならない環境が例外だと思われる
826 名前:825 mailto:sage [2011/12/03(土) 11:54:22.55 ] Tclのバージョンは8.4と8.5で試したが、結果は同じ
827 名前:本田 [2011/12/04(日) 21:44:12.75 ] >>825 もし同じPCでテストしてるなら。 BIOSが同じだから結果が同じ可能性がある。
828 名前:デフォルトの名無しさん mailto:sage [2011/12/04(日) 21:57:17.27 ] >>827 俺も試してみたけど>>823 みたいになった。 3台のPCでテストしたんだけど変わらない。 ってことは環境依存だとしても、そういうのって結構多いんじゃない?
829 名前:本田 [2011/12/04(日) 23:25:19.71 ] キーのリピート速度と遅延時間を設定するには www.atmarkit.co.jp/flinux/rensai/linuxtips/052keyrepert.html 同じキーを押し続けると、そのキーが連続で入力できる。 連続で入力される速度を「リピート速度」、キーを押してからリピートを開始するまでの時間を「遅延時間」と呼ぶ。 キーのリピート速度と遅延時間は、kbdrateコマンドで変更できる。 オプションを何も指定しないでkbdrateコマンドを実行すると、リピート速度が10.9cps(1秒当たり10.9文字)に、遅延時間が250ミリ秒(ms)に設定される。 これが、Linuxのデフォルトの数値だ。 使用可能なオプションは、-s、-r、-dだ。
830 名前:本田 [2011/12/04(日) 23:52:04.88 ] キー・リピート (key repeat) www.atmarkit.co.jp/icd/root/32/5785932.html キーを押したままにしたときに、連続的にそのキーが繰り返し入力されたように扱うしくみ。 一般的には、キーが押し下げられてから、キー・リピート処理が開始されるまでの間隔と、 リピート間隔(連続的にキー入力を発生させる際の時間間隔)を設定できる。
831 名前:デフォルトの名無しさん mailto:sage [2011/12/05(月) 23:44:17.05 ] >>814 >>815 のものですが、>>810 を見て、てっきりWindowsの話と思ってました。 これが答えになるんじゃないでしょうか。 X Window SystemではオートリピートでPress/Releaseが交互に発生するらしいです。 goo.gl/q3zCD Windowsでなるという人いないはずだよね?
832 名前:デフォルトの名無しさん mailto:sage [2011/12/05(月) 23:57:02.19 ] あと、確認の仕方は以下で十分です。 bind . <KeyPress> {puts KeyPress} bind . <KeyRelease> {puts KeyRelease} console show
833 名前:デフォルトの名無しさん [2011/12/06(火) 10:23:09.00 ] WindowsのオートリピートってX Windowと挙動が違うの? オートリピートなんてみんな同じだと思ってた
834 名前:デフォルトの名無しさん mailto:sage [2011/12/06(火) 21:17:09.62 ] X Windowって言うな
835 名前:デフォルトの名無しさん mailto:sage [2011/12/06(火) 21:57:13.95 ] >>834 いみふ
836 名前:デフォルトの名無しさん mailto:sage [2011/12/06(火) 22:04:04.24 ] X Windowsというと嫌がる人ってのは見たことあるけどな X Windowだったら単純にSystemを省略しただけだから何が悪いのかわけわからん
837 名前:デフォルトの名無しさん mailto:sage [2011/12/07(水) 00:27:18.67 ] >>835 , >>836 同感。
838 名前:デフォルトの名無しさん mailto:sage [2011/12/07(水) 07:30:17.47 ] ま、開発元は嫌がってるけどね。
839 名前:デフォルトの名無しさん mailto:sage [2011/12/07(水) 15:53:36.77 ] 略すなら X のみだろ常考
840 名前:デフォルトの名無しさん mailto:sage [2011/12/07(水) 17:55:46.65 ] X Windowsでいいよ 呼び方なんぞどうでもいい
841 名前:デフォルトの名無しさん [2011/12/07(水) 19:52:34.30 ] tclvfsってどんなもので、どう使えばいいんでしょうか? 意外と情報が少ないし、たまたま見つけたサンプルコードのほとんどがまともに動かないんですけど。
842 名前:デフォルトの名無しさん [2011/12/07(水) 20:00:14.15 ] SX-Windowでいい。 国産だし。
843 名前:デフォルトの名無しさん mailto:sage [2011/12/07(水) 20:06:01.06 ] zipとかjarみたいなもんだと勝手に想像 freewrapみたいなものを自前で実装とか
844 名前:デフォルトの名無しさん mailto:sage [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とかいろいろあるみたいだけど使ったことはない。
845 名前:本田 [2011/12/08(木) 23:16:45.72 ] >>841 Practical Programming in Tcl and Tk, 4th ed beedub.com/book/4th/ beedub.com/book/4th/Starkit.pdf beedub.com/book/4th/welch_examples.zip
846 名前:デフォルトの名無しさん [2011/12/10(土) 07:15:51.33 ] tclで'A'という文字からアスキーコード65を得るには、どうやればいいでしょうか?
847 名前:デフォルトの名無しさん mailto:sage [2011/12/10(土) 12:04:09.29 ] >>846 binary scan "A" c val puts $val
848 名前:デフォルトの名無しさん [2011/12/10(土) 13:17:19.43 ] >>847 ありがとうございます
849 名前:本田 [2011/12/17(土) 12:06:21.27 ] Graphics with TCL/TK www.youtube.com/watch?v=hHFOFefE1YM
850 名前:デフォルトの名無しさん [2011/12/24(土) 12:21:45.17 ] toplevelで作ったウィンドウを手で動かしてから、 wm withdrawで非表示にし、wm deiconifyで再表示させると、 最初に作られた位置に出現します。 (厳密に言うとそれよりちょっと右下) Tkの仕様なのかウィンドウマネージャの仕様なのか、 消えた時の位置に再表示されるのが自然だと思うんですが。 それともやり方が間違ってるんだろうか? 環境: Tk 8.4 Soralis 10 CDE 1.6.3
851 名前:デフォルトの名無しさん mailto:sage [2012/01/03(火) 19:11:53.53 ] >>5 さすがだねw
852 名前:デフォルトの名無しさん mailto:sage [2012/01/22(日) 19:54:12.53 ] 書けない?
853 名前:デフォルトの名無しさん mailto:sage [2012/01/22(日) 19:54:41.21 ] あれ、書けた。あけおめ。
854 名前:デフォルトの名無しさん mailto:sage [2012/02/01(水) 22:24:24.34 BE:30017423-2BP(1250)] ネタがなにも無くて暇だ
855 名前:デフォルトの名無しさん mailto:sage [2012/02/01(水) 23:51:44.54 ] 850には答えてやんないの?
856 名前:デフォルトの名無しさん mailto:sage [2012/02/02(木) 00:46:23.97 ] >>855 だってTk8.4もう使ってないし、CDEも使ったこと無いし、 Sorarisの環境も無いし、ウィンドウマネージャーのせいな気がするから、 環境が無いと確認のしようがないし、
857 名前:デフォルトの名無しさん mailto:sage [2012/02/04(土) 13:14:29.62 ] 850です。 ですよねぇ〜。 仕事のマシンで環境いじれないし、 Tcl/Tkなんて(自分以外)ほとんど使ってないからなぁー。
858 名前:デフォルトの名無しさん mailto:sage [2012/02/13(月) 21:11:55.61 ] Tclは実行前にバイトコードにコンパイルされ、高速化が図られていると、説明されています。 することにもよると思いますが、bash,perl,ruby,pythonと比べると速さはどうなんでしょう? プログラムミング未経験者の、素朴な疑問です。
859 名前:デフォルトの名無しさん mailto:sage [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 } }
860 名前:デフォルトの名無しさん mailto:sage [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
861 名前:デフォルトの名無しさん mailto:sage [2012/02/22(水) 15:59:53.47 ] >>858 Tclは最近のベンチマークサイトからは仲間外れにされてることが多いのでなかなか比較が見つからないけど、 比較的新しいサイトを見つけました。 goo.gl/6vXhj ちょっと信じがたい感じもしますが、ここによると Perl5 >> PHP > Ruby = Python2 >> Python3 >> Tcl みたいな感じですね。Tcl 8.4.19ですけど、8.5では劇的な速度向上はなかったと思うので、 大して変わらんのに対し、Rubyは1.9でかなり速くなったらしいので、 最新版で比べるとさらに分が悪い感じがします。 bashは、、、汎用言語といえるのかなあ。
862 名前:デフォルトの名無しさん mailto:sage [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とすることです。
863 名前:862 mailto:sage [2012/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の復権を願って、これで書き逃げさせていただきます。
864 名前:デフォルトの名無しさん mailto:sage [2012/02/24(金) 00:13:15.78 ] >>859 さんくすです。 おっしゃるとおり結局は,消す前に位置を保存して, 再表示した後で位置をもどすということで解決はしましたが, なんかすっきりしなかったんですよね。
865 名前:デフォルトの名無しさん mailto:sage [2012/02/24(金) 19:38:26.78 ] >>862 ベンチマークの内容は"abcd____________"という文字列がひたすらつながった4MB+alphaの文字列が1つの変数に格納されるというものです。 なんかベンチマーク用にあえて死ぬほど非効率な方法で実装されていますが、同じ結果を得たいだけなら100ms以下でできる方法があるので もうちょっと妥当なスクリプトだったらと思います。まあ、それでも負けてるのでしょうが。。。 862さんが作ろうとしているものはKAKASIという漢字->ローマ字変換プログラムを使って、いったんすべてASCIIにしてから処理するのがいいと思います。 goo.gl/EJYi その上で、bashよりもTclを使うメリットは、連想配列があることです。 ただ、連想配列を持つ言語はほかにいくらでもあるので、PerlでもRubyでも好きな言語を使えばいいと思います。 またbashではできないということでもないです。 bashやzshが気に入られてるのは補完機能などが充実してるからではないですかね。
866 名前:デフォルトの名無しさん mailto:sage [2012/02/24(金) 20:51:13.77 ] スクローラブルなウィンドウ(キャンバスウィンドウとか)内のアイテムを<B1-Motion>でドラッグ するときに、ウィンドウの端あたりまでドラッグしていくとその先の方向へスクロールしてくれる ようなのを実装したいんですが、参考になるコードスニペットないでしょうか?
867 名前:デフォルトの名無しさん mailto:sage [2012/02/25(土) 00:04:22.73 ] >>865 さん 全米が泣いた。 リナックスの世界へ案内しよう kakasi -Ha -Ja -Ka < test.txt rinakkusunosekaiheannaishiyou いろいろ試したのですが、案内のnが一つ少ないほかは完璧でした。 デフォルトがヘボン式なので、意図どおりです。感謝申し上げます。 打鍵数調べに速さは関係ありませんが、tclは8.4から最新バージョンだと、 20%くらい速くなっていそうですね。 news.mynavi.jp/news/2007/12/21/027/index.html
868 名前:デフォルトの名無しさん mailto:sage [2012/02/28(火) 15:49:05.74 ] >>867 パフォーマンスに関しては、一概には言えないんですよね。 wiki.tcl.tk/1611 wiki.tcl.tk/1616 総合成績では8.4が一番優秀だったりします。 私も速度は必要なくて、乗り換えの動機はライブラリが 8.4をサポートしなくなり始めてるということぐらいなんですが。
869 名前:デフォルトの名無しさん mailto:sage [2012/02/28(火) 21:11:00.69 ] lassign命だから8.4は愛せない
870 名前:デフォルトの名無しさん mailto:sage [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の方がいいんじゃ・・・ -
871 名前:デフォルトの名無しさん [2012/02/29(水) 16:09:13.53 ] >>861 試験したTCLのソースをみると単純な文字列置換に"regsub"函数を使っている 、ここを定石とおりに"string match"函数に置き換えると何百倍も速くなった。 (我輩の旧式機械で源リストを実行するとトンでもないことになるが、置き換えるとまともになる。) tclは8版から劇的に速くなったが、正規表現まわりは遅いまま。 その事情を知って意図的に弱点を突いてきたようだ。
872 名前:861 mailto:sage [2012/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分以上かける方法でやるなんて ばかばかしいよね。
873 名前:871 [2012/02/29(水) 23:28:59.71 ] tcl関係者はtcl 7.4->tcl8.1 で「劇速した」と云ったが ユーザーは「yes except正規表現」と云っていた。 マニュアルも気合が入っていない項目と馬鹿丁寧な項目が入り混じっているし。 良くも悪くも、ちぐはぐが多いみたいだ。好き嫌いは激しかろう。
874 名前:本田 [2012/03/04(日) 23:41:21.56 ] downloads.activestate.com/ActiveTcl/releases/8.4.19.6/ downloads.activestate.com/ActiveTcl/releases/8.4.19.6/ActiveTcl8.4.19.6.295590-html.tar.gz downloads.activestate.com/ActiveTcl/releases/8.4.19.6/ActiveTcl8.4.19.6.295590-linux-ix86.tar.gz downloads.activestate.com/ActiveTcl/releases/8.4.19.6/ActiveTcl8.4.19.6.295590-linux-x86_64.tar.gz downloads.activestate.com/ActiveTcl/releases/8.4.19.6/ActiveTcl8.4.19.6.295590-macosx-universal-threaded.dmg downloads.activestate.com/ActiveTcl/releases/8.4.19.6/ActiveTcl8.4.19.6.295590-win32-ix86-threaded.exe downloads.activestate.com/ActiveTcl/releases/8.4.19.6/ActiveTcl8.4.19.6.295590-win32-x86_64-threaded.exe downloads.activestate.com/ActiveTcl/releases/8.4.19.6/MD5SUM downloads.activestate.com/ActiveTcl/releases/8.4.19.6/SHA256SUM
875 名前:本田 [2012/03/04(日) 23:44:36.35 ] downloads.activestate.com/ActiveTcl/releases/8.5.11.1/ downloads.activestate.com/ActiveTcl/releases/8.5.11.1/ActiveTcl8.5.11.1.295590-html.tar.gz downloads.activestate.com/ActiveTcl/releases/8.5.11.1/ActiveTcl8.5.11.1.295590-linux-ix86-threaded.tar.gz downloads.activestate.com/ActiveTcl/releases/8.5.11.1/ActiveTcl8.5.11.1.295590-linux-x86_64-threaded.tar.gz downloads.activestate.com/ActiveTcl/releases/8.5.11.1/ActiveTcl8.5.11.1.295590-macosx10.5-i386-x86_64-threaded.dmg downloads.activestate.com/ActiveTcl/releases/8.5.11.1/ActiveTcl8.5.11.1.295590-win32-ix86-threaded.exe downloads.activestate.com/ActiveTcl/releases/8.5.11.1/ActiveTcl8.5.11.1.295590-win32-x86_64-threaded.exe downloads.activestate.com/ActiveTcl/releases/8.5.11.1/MD5SUM downloads.activestate.com/ActiveTcl/releases/8.5.11.1/SHA256SUM
876 名前:本田 [2012/03/04(日) 23:47:21.25 ] downloads.activestate.com/ActiveTcl/releases/8.6.0.0b7/ downloads.activestate.com/ActiveTcl/releases/8.6.0.0b7/ActiveTcl8.6.0.0b7.295590-html.tar.gz downloads.activestate.com/ActiveTcl/releases/8.6.0.0b7/ActiveTcl8.6.0.0b7.295590-linux-ix86-threaded.tar.gz downloads.activestate.com/ActiveTcl/releases/8.6.0.0b7/ActiveTcl8.6.0.0b7.295590-linux-x86_64-threaded.tar.gz downloads.activestate.com/ActiveTcl/releases/8.6.0.0b7/ActiveTcl8.6.0.0b7.295590-macosx10.5-i386-x86_64-threaded.dmg downloads.activestate.com/ActiveTcl/releases/8.6.0.0b7/ActiveTcl8.6.0.0b7.295590-win32-ix86-threaded.exe downloads.activestate.com/ActiveTcl/releases/8.6.0.0b7/ActiveTcl8.6.0.0b7.295590-win32-x86_64-threaded.exe downloads.activestate.com/ActiveTcl/releases/8.6.0.0b7/MD5SUM downloads.activestate.com/ActiveTcl/releases/8.6.0.0b7/SHA256SUM
877 名前:デフォルトの名無しさん mailto:sage [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 } # 呼ばれた回数に依存する処理 }
878 名前:デフォルトの名無しさん mailto:sage [2012/03/07(水) 22:30:41.71 ] >>877 ttp://wiki.tcl.tk/1532 の下から二番目のスニペットとか。
879 名前:本田 [2012/03/07(水) 23:08:53.76 ] >>877 singleton application wiki.tcl.tk/1558
880 名前:デフォルトの名無しさん mailto:sage [2012/03/09(金) 20:33:11.94 ] >>878 >>879 おふた方ともありがとうございます。 やっぱりそんな簡単にはいかないですね。 それにしても反応早すぎw
881 名前:デフォルトの名無しさん mailto:sage [2012/03/10(土) 11:07:27.49 ] 間違えた。 速すぎ。
882 名前:デフォルトの名無しさん mailto:sage [2012/03/14(水) 18:44:21.69 ] >>877 namespace大げさではけど、使いづらいとは思う。 もともと[incr Tcl]を取り込んだという割には、 名前空間付きの変数を作るitcl::scopeに相当するコマンドがなかったり、 プロシージャは見えるのに変数はvariableなしでは見れなかったりというのが使いづらい。
883 名前:882 mailto:sage [2012/03/14(水) 18:45:23.25 ] x 大げさではけど o 大げさではないけど
884 名前:デフォルトの名無しさん [2012/04/16(月) 17:32:28.78 ] tk_getOpenFile でショートカット指すとホンモノの名前が返ってきて読むとき便利だけど、ショートカット入ってたディレクトリーがどこだかわからない。どうすりゃ判るの?
885 名前:デフォルトの名無しさん [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
886 名前:デフォルトの名無しさん mailto:sage [2012/04/17(火) 11:28:02.15 ] >>884 wiki.tcl.tk/1060
887 名前:デフォルトの名無しさん [2012/04/17(火) 21:42:15.41 ] >>885 >>886 884です。貴重なコメントありがとうございます。 いずれにしてもかなり敷居が高そうですね。 取り敢えずは回避策を軸に考えます。
888 名前:デフォルトの名無しさん mailto:sage [2012/04/26(木) 15:47:16.82 ] >>887 全然敷居高くないよ。単に見た目が違うのを我慢してと言ってるだけ。 ::tk::dialog::file:: open というコマンドは、tk_getOpenFileと同じオプションを指定できるから オプションは同じでコマンドだけ置き換えればおk
889 名前:デフォルトの名無しさん mailto:sage [2012/05/01(火) 21:23:39.21 ] 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 が必要です。 www.hecl.org/ Tcl 似の超コンパクトな言語 Hecl の方も、内蔵のラインエディタ jLine が日本語入力の邪魔をしているようですが、こちらは完全に組み込 まれているので、ソース自体の書き換えが必要になります (この理由で、jLine を外せば問題が解決するかどうかまでは試していません)。
890 名前:デフォルトの名無しさん mailto:sage [2012/05/02(水) 23:32:02.54 ] configureがtclだと、、、?マジカヨ、、
891 名前:デフォルトの名無しさん [2012/05/04(金) 10:40:49.18 ] >>888 884です。ご教唆ありがとう。これで読むとショートカットは尻に".lnk"が付いているので区別できるようですね。 次はショートカット・ファイルからリンク先を取り出す方法に格闘します。
892 名前:デフォルトの名無しさん mailto:sage [2012/05/05(土) 00:53:02.81 ] >>891 ずいぶん難しいことしてるね。 Windowsのショートカットファイルはバイナリフォーマットだから自力で解析するよりtwapiを使うのがよいと思うよ。 goo.gl/9D9tI
893 名前:デフォルトの名無しさん [2012/05/06(日) 16:30:46.62 ] >>892 884です。何から何まで ありがとうございます。 尻が".lnk"のファイルは twapi::read_shortcut でホンモノの名前を白状させることができました。 お蔭様で、見掛けはしょぼく 中身が立派なスクリプトができました。
894 名前:デフォルトの名無しさん mailto:sage [2012/05/12(土) 09:00:26.16 ] ここ読んでる人たちはEDA関連の人たちが多いんだろうなー
895 名前:デフォルトの名無しさん mailto:sage [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とかのオブジェクトを自動でに開放してくれない(´・ω・`) どなたか手段わかりませんでしょうか
896 名前:デフォルトの名無しさん mailto:sage [2012/05/19(土) 00:05:40.60 ] おれもWindows7 64ビットにしたとき、 Tclも64ビットライブラリで作り直したかったけど、 依存する奴全部揃えられなくて諦めた。 まあ64ビットにしないといけないアプリじゃなかったし。 で、tcomみたいなOFFICEアプリ?とかを操作するのに 64ビットじゃないといけないの?答えになってないが。
897 名前:デフォルトの名無しさん mailto:sage [2012/05/19(土) 01:56:01.60 ] >>896 まあ、office操作自体は確かに64bitにする必要がないんです とあるソフトに32bit版と64bit版があって、 これにそれぞれ32bitと64bitのtclが組み込まれていているんですが、 自分が32bitで動くスクリプトを作った後に、 それをそのまま64bitに持っていったらdllの問題で組み込めなかった・・・ 悔しい。 という話です。。 64bitのPCに32bitのそのソフトをインストールすれば動作自体はするのですが。
898 名前:デフォルトの名無しさん mailto:sage [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
899 名前:デフォルトの名無しさん mailto:sage [2012/06/17(日) 21:24:30.09 ] ジオメトリーマネージャ(pack, grid, place)の働きが イマイチよくわかりません。通り一遍のことはぐぐれば わかりますが、ちょっと凝ったことをしようとすると どれを選んでどういったオプションを指定すればよいか いつも迷ってしまいます。 何かこうスッキリわかりやすく解説してくれてるとこって ないですかね。書物は、この手のものはたいてい 高額なのでちょっと手が出ないかな。。。
900 名前:デフォルトの名無しさん mailto:sage [2012/06/18(月) 07:52:40.33 ] >>899 僕も最初はあいまいなまま結果オーライで使ってたけど、Ruby/Tkの本が丁寧な解説で役立ったよ。 Rubyを256倍使うための本・界道編 goo.gl/YuZuF
901 名前:デフォルトの名無しさん mailto:sage [2012/06/18(月) 09:01:28.10 ] ┌─┐ │●│ └─┤ _ ∩ ( ゚∀゚)彡 ┌─┬⊂彡 │●│ おっぱい!おっぱい! └─┘
902 名前:デフォルトの名無しさん mailto:sage [2012/06/18(月) 22:46:47.84 ] >>900 256倍シリーズってまだあったんですね。 確かにあれはわかりやすいかも。 Rubyは盲点でした。
903 名前:デフォルトの名無しさん mailto:sage [2012/06/19(火) 06:41:21.59 ] grid最強 pack, placeは後方互換用と思ってよい …とtkdocsのサイトには書いてあった www.tkdocs.com/tutorial/grid.html
904 名前:デフォルトの名無しさん mailto:sage [2012/06/19(火) 19:32:26.30 ] >>903 packはともかくplaceは置き換えられない部分があると思うなあ。 右上とか右下にくっついて動くロゴみたいなのはgridだとかえって難しい気がする。 gridのコマ割り考えるのも結構面倒。
905 名前:デフォルトの名無しさん mailto:sage [2012/06/19(火) 22:00:48.41 ] pack,place,gridだけで配置するより、ある程度区切ったらframeを乗せて その中で個別にpack,place,grid使って配置した方が楽
906 名前:デフォルトの名無しさん mailto:sage [2012/06/19(火) 22:03:34.92 ] placeはゲームのようなドット単位で指定したりするときに便利。 俺はTkでそういうのを作る機会がなかったので使ったことがないけど。 gridが全てにおいて万能というわけでもない。
907 名前:デフォルトの名無しさん mailto:sage [2012/06/20(水) 14:33:31.82 ] place使ってプログレスバーを作ってる例ならあるよ。Ruby/Tkだけど。 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
908 名前:デフォルトの名無しさん mailto:sage [2012/06/22(金) 20:34:56.08 ] tclでテキスト処理して結果をxterm -e w3mで出力させたいのですが、以下のようにしても動きません。 どのようなやり方で出力させればよいでしょうか? % tclsh % set a " test test " % exec xterm -e "echo $a | w3m "
909 名前:デフォルトの名無しさん mailto:sage [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が整形したとおりに出力される。
910 名前:デフォルトの名無しさん mailto:sage [2012/06/30(土) 01:59:12.62 ] あ、xtermってあれか、Xのターミナルエミュレータか。 じゃあ、ちょっと違うかな。 リダイレクトのバリエーションでTclのチャネルを別プロセスに渡す方法とかあるみたいだから見てみたらいいかもしれない。 www.tcl.tk/man/tcl/tutorial/Tcl26.html
911 名前:デフォルトの名無しさん mailto:sage [2012/07/01(日) 08:06:09.94 ] >>909 ,910 909を見てて下を試しましたら、出力することができました。 % exec xterm -e "w3m << a $a " ありがとうございました。
912 名前:デフォルトの名無しさん [2012/07/28(土) 08:05:27.41 ] Tcl/Tk 8.5.12 Release Announcement July 27, 2012
913 名前:デフォルトの名無しさん [2012/08/02(木) 19:12:11.95 ] ActiveTcl 8.5.12.0 www.activestate.com/activetcl/downloads
914 名前:本田 mailto:sage [2012/08/02(木) 23:54:45.63 ] 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
915 名前:デフォルトの名無しさん mailto:sage [2012/09/12(水) 07:36:14.95 ] PTさん、8.5.12のtclkit作ってくれないのかなぁ
916 名前:デフォルトの名無しさん mailto:sage [2012/09/27(木) 00:17:38.23 ] pack [frame .f -background ""] -fill both -expand 1 ってやると,色々配置したウィンドウを見た目変えずに一気に無効にできる。 destroy .f で有効化。 だから何っていわれてもアレだけど。
917 名前:デフォルトの名無しさん [2012/10/05(金) 20:50:57.35 ] >>915 こんなんありますけど www.cqi.com.tw/coopermaa/tcl/20041107-01.doc
918 名前:デフォルトの名無しさん mailto:sage [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
919 名前:デフォルトの名無しさん mailto:sage [2012/11/20(火) 00:18:52.14 ] 保守?
920 名前:デフォルトの名無しさん [2012/11/26(月) 18:33:59.94 ] Latest Release: Tcl/Tk 8.5.13 (Nov 12, 2012)
921 名前:デフォルトの名無しさん mailto:sage [2012/12/08(土) 02:46:12.21 ] 今、html5がやろうとしてることって、もともとtcl/tkがやろうとしてたことだよね 何で政治的に負けちゃったんだろう
922 名前:デフォルトの名無しさん mailto:sega [2012/12/15(土) 17:34:24.88 ] expectもTCLだからここで聞いていいよね expectというかtclで、設定ファイルを読みたい bashのように、設定ファイルと見せかけて実は実行 でもいい ロードかインクルードの方法ってありますか?
923 名前:デフォルトの名無しさん mailto:sage [2012/12/15(土) 20:09:19.04 ] >>922 sourceじゃダメなのか? >>920 ActiveTcl来た PTさんのtclkitも来た
924 名前:デフォルトの名無しさん [2012/12/17(月) 13:28:41.57 ] そろそろ8.6がリリースされるんじゃないかと思って 今年4月にPro Studioのサブスクリプションを自腹で1年延長してみたものの、 8.6に対応するときはメジャーアップデートでアップグレード対象外になる可能性に今頃気付いた。 そんなもったいないことしてる人は他にいないと思うが。。。 でもいいの。ActiveTclだけでもリリースし続けてくれてるだけで満足でございます。
925 名前:デフォルトの名無しさん [2012/12/24(月) 22:46:13.42 ] ついにTcl/Tk 8.6が12/20にリリースされました。
926 名前:デフォルトの名無しさん mailto:sage [2012/12/26(水) 21:31:39.97 ] SL4AでTcl動かそうと思ったけど、うまくいかんな。つまらん
927 名前:デフォルトの名無しさん mailto:sage [2013/01/18(金) 03:10:56.99 ] ubuntuが出すタブレットPCでも動くのかな?
928 名前:デフォルトの名無しさん [2013/01/21(月) 19:38:03.19 ] ActiveTcl 8.6.0.0リリースだよ。
929 名前:デフォルトの名無しさん mailto:sage [2013/02/19(火) 07:16:05.65 ] 特定のwidgetだけ再描画することは出来ないでしょうか? textに数千行読む時にprogressbarを更新したいけど、その他の再描画は無駄なので止めたいのです。 updateだと全体を再描画になります。
930 名前:デフォルトの名無しさん mailto:sage [2013/02/21(木) 22:20:12.72 ] 特定widgetだけ再描画する方法は分からないけど、 textへの追加を1行ずつしないで、全部を一旦変数に入れて一発でinsertする、じゃダメなの?
931 名前:デフォルトの名無しさん [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命令
932 名前:デフォルトの名無しさん [2013/02/23(土) 21:44:59.02 ] Tkの部品はconfig命令を使うと色や形の現在値は変更できるが、Tkは高速化の為に画面への反映は遅延表示させているので途中経過を表示せずにいきなり最終結果が表示されたりする。 プロバー表示では現在値を強制表示させる為にupdate命令を使うのが定石だがこれが禁じ手になると結構難しいか。 @930番さんの様にまとめて一発表示 Aupdate命令間隔をを10秒置きとか極端に長くする Bその他の部品はforgetオプション等で退避しておいて後で表示 C? ところでTkのtext表示は普通はそんなに遅くはないが改行文字なしの長い行を表示させると異様に遅くなるみたい。
933 名前:デフォルトの名無しさん mailto:sage [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
934 名前:デフォルトの名無しさん mailto:sage [2013/03/09(土) 03:48:33.45 ] 最初にファイルサイズ取得して、サイズに応じてupdateする行数変更するとか。 5000行のファイルに5行おきにプログレスバーを更新するってのが...
935 名前:デフォルトの名無しさん mailto:sage [2013/03/12(火) 17:51:41.39 ] tcl8.6爆速なんだけど↓からだいぶ状況変わったの? d.hatena.ne.jp/satosystems/20121228/1356655565 この速さはただの再帰もループになってる? 5桁とかになると1分以上かかって他に大きく離される これはループにしても変わらないから多倍長ライブラリの性能かな
936 名前:デフォルトの名無しさん mailto:sage [2013/03/12(火) 18:29:56.59 ] すまん関数名同じだからかんちがいした fib 38は固まるわ
937 名前:デフォルトの名無しさん [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] }
938 名前:デフォルトの名無しさん mailto:sage [2013/03/15(金) 22:54:42.21 ] >>937 exprの引数を{ }で囲むだけでだいぶ違うな
939 名前:デフォルトの名無しさん mailto:sage [2013/03/15(金) 23:06:47.65 ] 初心者が初心者に嘘を教えるスレです
940 名前:デフォルトの名無しさん mailto:sage [2013/03/15(金) 23:08:30.06 ] exprの引数を{ }で囲むのは8.6以前からの定石。 2回評価させないようにする。
941 名前:デフォルトの名無しさん [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秒!!。鈍足で正確でした。なっとく 速度、精度、価格、安直さ、どれも一つの側面でしかなく、それらを総合的に評価して最適ソフトを選択することが肝要だと思う。
942 名前:929 mailto:sage [2013/03/24(日) 10:09:02.93 ] ありがとうございます。規制されてて遅くなりました。 progressbarはupdate idletasksで表示が更新されましたが、古いPCのWindowsXPでは5〜6秒程度updateしないと メニュー部分が白くなって、その後はprogressbarも更新されなくなります。(update idletasksではダメ) ということで、数秒おきにupdateしないとprogressbarが更新されません。 見た目を重視しているので無駄はあきらめることにしました。
943 名前:デフォルトの名無しさん [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.
944 名前:デフォルトの名無しさん [2013/04/03(水) 22:36:01.28 ] Tcl/Tk 8.5.14 Release Announcement April 3, 2013
945 名前:デフォルトの名無しさん mailto:sage [2013/04/09(火) 21:46:20.56 ] >>5 の予想を裏切り2014年まで持つ勢いだが、 ActiveTcl 8.6.1.0とTclDevKit 6.0の登場が変えてくれることを願う。