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/
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の登場が変えてくれることを願う。