09/05/15 22:39:19
URLリンク(dishaw.org)
462:デフォルトの名無しさん
09/05/16 09:24:34
>>461
ありがとうございます! 早速見てみます
463:デフォルトの名無しさん
09/06/08 20:51:13
ちょっと相談に乗ってくください
Windowsでdqkitを使ってexeにラッピングしてるのですが
set cmd "wish C:/tcl/main.exe/sub.tcl $args &"
eval exec $cmd
例えばですが ↑みたいな感じでsubプロセスを動かしたいのですが動かないんですよね
URLリンク(www.interq.or.jp)
> Starpackにラップした実行形式(.exe)は、execコマンドあるいはパイプで実行できない。
これに引っかかってるのかなーと思うのですが
別の書き方でどうにか出来ないでしょうか?
スレッドって使ったこと無いのですがスレッドで出来るのかな
464:デフォルトの名無しさん
09/06/08 22:12:18
Tclのexe化ツールは複数あるけど、基本的にはTcl側に仮想的なパスを見せ、
実際のファイルアクセスまでにそれを書き換えるという方法だからね。
外部プログラムを実行するのは最終的にシステムコールをとおしてTclの外に行っちゃうから、
システム(この場合はWindows)から見えているパスじゃないといけなくなるだろう。
で、さっきも言ったようにexe化ツールは複数あるから、共通の土台で話ができないよ。
exe化ツールのドキュメントやフォーラムの漁ってみるべし。
465:デフォルトの名無しさん
09/06/08 22:35:31
どもです
いくつか比較して今のdqkitが一番適してる感じだったのですが
他の方法も検討してみます
とりあえず現状で思いついた案としてはsub側も.exeにラッピングして
exeを2個体制で・・・スマートじゃないなぁ
466:デフォルトの名無しさん
09/06/08 22:41:14
一次情報に当たれと言ってるんだ。
自分の頭の中だけじゃ解決しない問題だろ。
467:デフォルトの名無しさん
09/06/09 19:18:33
ActiveStateのツールじゃだめなのかいな?
468:デフォルトの名無しさん
09/06/09 19:50:12
BLTと日本語を使いたいのでなるべくならdqkitが良かったんですよね
Freewrap日本語化版とかTclPro1.3じゃBLTを使うのが大層面倒っぽかったので。
ActiveStateのってTclDevKitでしょうか?
とりあえずBLT使えるか心配なのと仕事でも使いたいのでライセンスも心配ですが
ちょっと試してみます
ありがとうございました
469:デフォルトの名無しさん
09/06/10 00:50:29
wishをサブプロセスで動かすの前提なら別にexeにしなくてもいいんじゃないの?とか言ってみる
470:デフォルトの名無しさん
09/06/10 18:33:01
>>468
ちょっと話が変わって申し訳ないんだけど、BLTってまだメンテされてるんでしょうか?
自分も使おうかと思ってたんですけど、どっかでメンテされてないって読んだので、
躊躇している次第です。
471:本田
09/06/10 20:26:49
>>470
CVSはまだメンテナンスされてる様だ。
URLリンク(blt.cvs.sourceforge.net)
472:デフォルトの名無しさん
09/06/10 21:22:33
躊躇って何を躊躇すんの?使ったら何かを失うわけでもないのに
473:デフォルトの名無しさん
09/06/11 08:03:07
>>472
業務用のシステムなので、継続的なメンテナンスが見込めそうなのはやはり使いにくい
のですよ。
474:デフォルトの名無しさん
09/06/13 19:55:17
SolarisのCDEでwish使ってるんですが、
Tkのウィンドウだけマウスポインタが通過するだけで
最前面にraiseされてしまいます。
他のウィンドウは大丈夫なのに、なんでだろ。
CDEの設定では
『ポインタでウィンドウをアクティブにするけど、
ウィンドウ順は変えない』
としているので、Tk以外のウィンドウはクリックしない限り
raiseはされないんですが、Tkだけマウスが通っただけで
ウィンドウの前後関係が変わってしまいます。
475:デフォルトの名無しさん
09/06/14 11:09:44
->465
ご本家のTclkitのページ(URLリンク(www.equi4.com))に
Don't expect exec and popen to work on files in VFS
と書いてあるので、execはイモ筋(dqkitでも多分ダメ)
やりたいことがよくわからないがdqkitはMT版があるので、
複数のプログラムを同時に別のスレッドで走らせる筈。
476:デフォルトの名無しさん
09/06/17 17:31:59
TclOOで自分が作ったクラスのサブクラスって、どうやって作るんでしょうか?
477:デフォルトの名無しさん
09/06/17 21:51:18
oo::class create mobile {
method bell {} {puts PURURURU}
}
oo::class create softbank {
superclass mobile
}
478:デフォルトの名無しさん
09/06/18 10:09:49
>>477
ありがとうございました。理解できました。
検索しても見つけられなかったので助かりました。
479:デフォルトの名無しさん
09/06/23 05:40:16
なんか最近tcllibがあわただしいと思ってたら、
GSoC 2009のプロジェクトでgraph操作の実装をやってるところだったのね。
URLリンク(wiki.tcl.tk)
480:デフォルトの名無しさん
09/06/23 12:51:03
印刷サポートもやるみたいね
481:デフォルトの名無しさん
09/06/25 16:42:13
URLリンク(wiki.tcl.tk)の{*}を使いたいのですが、
set l [list a b c [list e d]]
puts {*}$l
とやると、
wrong # args: should be "puts ?-nonewline? ?channelId? string"
というエラーが返ってきます。Tclのバージョンは8.5.7なのですが、
{*}の使い方が間違っているのでしょうか?どなたかご教示下さい。
482:デフォルトの名無しさん
09/06/25 21:05:19
いちいちeval使うのタリーから、リストを引き数に展開するようなコマンドとか欲しくなくね?
たとえば{*}$stdargとか
ってことを書いてるんであって、どこかにそんな実装があるという話じゃないです
483:デフォルトの名無しさん
09/06/25 21:48:00
えっ、これTcl8.5の新機能だよ。しかも新コマンドでもなくて正真正銘Tclの「文法」に対する拡張。
484:デフォルトの名無しさん
09/06/25 22:00:23
で、481が間違っているのはputsコマンドの使い方のほうですね。シェルのechoとかとは違います。
% puts a b c {e d}
wrong # args: should be "puts ?-nonewline? ?channelId? string"
% puts $l
a b c {e d}
485:デフォルトの名無しさん
09/06/25 22:21:46
>>481
puts {*}$l
は
puts a b c [list e d]
として実行されるからエラーになってあたりまえだ!
>>480
印刷ってなに?グラフの印刷?
486:481
09/06/25 22:26:27
>>484
>>485
ありがとうございました。
根本的に間違っていました。死にたいorz
487:デフォルトの名無しさん
09/06/30 22:18:47
ns-2でシミュレーションやりたいんでtcl覚えたいんだが、
オヌヌメの参考書とかあるのかよ?
488:デフォルトの名無しさん
09/07/01 00:14:21
Tcl/Tkデスクトップリファレンス
Effective Tcl/Tk
今となってはちょっと古いがわしはこれでおぼえた。
489:デフォルトの名無しさん
09/07/01 11:48:26
俺は言語の設計者が書いた本で勉強(日本語版)。
オヌヌメだけど、今では入手できないかも。
490:デフォルトの名無しさん
09/07/02 23:04:24
オレはggrksだけでなんとかしてる。
だから進歩が中途半端なのか。
491:デフォルトの名無しさん
09/07/04 00:53:29
俺の場合は具具って最初に出てきたもっとTcl/Tkってサイトで感触つかんで、
文法の意味が理解できればあとはマニュアルで十分って感じ。
ActiveTclのマニュアルで桶。
意味さえわかればdllやshared libraryで拡張するのも簡単だし。
ただ、Tclは印刷できないのがなぁ。
492:デフォルトの名無しさん
09/07/04 01:19:23
ns-2は確かにotclだが、次期バージョンのns-3はpythonになるそうな。
さよならotcl
493:デフォルトの名無しさん
09/07/04 16:50:59
流れ豚切りますが、
昔、tcl/tk8.0.5+日本語パッチ
というバージョンでは、kinput2 での日本語入力の制御ができました。
変換の開始・終了とか、入力モードの変更とか。
kinput_start などというコマンドがあったりします。
最近のバージョンはできるんでしょうか?
494:デフォルトの名無しさん
09/07/04 23:49:44
どんだけ昔の話だよ・・・。
495:デフォルトの名無しさん
09/08/01 14:27:22
切り出したい関数を必要な関数;サブ関数をインライン展開してくれるツール
があれば教えて下さい。変数名も可能なかぎり縮められたらと思います。
シェルに依存しないバイナリ化擬きが意図です
496:デフォルトの名無しさん
09/08/01 19:55:51
>>495
複数のTclスクリプトを1つのスクリプトにまとめる仕組みはあるようだけどな。
tcltest-2.3.0.tmとかにまとめられてるよね。
たぶんそういうツールで十分そうな気がする。
497:デフォルトの名無しさん
09/08/01 20:52:47
>>495
何がしたいか全然理解できない。インライン展開ってC++のインライン関数みたいなことを
言ってるのか?ていうか関数を切り出すってどういう意味?サブ関数はTclには無いし、
サブって何をさして言ってるの?それにシェルに依存しないって意味もわからない。
execコマンド使わずにTclで完結させればいいだけのことじゃないのか?なんなの?
ていうかバイナリ化もどきって要するに難読化したいってこと?ていうかそれが、関数の
切り出しとかいうのとどういう関係が?もうはっきり言って日本語で頼む。
498:デフォルトの名無しさん
09/08/02 14:08:59
TCL インタプリタのない環境でも動くスタンドアロンなアプリを作りたい、
でさらにサイズも最適化したい、ということでわ?
499:デフォルトの名無しさん
09/08/02 15:45:35
関数ライブラリから欲しいコマンドだけパッケージ化して切り出したい。
イメージ的にはinfo proc bodyですが関数の依存関係をトレースして必要十分な関数群も抜き出す。
関数をfalt化したり、冗長性を除去し、サイズ縮小化、難読化、再利用防止もしたい。
TCLインタプリタに依存したくないのでpure tclのパッケージ化したい。(見た目普通のテキストの関数定義)
ソースは1元管理してアプリ毎に合成したい。
500:デフォルトの名無しさん
09/08/02 21:23:26
Tclインタプリタに依存したくない、といった時点でTclインタプリタの実行ファイルにマージすることを意味するから、
シェル(OS)に依存するようになると思うんだがどうか?
501:デフォルトの名無しさん
09/08/02 21:53:14
ていうか変数名を短くしてサイズ縮小化とか、どんだけカツカツの環境なんだお
502:デフォルトの名無しさん
09/08/02 22:55:40
>>499
きっと8bitマイコンにでも乗せたいんだお。
PC-8001とかMZ-80で変数名削るのに苦労したお!!
503:デフォルトの名無しさん
09/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:デフォルトの名無しさん
09/08/06 21:38:42
>>503
vistaの8.5.6と8.6b1で試したけど、火編の常みたいなのが出てきた。
505:デフォルトの名無しさん
09/08/06 22:13:24
>>504
ありがとうございます。
Vistaの8.5.6と8.6b1では動くのですね。
XP機しかないのですが、とりあえず8.6b1で試してみます。
506:デフォルトの名無しさん
09/08/07 11:42:03
Windows VistaでClearTypeのメイリオを使っています。
その環境でTk 8.6のmenuを試してみたところ、メニュー・バーのフォントはClearTypeの効いた
ものになるのですが、メニュー・アイテムについてはそうなりません。
まぁ、メニュー・アイテムにClearTypeのフォントを設定すれば一応は解決できそうな感じはする
のですが、システムが使っているフォントを取得するようなコマンドはありますでしょうか?
507:デフォルトの名無しさん
09/08/10 18:13:43
>>506
メイリオを使っていたらcanvasをpostscriptに変換できないので、
if {[font configure TkDefaultFont -family] == "メイリオ"}
とかしてデフォで使用されるフォントの判別をしてメイリオだったらarialにするとかやってます(windowsとLinux両方で動かすためにこんなことしてます)。
ただ、メニューバーがメイリオになっているのにメニューアイテムのフォントだけ違うのという現象にこれで対処できるかどうかは不明ですが。
508:デフォルトの名無しさん
09/09/05 20:16:32
名前空間がどうしてもよくわからない
俺様かんたんに猿でも分かるように教えてください
509:デフォルトの名無しさん
09/09/05 20:53:49
>>508
あらら、名前空間なんて導入されたんだ。
C++では前からあったけど。
510:デフォルトの名無しさん
09/09/05 22:53:17
モジュール空間のことを言ってるんじゃないのかね。
確かに独特だわな。
511:デフォルトの名無しさん
09/09/06 21:07:57
namespace だから名前空間じゃないの?
512:デフォルトの名無しさん
09/09/06 22:13:13
>>511
モジュール書くときくらいしかほとんど用事がないんだがな。
513:デフォルトの名無しさん
09/09/10 20:59:54
初心者です。便乗質問(?)なのですが、自分で作ったライブラリは皆さん
パッケージ(モジュール?)にしてるのでしょうか?
自分はその方法が良く分からないので、とりあえずsourceコマンドで読むという
方法で凌いでます。
ところで、amazon.comによると、Tcl言語の設計者が書いた本の改訂版が出る
ようですね。Tcl/tk 8.5に対応した内容に書き改めたとのこと。
Tclが日本でも再度注目されたりしないでしょうか。
514:デフォルトの名無しさん
09/09/12 14:17:45
>>513
パッケージも結局内部ではloadやらsourceやらで読み込んでたと思います。
利点は、パスを書かずにパッケージ名だけで呼び出せるから、
位置関係を気にしなくてよくなることぐらいでしょうか。
書き方は >>1 の日本語サイトの1つめと2つめにそれぞれ解説があります。
515:デフォルトの名無しさん
09/09/12 21:44:21
>>514
ありがとうございます。参考になりました。
ただ、開発途上のモジュールについても、皆さんパッケージ化されているのでしょうか?
それなりの手順を踏まないとパッケージ化はできないようなので、モジュールの開発途上では、
やはり単にsource とかで読み込むのが普通なのでしょうかね?
516:本田
09/09/13 00:13:43
>Tcl言語の設計者が書いた本の改訂版が出るようですね。
90円台/ドルの円高なので今が廉く買うチャンスかも。
517:本田
09/09/13 00:42:31
package - パッケージのロードとバージョン制御機能。
URLリンク(www.freesoftnet.co.jp)
518:本田
09/09/13 02:48:50
>>515
ウェルチさんの本によると、
packageは複数のアプリケーションから利用する時に使うそうです。
519:デフォルトの名無しさん
09/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:デフォルトの名無しさん
09/09/13 21:36:11
>>518 >>519
packageの件、ありがとうございました。開発が一段落するまではsourceでやってみます。
521:デフォルトの名無しさん
09/09/13 21:40:11
うむ。そうするがよい
522:デフォルトの名無しさん
09/09/16 13:33:42
>>519
(Tclのnamespaceが)
>全然独特じゃないと思うけど・・・。
普通、よくあるnamespaceの使い方は宣言的なものが多いんだけど、
Tclのnamespaceはただのコマンドなので、実行文的な書き方になる。
namespace eval { }
の中でnamespace export ...
とか呼び出すのとか、かなり変に感じる。
523:デフォルトの名無しさん
09/09/16 14:23:14
変に感じるのはそれだけじゃないだろう?(笑)
深く考えないのが吉。
524:デフォルトの名無しさん
09/09/16 20:25:51
>>521
審議中
525:デフォルトの名無しさん
09/09/16 20:38:09
>>522
それを言い出すとTclは制御文もコマンドだし・・・
526:デフォルトの名無しさん
09/09/22 16:44:34
すいません。Perl質問スレでも書きましたが、
こちらのほうが適切そうだったので、こちらで質問させてもらいます。
Perl TkのTextウィジェットを使って
文字列の入出力をする方法はどのようにするのでしょうか?
Entryウィジェットを使ったサンプルはWeb上から見つけたのですが、
Textウィジェットを用いたものはないもので。。。
527:デフォルトの名無しさん
09/09/22 18:09:24
>>526
Perl/Tkは触ったこと無いけど、
確かオライリーからまさにその本が出版されていたと思った。
それを購入するのが最終的には早いと思う。
日本でPerl/Tkは、ひどくマイナーだから。
あるいは、Ruby/Tkなら日本語の書籍が何冊か出版されているし、
Web/MLなどで情報の収集が容易だから、そちらに乗り換えるとか。
もちろんTcl/Tkでもオケー
ゴメン、これくらいしかレスできねえヨ
# いいレス返してあげておくれ > 他の住人さん達
528:デフォルトの名無しさん
09/09/23 07:29:32
Perl/Tkでググれ、としか
529:デフォルトの名無しさん
09/09/23 08:48:16
だな。一発でこんなん出たけど
URLリンク(www.geocities.jp)
530:本田
09/09/23 18:19:46
Mastering Perl/Tk
URLリンク(oreilly.com)
URLリンク(examples.oreilly.com)
URLリンク(examples.oreilly.com)
mastperltk_examples.tar.gz
の中にサンプルプログラム有り。
531:本田
09/09/23 18:23:42
Past, present and future of Tcl virtual filesystems Steve Huntley
URLリンク(www.tcl.tk)
。
532:デフォルトの名無しさん
09/09/23 19:10:25
>>530
一瞬、「サンプルプログラム祭り」に見えたw
Tcl/TKはいつまで経ってもマイナー言語のままだから、
簡単にこんなことができますよーって紹介はもっとあってもいいと思うけどね。
533:本田
09/09/23 19:12:57
P2P A Metafile System over P2P File-sharing Network
URLリンク(spa.jssst.or.jp)
。
534:本田
09/09/23 21:51:59
>>531
The FILTR:
(File Inventory for Loading, Transfer and Recovery)
URLリンク(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:デフォルトの名無しさん
09/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文字に変更できれば解決かなと思ったのですが…
URLリンク(homepage3.nifty.com)
によると、「ピクセル」「mm」「inch」「cm」の4種類でしかtab stopsは設定できないと書いてあるし、
無理矢理ピクセルで指定してみても、TAB文字がそのまま「4文字相当の幅を常時取って」行の中に入ってしまうしで…
536:デフォルトの名無しさん
09/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:デフォルトの名無しさん
09/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:デフォルトの名無しさん
09/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:デフォルトの名無しさん
09/10/01 10:19:09
うーん…
Perl/Tkには-tabstyleが実装されてないみたいですね…
指定すると「そんな指定は知らねえよ」とエラーが出る…
URLリンク(cpansearch.perl.org)
↑「XXX not yet implemented?」とか書いてあるし…
URLリンク(www.tkdocs.com)
↑ここには、指定できる文字列としてtabstyleが書いてあるんだけどなあ…
勉強も兼ねてTcl/Tkで書き直してみるかな…
それとも Python + Tkinter も試してみるか…
540:デフォルトの名無しさん
09/10/01 19:17:49
Tk使うならTclが一番安心だよね。やっぱり
541:デフォルトの名無しさん
09/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:デフォルトの名無しさん
09/10/01 21:52:01
tkのデバッグってどうしてます?
10時間くらいで落ちたり、処理速度が低下します。
543:デフォルトの名無しさん
09/10/01 22:29:37
>>542
???
tk4.2の頃は、そういうことあったけど……
8.3以上では直ってるはずだと聞いてるお?
ちなみに、
落ちると言っても、「tkが動かなくなる」だけ。
原因と対処法は自分で見つけた。もちろん、報告した。
処理速度の低下は、Xサーバーに問題があったので、ちょっと弄った。
544:デフォルトの名無しさん
09/10/02 23:38:25
変数に入っている値が整数(として扱える)かどうか調べる方法はありますか。
545:デフォルトの名無しさん
09/10/02 23:44:20
string is integer $x
546:デフォルトの名無しさん
09/10/03 23:31:56
>>545
やりたいことができた!他にも色々調べられるのね。ありがとうです(>_<)
547:デフォルトの名無しさん
09/10/05 18:16:08
>>545-546
まあその場合そのとおりなんだが、
Tcl/Tkの各コマンドのヘルプページはちょっと読みづらいよね。
PHPのヘルプ並みに使いやすく整備してくれるといいんだが……。
548:デフォルトの名無しさん
09/10/05 19:52:40
>>547
tclshでstring is って打つとコマンドの文法が出る。
string is a b って適当に打つと、クラスの一覧が
ズラズラ表示される。これで十分。
549:デフォルトの名無しさん
09/10/27 11:40:30
TCLスクリプトを自前アプリに実装したいのですが、
なにかお勧めの書籍(web)を紹介頂けませんか?
550:デフォルトの名無しさん
09/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:本田
09/10/30 22:58:47
>>549
C言語からTclを呼び出すには
URLリンク(www.geocities.co.jp)
552:デフォルトの名無しさん
09/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:デフォルトの名無しさん
09/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:デフォルトの名無しさん
09/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:デフォルトの名無しさん
09/11/03 23:15:44
{
}
の中の改行は文の終わりと認識されず、改行文字を含む文字列と認識されます。
forは引数を4つとるコマンドです。
for {set i 0} {$i < $N} {incr i} {
puts $i
}
は、たまたま第4引数が改行を含む文字列であるというだけのことです。
556:デフォルトの名無しさん
09/11/04 10:50:05
>>555
有り難うございます。
>>改行文字を含む文字列と認識されます。
for文などは普通は見易くする為に>>553の様に改行を入れて記述すると思います。
この様な記述をした場合には、第4引数が複数行になる為、
Tcl_Eval()を利用して1行づつ実行する事はできないという理解で良いですか?
557:デフォルトの名無しさん
09/11/04 10:53:58
>>556
というかC関数をTcl側に公開して、それをfor文で普通に呼び出せばいいんじゃね?
そしたら何度も呼び出すこと考える必要ないでしょ。
558:デフォルトの名無しさん
09/11/04 13:26:48
>>557
ありがとうございます。
>>C関数をTcl側に公開して
これの方法が現時点では分かりませんが、これが出来ればいけそうな気がしてきました。
早速調べて試してみます。
559:デフォルトの名無しさん
09/11/04 20:18:53
>>556
見やすくするためではありません。
for文が第四の引数を解釈するに当たり、改行までをひとつのコマンドと引数列とみなして実行するためです。
よって{}中の改行は飾りではないです。
560:デフォルトの名無しさん
09/11/04 20:24:23
>>558
Tcl_CreateObjCommand
引数の解釈はTcl_GetIntFromObjなどを使う。
返値はTcl_SetObjResultで。
Tcl_CreateCommandなどのTclオブジェクトを扱わない形式では
数値やリストなど全部文字列に変換されて渡されるので、速度・精度の面で使わないこと。
(Tclオブジェクトだとリスト型やdouble型を保持したままやりとりする)
561:デフォルトの名無しさん
09/11/04 20:30:04
んで、ぶっちゃけ言うと
Tcl_Eval(interp, "for {set i 0} {$i < 5} {incr i} {puts $i\nputs hogehoge}");
562:デフォルトの名無しさん
09/11/04 23:17:21
>>559-561
色々有り難うございます。
とりあえず、Tcl_CreateCommand()を使用してTCLスクリプトからCの関数を実行し、
パラメータを渡す事まで確認できました。
TCLで実現したい事は、「とりあえず」は出来たと思います。
残りは戻値や速度面を考慮してTcl_CreateObjCommand()などを調べて見たいと思います。
563:本田
09/11/21 06:24:51
URLリンク(www.tcl.tk)
>Tcl/Tk 8.5.8 Nov 16, 2009
564:デフォルトの名無しさん
09/12/11 19:14:03
Jaclてなんて発音すれば良いの?
565:デフォルトの名無しさん
09/12/11 21:05:06
ジャッカル
566:デフォルトの名無しさん
09/12/16 23:21:52
tclでhtmlを取り扱うウイジェット実装はいくつかあるみたいですが
お勧めとか、デファクトスタンダードなものとか
あるのでしょうか?
567:本田
09/12/18 00:55:20
>>566
>デファクトスタンダード
incrtclだと思う。
URLリンク(incrtcl.sourceforge.net)
568:デフォルトの名無しさん
09/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:デフォルトの名無しさん
09/12/28 17:45:58
折角国際化されてるんだし
だれかTcl/Tkでmigemo使えるようにしろよ~
570:デフォルトの名無しさん
09/12/28 20:24:16
IMの制御がきちんとできるようにしてくれぇ。
571:デフォルトの名無しさん
09/12/29 09:37:18
結構この頃気に入っているのですが
ckて使っている人いますか?
なんか語りませんか
572:デフォルトの名無しさん
10/01/02 10:50:57
>> 571
大昔、CTk URLリンク(wiki.tcl.tk) は使ったことがある。
ckも2001年頃から開発が止まっているみたいけど、8.5.8環境でもちゃんと動く?
573:デフォルトの名無しさん
10/01/02 20:43:14
CkというのはURLリンク(www.ch-werner.de) なのですが
ページによると8.0-8.4が恐らくターゲットかと。うちでは8.0で動いています。
キャンバスなど対応しないウイジェットもあるので制限は多いですが、
Guiのプログラムとコンソールのプログラムが一つのプログラムでかけるのが
凄いです。(tcletも使えば一石三鳥?)
CTKはどんな感じでしたか?
Ckの場合難点はcursesを使う部分の日本語が上手く表示できないかんじです。
putsなど標準入出力ではOkですが。
574:本田
10/01/05 22:51:35
>Ckの場合難点はCkの場合難点はcursesを使う部分の日本語が上手く表示できないかんじです。
cursesってUNICODEに対応してないのかな?
575:デフォルトの名無しさん
10/01/06 23:26:35
ncursesw とかじゃん?
576:デフォルトの名無しさん
10/01/06 23:35:47
>>573
CTk使っていたのは日本語パッチ版が使いたくて8.0で粘っていたころなので、さすがに覚えていない。
当時はMulti-Byte文字を使えるcursesもほとんど無くて、日本語は最初から諦めていたと思う。
Multi-Byte文字はCkとcursesの2段階で対処が必要だと思うし、8.0だとそもそも多国語対応していない
ような気がするので、tcl内部とcursesと実際の表示(xtermとか)のencodingを合わせないとだめだよね。
がんばってね。
577:デフォルトの名無しさん
10/01/18 15:28:42
アプリケーション拡張言語としてのTCLってどうして普及しなかったんですか?
578:デフォルトの名無しさん
10/01/18 15:34:43
>>577
いや~、あんなもん、tkが付いてなかったら使いたくねえ!
579:デフォルトの名無しさん
10/01/18 15:39:50
>>577
tk以上の発明品が生まれなかったからじゃないかな。
結局Tcl/Tkが作られた当時はアプリのスクリプト言語をサポートするという発想が新しすぎたんだと思うよ。
後スクリプト言語としては文字列と整数のデータ型の区別がされてなくて微妙に使いにくいとか。
元々HTMLの埋込み言語として開発されたPHPが、発展してフレームワークが作られるようになると
HTMLの生成がテンプレートエンジン越しになって本来の埋込スクリプトが全く使われなくなったりね。
開発当初の目的と実用される用途が一致しないのはよくあること。
580:デフォルトの名無しさん
10/01/18 22:27:44
ストールマンがTclの普及自体に横槍出したのもでかいんじゃないかな
581:デフォルトの名無しさん
10/01/19 00:46:35
>>577
GNUに嫌われたから
582:デフォルトの名無しさん
10/01/19 12:33:16
>>580
guileも全然普及してないな。
583:デフォルトの名無しさん
10/01/19 21:15:09
GIMP は SIOD から TinyScheme に変わったんだよね。
Guile 哀れw
584:デフォルトの名無しさん
10/01/26 17:16:13
S-Langというのもあったけど。
585:デフォルトの名無しさん
10/02/03 23:03:23
TclはPythonに喰われちゃったんだと思う
586:デフォルトの名無しさん
10/02/14 10:09:59
今ならさらにLuaもあるしな。
587:デフォルトの名無しさん
10/02/14 20:52:36
>>585
蛙と蛇だしな・・・
588:デフォルトの名無しさん
10/02/14 22:29:44
デスクトップマスコットを作ろうかと思っているのですが、
ウィンドウを透過させて、画像だけを表示させるようなことは
tcl/tkでできるのでしょうか?
例えばこんな感じのを実現したいです
URLリンク(cgi32.plala.or.jp)
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:デフォルトの名無しさん
10/02/15 01:13:58
osxはよくわからんけど、wm overrideredirect . 1してみたらどうなる?
590:デフォルトの名無しさん
10/02/15 08:16:09
やってみましたが、
ウィンドウのサイズ、移動が出来なくなりますが、
タイトルバーは消えませんでした。
591:デフォルトの名無しさん
10/02/15 21:37:46
>>588
バージョンくらいかけよアホ。これでも読んでろ
URLリンク(wiki.tcl.tk)
592:デフォルトの名無しさん
10/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:デフォルトの名無しさん
10/03/13 16:38:51
ほしゆ
594:デフォルトの名無しさん
10/03/17 02:28:47
C++/Tcl 凄いな。
595:デフォルトの名無しさん
10/03/17 23:05:28
>>594
ksk
596:本田
10/03/17 23:34:20
>>592
ActiveTcl8.5.8.0.291595-win32-ix86-threaded.exe
597:592
10/03/18 21:26:34
>>596
ActiveState ポリシー変えたらしくて、Community Edition(Free)は最新バージョンしか
入手できなくなってます。
しばらくはtclkitでしのぎます。
598:本田
10/03/18 22:48:35
>>597
ActiveTcl8.5.8.0.291595-win32-ix86-threaded.exe でgoogleれ。
599:デフォルトの名無しさん
10/03/18 22:54:45
本田氏の本気を見た(いりこだし的な意味で)
600:592
10/03/18 23:39:47
>>598
それらしいURLを3つくらい見てダメだったので諦めていましたが、15番目で見つかりました。
どうもありがとう。
601:デフォルトの名無しさん
10/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:デフォルトの名無しさん
10/04/27 23:35:32
perl tkは知らんけどtcl/tkで定期的に処理を実行する時はafterコマンドを使う
リファレンスマニュアルとか調べてみ
603:デフォルトの名無しさん
10/04/28 06:29:41
どううまくいかないのかを書きなさい。
604:デフォルトの名無しさん
10/04/29 06:13:30
>>602
ありがとうございます。ちょっと調べてみます。
>>603
上記ソースの場合、立ち上がりすらしない。
sleepをコメントアウトしたら1行づつ出力されずに、
溜め込んだ情報を一気に吐き出すといった感じです。
605:デフォルトの名無しさん
10/04/29 15:45:57
>>601
描画はevent loop(MainLoop)で実行されると思うので、MainLoopの前でsleepしたら
描画出来ないと思う。
ループを切り出して、適当なeventを契機に呼ばれるようにすれば良いと思う。
どうしても今のループにしたければ、updateすると動くかもしれない。
606:デフォルトの名無しさん
10/04/29 21:57:57
>>605
updateでできました!
ありがとうございました_( . _ . )_
607:デフォルトの名無しさん
10/04/29 23:30:28
テクルトックで読み方あってる_
608:デフォルトの名無しさん
10/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:デフォルトの名無しさん
10/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:本田
10/05/02 23:45:07
>>608
Tk Documentation Table of Contents
URLリンク(www-users.cs.umn.edu)
fileevent Execute a callback when a file becomes readable or writable
URLリンク(www-users.cs.umn.edu)
after Execute a command after a time delay
URLリンク(www-users.cs.umn.edu)
tkwait Wait for variable to change or window to be destroyed
URLリンク(www-users.cs.umn.edu)
IO high level interface to Tk's 'fileevent' mechanism
URLリンク(www-users.cs.umn.edu)
TK/AFTER support class for Tk::Widget::after
URLリンク(www-users.cs.umn.edu)
611:デフォルトの名無しさん
10/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
10/05/21 21:14:28
ActiveTcl 8.5.8.2が出ていたので試してみましたが、8.5.8.1同様IMEが動くとwishが
落ちます。
一応、連絡しておきます。
613:デフォルトの名無しさん
10/06/02 19:48:15
Tcl/Tk超初心者なんですが教えて欲しいことがあります。
tcomを使ってInternetExploerでホームページを表示させて
そのホームページのソースを取得してソースを表示させたいのですが
ホームページの表示までは上手くいったんですがソースの取得ができません。
わかる方いらっしゃったらぜひ教えてください、お願いします。
途中までのソースなんですが
package require tcom
set ie [::tcom::ref createobject "InternetExplorer.Application"]
$ie Visible 1
$ie Navigate "URLリンク(www.yahoo.co.jp)"
ここまではできたんですがこのあとyahooのホームページのソースの取得方法
がわかりません、わかる方いらっしゃったらぜひお願いします。
614:デフォルトの名無しさん
10/06/02 22:19:30
ソースは普通にHTTPでとってくればいいんじゃないの?
615:デフォルトの名無しさん
10/06/03 09:36:16
>>614
返答ありがとうございます、初心者なのでHTTPでの取り方すらわからないのです。
もともとTcl/Tkでどうやってホームページの表示をさせるかがわからなくて
いろいろ調べた挙句tcomにいきついた次第です。できればtcomでできたらいいなー
というのが自分の希望なんですが、調べてみたんですがいまいちわからなくて
ここに行き着いたということです。
616:デフォルトの名無しさん
10/06/03 09:39:40
>>615
ほい。ぐぐれ。
URLリンク(tmml.sourceforge.net)
617:デフォルトの名無しさん
10/06/03 13:05:59
>>616
ありがとうございます、やってみます
618:本田
10/06/05 05:37:34
>>615
URI utilities
URLリンク(tcllib.sourceforge.net)
619:本田
10/06/05 06:11:07
>>618
package require uri
set u URLリンク(www.yahoo.co.jp)
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:本田
10/06/05 14:29:34
>>613
optcl
URLリンク(wiki.tcl.tk)
URLリンク(www.patthoyts.tk)
URLリンク(www.patthoyts.tk)
WippleWobble - A Mini Web Browser (for Windows)
URLリンク(wiki.tcl.tk)
621:デフォルトの名無しさん
10/06/30 07:31:52
初心者でpython2.6(tkinter)とtcl/tk 8.5を弄ってます。
widgetに入れず、Canvasのcreate_textに設定するwidthの様にheightを擬似的にでもどうにかして作りたいのですが何か良い方法は無いでしょうか。
ご教示お願い致します。
622:デフォルトの名無しさん
10/07/02 01:54:21
>>621
heightを作るっていう意味がわからない
623:デフォルトの名無しさん
10/07/02 08:08:21
pixel指定でその範囲に入らない状態の時は語尾に"..."を追加する物を作りたいです。
適当なtextの量自体を指定するしかないのでしょうか。
文字によってpixel幅が違うので結局label等(幅を取得したら捨てる。)
に入れ込むtextを一文字ずつlabelに入れて、そのlabel幅を取得し、
その幅から指定したpixel分のtextをcreate_textに入れ込めば出来そうですが・・
余りに遠回りで・・。
もう少し簡潔に文字数を制限したいのですが
tkがどう動作しているのか未だ良く分かっていません。
624:本田
10/07/02 22:52:59
>>623
プロポーショナルフォントを使わずに、
等幅のフォントを使えば、
計算が簡単になりそうです。
625:デフォルトの名無しさん
10/07/03 03:57:59
621,623です。
>>624
有り難うございます。
プロポーショナルフォントというんですね・・初めて知りました。
因みに自分足らない頭で623の内容をpythonのIDLEで書いてみたら
異様に重い上に、良く分からないエラーが出ました・・とほほ
後程、等幅フォントで再度書いてみます。
fontの高さには全角、半角も無いので
どこで改行されてるかさえ、得られれば
簡潔になるのでは、と
今の所textに直接pixel指定で改行を追加するモジュールを探しています。(どれもカラムっぽいですが・・)
font metricsも面白そうなのでついでに調べてます。
626:デフォルトの名無しさん
10/07/03 10:56:10
>>623
font measureで文字列のpixel幅を得られる
のは?
627:デフォルトの名無しさん
10/07/03 11:49:40
621,623,625です。
>>626
有り難うございます。
font measureで出来そうです。
628:本田
10/07/03 17:32:43
>>627
老婆心ながら、
一つのスクリーン上に一つのカンバスを使って複雑なウイジェットを作る以外に、
まず一つのスクリーンを複数のフレームに分割して、
一つ一つのフレーム上にメニュー、テキストやカンバスを配置する方法もあります。
629:デフォルトの名無しさん
10/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:デフォルトの名無しさん
10/07/19 14:33:01
xspin.tclというソフトを使用し始めたのですが、.pmlの拡張子をフリーのパッドソフトに関連付けたら、
xspin.tclを起動しようとしたら「このファイルの種類を開くプログラムを選択してください」とでるようになってしまいました。
どのプログラムを選択すればいいか分からないし、戻し方も分からないので助けてください。
631:630
10/07/19 14:48:22
自己解決しました
632:デフォルトの名無しさん
10/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:デフォルトの名無しさん
10/08/12 11:58:36
>>632
サーバ(Win/Linuxじゃないよ)用に自分でコンパイルした8.5.8でも同じ結果になった。
ソースを簡単に眺めたところ、内部32bit型→64bit型に拡張する処理は見つかったけど
なぜ情報落ちするのかは判らなかった。
バグ報告するのが良いと思う。
ひょっとして、64bit環境(OS)だと問題無いのかもしれない。(うちは全部32bit環境)
634:デフォルトの名無しさん
10/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)).
URLリンク(www.tcl.tk)
マニュアル嫁。
635:633
10/08/14 00:43:23
>>634
う。そっちか。
まったく思いもしませんでした。笑ってやってください。
636:本田
10/10/02 02:16:11
[Activetcl] ActiveTcl 8.5.9.0 released
URLリンク(code.activestate.com)
637:デフォルトの名無しさん
10/10/11 19:15:11
IMEとの衝突は修正された?
638:592
10/10/12 07:22:49
>> 637
直ったようです。
text widgetで漢字を入力しても落ちなくなりました。
639:デフォルトの名無しさん
10/10/12 19:36:18
>>638
それは、ActiveTclのどのバージョンから?
640:592
10/10/14 00:15:17
直ったのは ActiveTcl 8.5.9.0
641:デフォルトの名無しさん
10/10/15 13:32:10
Tkのテキストボックスの文字列が変化したとき、それを知らせるコールバックはどれですか?
642:デフォルトの名無しさん
10/10/16 14:52:07
>>641
package require Tk
pack [text .text]
bind .text <Key> {puts "Pressed %K"}
URLリンク(www.tcl.tk)
マニュアル嫁
643:Perl忍者 ◆M5ZWRnXOj6
10/10/21 23:40:37
Perl/Tkやってるやつでてこいこら
644:Perl忍者 ◆M5ZWRnXOj6
10/10/21 23:50:25
おめえハッカーだろ 本田
645:Perl忍者 ◆M5ZWRnXOj6
10/10/30 18:13:15
Perl/TKでEntryフォームに文字を入力しようとすると
入力できません
なんか前にそれで設定をして うてるようにしたんですが
scimなんとか 入力はできるんですが 日本語入力ができません
どうすればいいですか教えてください
646:デフォルトの名無しさん
10/10/30 18:17:43
>scimなんとか 入力はできるんですが 日本語入力ができません
この文章どうやって打ってるんだよw
647:Perl忍者 ◆M5ZWRnXOj6
10/10/30 18:35:08
だからscimは、はいってんの
Perl/Tkでの入力のときできない
XMODIFIERS="@im=none"とやってもできない
なんで 教えて
648:Perl忍者 ◆M5ZWRnXOj6
10/10/30 18:36:20
XMODIFIERS="@im=none"
とやったら入力できるようになるけど
日本語入力ができない
重要:「日本語入力ができない」
教えて
649:デフォルトの名無しさん
10/10/30 18:55:11
ウヒョー
650:デフォルトの名無しさん
10/11/06 21:07:46
Perl/Tkなんてまだ使ってるやついんだな・・・。アホかと・・・
651:デフォルトの名無しさん
10/11/08 00:35:04
canvasにpolygonやlineで書いた絵を画像ファイルでセーブする方法はありますか?
652:デフォルトの名無しさん
10/11/08 00:45:32
標準Tkでも昔からPostscriptでセーブできる。拡張もいろいろ
653:デフォルトの名無しさん
10/11/08 10:11:47
Postscript以外は、できないでしょうか?
654:本田
10/11/08 21:51:18
>>653
> Postscript以外は、できないでしょうか?
GhostscriptでPostscriptをPDFやPNGに変換できるよ。
655:デフォルトの名無しさん
10/11/09 00:35:08
1 imgで画面上に表示してる部分はビットマップに変換できる。
2 tkpathっていうcanvasと互換性のある拡張がある。
656:Perl忍者 ◆V8M/4amdko
10/11/10 18:58:25
こたえられねえのかよつかええねえなかす
657:デフォルトの名無しさん
10/11/11 21:34:13
653の質問をしたものですが、例えばコマンドラインで
アクティブウインドウのスクリーンショットを取る外部アプリを起動すればできますか?
できればbmp,jpg,gif等に変換したいので。
658:デフォルトの名無しさん
10/11/12 09:48:34
Print Screen キーを押してからペイントで・・・ってのがお手軽かと。
*.psからフィルタで変換の方がスマートだけど。
659:デフォルトの名無しさん
10/11/12 13:28:10
実用的には、そうですがPostScriptは、使う人もPostScriptの環境が必要なので。
PSからの変換もいろんなソフトを使いましたが、思った様に上手くいきません。
逆に変換フィルタで良いのがあれば、教えてください。
660:デフォルトの名無しさん
10/11/12 13:34:56
>>659
canvasの内容をSVG化して書き出す方法が紹介されてる。
URLリンク(wiki.tcl.tk)
他にはImageMagickを操作して直接画像を作るかだなぁ。
661:デフォルトの名無しさん
10/11/12 21:31:10
>>660
これは、凄い。
itemgetで情報をもってきて、imageで再描画してるみたいだ。
でも、このやり方だとXBM情報とかは再生できませんね。
662:デフォルトの名無しさん
10/11/14 20:28:32
tkにはワークシートとかスプレッドシートのようなものはあるんですか?
663:デフォルトの名無しさん
10/11/14 20:53:56
あるよ。
664:本田
10/11/16 06:10:49
Spreadsheets in Tcl-Tk
URLリンク(wiki.tcl.tk)
665:本田
10/11/18 08:32:31
TCLによるXMLおよびWeb Servicesのプログラミング、第1回: 入門編
URLリンク(www.ibm.com)
666:本田
10/11/25 06:14:36
Instancier des objets COM avec Tcom
URLリンク(wfr.tcl.tk)
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:デフォルトの名無しさん
10/11/25 21:53:26
>>663
>>664
お答えくださいってどうもありがとうございました。
たいへん参考になりました。
668:デフォルトの名無しさん
10/11/26 21:06:15
コチョコチョ
669:本田
10/11/28 11:24:10
[Tcl-announce] ActiveTcl 8.6.0.0 Beta 4 released
URLリンク(code.activestate.com)
670:本田
10/11/28 15:00:49
John Ousterhout
Professor (Research)
Department of Computer Science
URLリンク(www.stanford.edu)
671:一応ティクラー
10/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:デフォルトの名無しさん
10/12/05 01:02:12
>>671
モニタはみ出たらどうやんの?
このやりかただと他のウィンドウが重なっててもうまくいかないんだよな。
673:本田
10/12/06 23:51:47
PLplot
URLリンク(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
URLリンク(tuvalu.santafe.edu)
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:本田
10/12/06 23:53:03
Cpptcl
URLリンク(tuvalu.santafe.edu)
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:デフォルトの名無しさん
10/12/07 21:17:06
>>671
ありがとうございます。
676:デフォルトの名無しさん
10/12/07 21:18:20
ところで、Tcl8.5.9でファイルのバイナリセーブの際に
fconfigureで -translation binaryとしてもファイルの最後に0x0aが出るんだけど。
これは、バグ?それとも回避方法がありますか?
677:デフォルトの名無しさん
10/12/12 17:07:13
>>676
それ以外のバージョンでは出ないってこと?
678:本田
10/12/12 23:29:57
[TCLCORE] ActiveTcl 8.5.9.1 released
URLリンク(code.activestate.com)
679:デフォルトの名無しさん
10/12/15 21:18:44
英語もロクに読めないへたれなのですが、
Tkの日本語リファレンスってどこかにないでしょうか?
8.3対応っぽいのはぐぐったら見つかりましたが、
今使っている8.4とは微妙に違っている気がします。
680:デフォルトの名無しさん
10/12/16 11:49:49
>>676
puts -nonewline
681:デフォルトの名無しさん
10/12/16 22:11:23
>679
URLリンク(www.ne.jp)
682:デフォルトの名無しさん
10/12/18 19:28:30
>>680
ありがとうございます。
683:デフォルトの名無しさん
10/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
10/12/19 04:13:51
5.10.1を入れてみたけどダメだった。昔使えてたと思ったのは勘違いだったみたい
もしくは極めて特定のバージョンだけがIwidgetsを含んでいたか
Strawberry Perl を入れてみたけど cpan Tcl でエラーが出て Tkx まで入らない
なんかダメっぽい…
まあ元々、Tcl/Tkの成果物を横から掠め取ろうとしてるようなものですし
基本的なところが動くだけでも凄いのかもしれないですね…>hoge/Tk
Tkの真の力を発揮したかったらTcl/Tk使え、ということか…
685:683
10/12/19 09:08:50
連続カキコして申し訳ない
解決しましたので一応報告を
環境変数 PERL_TCL_DL_PATH で tcl85.dll を指定すれば行けるみたいです。スレ汚しスマソ
686:デフォルトの名無しさん
10/12/20 05:26:01
Tcl/Tkのスクリプトをexe化したいのですが
sdx.batってどこにあるんでしょう? というかどれが最新版なんでしょう?
URLリンク(code.google.com)
tclkitsh , tclkit , sdx.kit はこれが最新版かと思うんですが
sdx.bat は見つからず…
どこから入手すればいいんだろう?
687:デフォルトの名無しさん
10/12/20 10:07:44
URLリンク(www.equi4.com)
@tclkitsh sdx.kit %1 %2 %3 %4 %5 %6 %7 %8 %9
内容はこんだけ。更新されてないけど今でも使えるよ。
688:デフォルトの名無しさん
10/12/20 10:52:19
>>687
ありがとうございます。助かります
中身見てズッコケました
これならバージョンどうこうなんて関係ないですな…㌧でした
689:デフォルトの名無しさん
10/12/21 20:44:41
これは、凄い。使わせてもらいます。
690:デフォルトの名無しさん
10/12/21 23:01:00
>>681
ありがとうございました。助かります。
EUCだったんですね。
691:本田
10/12/23 10:59:09
TcomExcel - Excel utility package
URLリンク(www.posoft.de)
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:本田
11/01/09 21:31:18
Sockspy
URLリンク(sockspy.sourceforge.net)
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:本田
11/01/10 20:15:30
Odbcisql is a windowing SQL processor for databases with ODBC interfaces.
URLリンク(wiki.tcl.tk)
fURLリンク(ftp.tcl.tk)
fURLリンク(ftp.tcl.tk)
TclODBCでnvarcharを使えるようにする
URLリンク(reddog.s35.xrea.com)
URLリンク(reddog.s35.xrea.com)
URLリンク(sourceforge.net)
URLリンク(msdn.microsoft.com)(VS.85).aspx
694:お父さん
11/01/11 21:16:24
>651 canvasにpolygonやlineで書いた絵を画像ファイルでセーブする方法はありますか?
→確かめた訳ではないけどこんなものがあるらしい
pdf4tcl dumping canvas to pdf
使えるフォントが英文用の3種のみなので日本語はだめだが、純tclでpdfするのはすごい。
695:デフォルトの名無しさん
11/01/11 21:18:45
そんなもん入れんでも標準でepsにできるじゃまいか・・・
vista+ActiveTclではフォントをArialとかにしないとeps化できないけどな~(MS UI Gothicが悪い?)
696:本田
11/01/12 07:01:49
>>693
Microsoft ODBC Desktop Database Drivers
URLリンク(msdn.microsoft.com)
Text File Driver Programming Considerations
URLリンク(msdn.microsoft.com)
Text File Data Types
URLリンク(msdn.microsoft.com)
SQLGetInfo Returned Values for Text Files
URLリンク(msdn.microsoft.com)
Other Text File Driver Programming Details
URLリンク(msdn.microsoft.com)
Defining Text Format (Text File Driver)
URLリンク(msdn.microsoft.com)
Schema.ini File (Text File Driver)
URLリンク(msdn.microsoft.com)
697:本田
11/01/12 23:18:16
mysqltcl - Tcl Mysql Interface (Version 3.05
URLリンク(www.xdobry.de)
MySQL 5.1 リファレンスマニュアル
13.11. CSV ストレージエンジン
URLリンク(dev.mysql.com)
CSV ストレージエンジンはコンマ区切りの値を使ったフォーマットでデータをテキストファイルに保存します。
24.1. MySQL Connector/ODBC
URLリンク(dev.mysql.com)
698:本田
11/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.
URLリンク(msdn.microsoft.com)
ADO (Visual Fox Pro oledb) - read .dbf with tcom
URLリンク(wiki.tcl.tk)
699:本田
11/01/15 15:15:07
SourceForge.JP、個人向けGitリポジトリ/ストレージサービス「PersonalForge」をリリース
URLリンク(sourceforge.jp)
OSDNは1月13日、同社の運営するオープンソースソフトウェア開発サイト「SourceForge.JP」において、
個人向け開発支援ツール「PersonalForge」をリリースした。
個人用Gitリポジトリおよびファイル頒布用のストレージサービス(ファイルマネージャ)が提供される。
Git ユーザマニュアル (バージョン 1.5.3 以降用)
URLリンク(www8.atwiki.jp)
Git
URLリンク(wiki.tcl.tk)
gitk
URLリンク(wiki.tcl.tk)
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:本田
11/01/16 12:13:38
>>699
Sun Yiyi氏のGit Source Control Provider for Visual Studio 2008/2010の紹介
URLリンク(www.infoq.com)
Git Source Control Provider
URLリンク(visualstudiogallery.msdn.microsoft.com)
>>698
Microsoft Jet SQL リファレンス
URLリンク(office.microsoft.com)
Microsoft Jet 4.0 データベース エンジン ドライバを初期化する
URLリンク(office.microsoft.com)
外部データのWindows レジストリ設定
URLリンク(office.microsoft.com)
ODBC アクセスのために Microsoft Jet データベース エンジンを設定する
URLリンク(office.microsoft.com)
Microsoft OLE DB Provider for Jet で接続プロパティを使用する
URLリンク(office.microsoft.com)
テキスト データ ソース ドライバを初期化する
URLリンク(office.microsoft.com)
701:本田
11/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.
URLリンク(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:本田
11/01/21 22:18:38
Miscellaneous Tcl packages
URLリンク(vectorstream.com)
Packages using the Tcl >= 8.5 module system
703:本田
11/01/24 06:41:26
Soar (認知アーキテクチャ)
URLリンク(ja.wikipedia.org)
Soar(SOAR)とは、カーネギーメロン大学の John Laird、アレン・ニューウェル、Paul Rosenbloom が作成した認知アーキテクチャの一種。
認識とは何かという観点と、それに基づいた人工知能用のプログラムアーキテクチャの観点から構成される。
1983年に最初に作成され、1987年に論文として発表されて以来、多くの人工知能研究者が人間の行動の様々な観点の認知モデルを作成するのに Soar を用いている。
Welcome to the Soar Home Page
URLリンク(sitemaker.umich.edu)
URLリンク(ai.eecs.umich.edu)
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.
URLリンク(sourceforge.net)
704:本田
11/01/30 12:22:00
Tcl 8.5 Network Programming
URLリンク(www.packtpub.com)
[PDF]
Sample chapter - Tcl 8.5 Network Programming
URLリンク(www.packtpub.com)
Tcl 8.5 Network Programming [ペーパーバック]
URLリンク(www.amazon.co.jp)
705:デフォルトの名無しさん
11/02/04 21:47:25
wish8.4を使っています。
set pipe [open "|hoge"]とパイプを開いて、
場合によりhogeを途中で終了させたいのですが、
close $pipeやexec kill [pid $pipe]とやると、
どうしてもApplication Errorのダイアログが勝手に出てしまいます。
もう少し穏便に終了させたいのですが、この手のエラーを抑制するにはどうすればよいでしょう?
706:デフォルトの名無しさん
11/02/04 22:11:44
catch
707:デフォルトの名無しさん
11/02/05 11:36:25
過疎スレ(過疎言語?)かと思ったら質問に20分でレスが付くとは。
GJすぐるw。本人じゃないけど礼を言いたいよ。
708:デフォルトの名無しさん
11/02/05 14:37:39
>>706
ありがとうございます、例外の捕捉ができるのですね。
709:デフォルトの名無しさん
11/02/05 23:58:42
このスレじゃないけど質問から1分で的確な回答が付いてたのを見たことがある
710:デフォルトの名無しさん
11/02/06 00:03:35
そういうのは自演だから
711:本田
11/02/06 17:02:07
Great Unified Tcl/Tk Extension Repository
URLリンク(www.flightlab.com)
712:デフォルトの名無しさん
11/02/13 08:27:10
>>707
たまに本田氏が本気を出す時がある。
いりこ出汁的な意味で。
713:デフォルトの名無しさん
11/02/14 22:33:41
話題は無いけど監視はしてる
714:本田
11/02/16 06:58:49
My Home Page: Jean-Luc Fontaine
URLリンク(jfontain.free.fr)
Software (source, documentation, miscellaneous):
For Tcl versions 8.3.x and 8.4.x:
tclperl
a Perl package for Tcl
URLリンク(jfontain.free.fr)
TclPerl/TclPython
URLリンク(www.ellogon.org)
tclpython
a Python package for Tcl
URLリンク(jfontain.free.fr)
TclPerl/TclPython
URLリンク(www.ellogon.org)
715:本田
11/02/19 23:56:32.45
Tcl/Tk Stuff
URLリンク(www.cs.nott.ac.uk)
Tcl interface to the NJS JavaScript interpreter library (see njs-javascript.org). Note: LGPL licensed.
URLリンク(www.cs.nott.ac.uk)
716:本田
11/02/20 23:10:04.75
URLリンク(downloads.activestate.com)
URLリンク(downloads.activestate.com)
URLリンク(downloads.activestate.com)
URLリンク(downloads.activestate.com)
URLリンク(downloads.activestate.com)
URLリンク(downloads.activestate.com)
URLリンク(downloads.activestate.com)
URLリンク(downloads.activestate.com)
URLリンク(downloads.activestate.com)
URLリンク(downloads.activestate.com)
URLリンク(downloads.activestate.com)
URLリンク(downloads.activestate.com)
URLリンク(downloads.activestate.com)
URLリンク(downloads.activestate.com)
717:本田
11/02/22 21:20:38.31
>>715
Embed javascript in Tcl
URLリンク(code.google.com)
This project creates a Tcl extension to embed a javascript interpreter (Spidermonkey) in a Tcl/Tk application.
718:本田
11/03/26 00:26:40.20
Ayam
URLリンク(ayam.sourceforge.net)
The current stable version is 1.19, released 16. Mar 2011.
719:デフォルトの名無しさん
11/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
11/04/03 15:37:22.20
/bin/ls: *.txtにアクセスできません
の間違いです。すんません。
721:本田
11/04/03 21:24:48.73
tkcon.tcl使ってみたら?
722:デフォルトの名無しさん
11/04/04 23:37:12.86
globとか。
723:デフォルトの名無しさん
11/04/05 22:34:50.19
>>719
OSは?
724:デフォルトの名無しさん
11/04/06 10:52:07.57
>>719
eval exec ls [glob *.txt]
725:デフォルトの名無しさん
11/04/17 23:05:54.75
Tcl、GoogleのNative Clientに対応した「NaTcl」を発表
URLリンク(slashdot.jp)
> スクリプト言語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:デフォルトの名無しさん
11/04/17 23:17:37.46
昔Tcletってあったよね。
727:デフォルトの名無しさん
11/04/18 09:11:17.63
>>726
今でもある
728:デフォルトの名無しさん
11/04/19 00:21:24.65
すらどで話題になりなおかつそこそこコメントが付いてることにワシは感動しておるw
まだ見放されてなかったw
729:デフォルトの名無しさん
11/04/20 15:53:49.10
ペイントソフトをつくろうと思っています
TkCanvasではTkcLine等を用いたベクタ形式の画像処理しかできないようですが
BMPファイル画像等の任意のピクセルの値の読み書きといった
いわゆるペイント系の処理はどのWidgetを使えば実装できるのでしょうか
ご教示お願いします
730:デフォルトの名無しさん
11/04/27 20:32:05.36
できますよ
731:デフォルトの名無しさん
11/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:デフォルトの名無しさん
11/05/07 22:56:08.08
バイナリファイルを読み込んで、編集して、別名で書き込むにはどうしたら良いでしょうか。
open、binary format、binary scan、puts、getsあたりを使えばできるだろうと思い、試行錯誤したのですが
どうしてもうまくいきません。
Tclは書籍(特に和書)が少ないのでwebの情報が頼りですが、
思ったような情報が見つからず困っています。
733:デフォルトの名無しさん
11/05/08 00:39:37.94
そのコマンド列にfconfigureコマンドが無いのが気になった。
734:デフォルトの名無しさん
11/05/08 00:55:01.94
>>733
確かにfconfigureも必要かもしれませんね。
できれば一部のデータを置換して別名で保存するようなサンプルが見てみたいです。
735:デフォルトの名無しさん
11/05/08 01:34:03.82
まず、試行錯誤してみたコードを貼り付けてみたらどうですか
適当な1バイトを読んでその値を2倍して別ファイルに書き込むのは13行くらいでできた。
736:デフォルトの名無しさん
11/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
11/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
11/05/08 01:56:24.08
737のスクリプトはIM000000というファイルの20110214911005を99887766554433に置換して
COPYDCMという名前で保存するだけです。
Tclではその程度ですら自分にはできません。
739:デフォルトの名無しさん
11/05/08 02:01:45.23
少なくとも
fileID2 にも -translation binary が必要で、puts に -nonewline オプションが必要だともう。
740:736
11/05/08 02:06:42.32
>>739
ご指摘の通りにしたら正常に動作しました。
これがわかれば置換等の編集をして保存することも難しくないかもしれません。
頑張ってみます。
ありがとうございました。
741:733 735 739
11/05/08 02:15:08.51
どういたしまして。
Pythonが使えるのになぜTclなんだという疑問がありますが、Tcl使いが増えるとちょっとうれしい。
742:デフォルトの名無しさん
11/05/10 20:13:53.27
あるディレクトリ内にあるファイルのパス名のリストを得るにはどうしたら良いでしょうか?
同じ階層だけであればglobで簡単にできますが、
下層にあるディレクトリ内のファイルも全て対象にしたいのです。
743:デフォルトの名無しさん
11/05/10 21:29:56.14
globを再帰でつくる
とか、
Tcllibパッケージのfileutilを使う
package require fileutil
::fileutil::findByPattern . -glob *
744:デフォルトの名無しさん
11/05/12 00:00:56.94
Tcl/Tkによるバイナリエディタ
URLリンク(reddog.s35.xrea.com)
745:デフォルトの名無しさん
11/05/19 00:16:38.55
>>741
自分はこれからTcl/Tkを覚えようかとしてるんですが、この言語けっこう恵まれてません?
まぁ、自分のニーズもあるんですが、
・スクリプトで、GUIを手軽に書ける
・グラフの描画ライブラリがある(クリック可能)
・他言語との連携ができる
・単独で動作するバイナリができる
・言語仕様が簡単
・クロスプラットフォーム
・オープンソース
・枯れてる
この条件だとPythonでもよかったんですが、Pmw.Bltはちと不安で…。
自分でメンテ+拡張しようにも、結局内部でTkコマンド呼んでるだけだったんで、なら、ということで。
746:デフォルトの名無しさん
11/05/22 00:30:34.87
なぜかユーザーは少ない。最近はちょっと増えてきた気もするが
8.3~8.4のころは本当に見向きもされてなかった
747:デフォルトの名無しさん
11/05/22 23:15:17.27
PythonでTkinterを介してTkを利用するのって難しすぎじゃね?
Tcl/Tkに慣れすぎると、Tkinterが煩わしくて仕方ない。
どうしてもPythonを使わざるをえない場合は仕方ないけど
できるだけTcl/Tkでやりたくなる。
748:デフォルトの名無しさん
11/05/23 23:08:54.27
まあPython使うときはTk以外の選択肢いっぱいあるのでTk使わなくてもいいんでは
749:デフォルトの名無しさん
11/06/08 22:15:40.29
Tclってfork()できないのがつらい。
TclXはちょっと...
750:デフォルトの名無しさん
11/06/09 20:54:44.14
誰かWin/Linuxでドラッグ&ドロップができるようになる拡張、
8.5以降に対応しているので知らんかね…
とりあえずTkDND 2.2を試して見てるんだけど、8.5には対応
してないらしく、何ヶ所かバグを潰してXConvertSelectionまで
辿り着いたとこで、手詰まった。
※XConvertSelectionをLD_PRELOADでフックして、ちゃんと
Timeを与えるようにしたのにtimeoutになる、なぜだ…
751:デフォルトの名無しさん
11/06/11 15:06:12.77
TkDNDのfixかなり粘ったけど、これは無理。
Tk本体のselection getもtext/uri-listに対応してなかったり、かなり根が深そう。
これ修正するくらいだったら、一から実装したほうが多分早い。くそぅ。
752:デフォルトの名無しさん
11/06/12 13:33:18.93
誰か詳しい方、Tcl_CreateThreadについて教えてください…
拡張の処理に時間のかかる部分をThread化して、終了をvwait bgstatとかで
待とうとしてるんですけど、URLリンク(www.tcl.tk)のマニュアルには
「スレッドは親のinterpに触ってはいけない」とか書いてあるんで、スレッドから
set bgstatすることはできないようなのです。
このあたり、普通はどういう処理をするんでしょうか?
サンプルコードの場所なり、このソース読めば判るんじゃね、でも構わないんで、
なにかヒントをお願いします。
(vwaitのEXAMPLEにあるsocketコマンドは勘弁してください、挫折しました)
753:デフォルトの名無しさん
11/06/12 17:44:41.87
>>752
Tcl_CreateThread()ということは、Cで拡張を書いている?
だったら、Tcl_AsyncMark()が使えると思う。
Tclのthreadコマンドだったら、thread(n)に書いてあるように、thread::sendを
使えば、threadの結果をvwait出来ると思う。
754:デフォルトの名無しさん
11/06/12 18:28:11.50
>>753
Thanks!
CなのでTcl_AsyncMarkですが、マニュアルを読む限りそれっぽい!
とりあえず、何かサンプル書いて確かめてみます。
755:デフォルトの名無しさん
11/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:デフォルトの名無しさん
11/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:デフォルトの名無しさん
11/06/12 20:18:25.01
Tcl_SetVar2Ex呼ぶとこでinterpがNULLになってる…
なんか勘違いしてるっぽいですね。
758:753
11/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:デフォルトの名無しさん
11/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
11/06/13 00:33:27.18
>>759
どこで見たか思い出ないけど、Tcl_AsyncCreate()した時(=拡張のロード時)に
interpを保存しておいて、AsyncHandler()の引数がNULLの場合は保存したinterpを
使っていた。同じことをして動いた記憶はある。
引数がNULLということはコマンドを実行していないので、保存していたinterpを
使っても問題にはならないらしい。
逆に、複数のinterpが存在するとAsyncHandler()が呼ばれた時に渡されるinterpが
通知先である保証が無いのかな?
NULLでないのは何らかのコマンドが終了した瞬間だから、保存していたinterpを
使っても安全な気もするから、実行するコマンドが絶対に成功するようにすれば
それでいいんでは?
761:デフォルトの名無しさん
11/06/13 23:10:25.66
>>760
おぉ、詳細なご説明ありがとうございます。
ぼんやりとしていた理解が、明確になった気がします。
やっぱり同じ事を考えた方はいらっしゃるんですね。
というか、スレッドの終了をvwaitで待ちたいとか割とありえる状況な気がしますが、
ぐぐってもKodersでもまともにヒットしないってどういうこと…
この辺がニッチな言語の、もの悲しいとこですね。
762:デフォルトの名無しさん
11/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. ドキュメントにはあるんだけど...
URLリンク(docs.activestate.com)
だいたい、8.4のtar玉は28Mあったのに8.5は20Mしかない
URLリンク(downloads.activestate.com)
URLリンク(downloads.activestate.com)
763:762
11/06/16 02:37:19.87
>>116-119
に解答がありました。 失礼しました。
764:天使 ◆uL5esZLBSE
11/07/05 02:14:58.01
↓↓
「「「「「「「「「 に解答がありました。 失礼しました。 」」」」」」」」」(爆ッゴミッッ!
765:デフォルトの名無しさん
11/07/06 17:28:55.22
↓
<<<<<<<<<<<<< 「「「「「「「「「 に解答がありました。 失礼しました。 」」」」」」」」」(爆ッゴミッッ! >>>>>>>>>>>>>(キリッ!!!きリッ!!!!
↑↑(きリキリッッ!キリ
土方が何をほざいて(笑)
天使#test_s
「天使の煽り」の提供でお送りしました
766:デフォルトの名無しさん
11/07/07 21:59:23.84
>>763
それは2007年当時の話。今のActiveTclでは
teacupで必要な拡張をダウソするのがナウ。
767:本田
11/07/11 23:50:09.19
[Tcl-announce] ActiveTcl 8.5.10.0 released
URLリンク(code.activestate.com)
768:本田
11/07/12 00:00:32.94
URLリンク(downloads.activestate.com)
URLリンク(downloads.activestate.com)
URLリンク(downloads.activestate.com)
URLリンク(downloads.activestate.com)
URLリンク(downloads.activestate.com)
URLリンク(downloads.activestate.com)
URLリンク(downloads.activestate.com)
URLリンク(downloads.activestate.com)
URLリンク(downloads.activestate.com)
769:本田
11/07/12 21:01:46.78
Teacup
URLリンク(wiki.tcl.tk)
Teacup provides access to the Tcl Extension Archive.
It is the client to the TEApot server.
It is distributed with ActiveTcl by ActiveState.
770:デフォルトの名無しさん
11/07/26 13:53:55.22
canvasで書いた円と線の交差判定をしたいです。
計算しなくてもできるって聞いたんですがどうすればいいですか?