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/
185 名前:デフォルトの名無しさん mailto:sage [2008/02/10(日) 09:16:09 ] >>184 ActiveTclを使わずにtckもtkも自分でソースからビルドしたらtktreectrlも上手く入ってくれた ありがと
186 名前:デフォルトの名無しさん [2008/02/10(日) 14:19:14 ] exprを多用したTclプログラムを高速化するにはとにかくexprの引数全体を { } で囲むってことを覚えておくといい。 式のコンパイル結果をキャッシュしてくれるようになるので本当にこれだけでだいぶ高速化する。 181のコードだとさらにexprコマンドを変数にいれてevalとかしちゃってるんでそこもどうにかしなきゃだけど
187 名前:デフォルトの名無しさん [2008/02/10(日) 14:23:36 ] あー182の改訂版だとそういうところばっちり抑えてるね。余計なコメントだったか
188 名前:デフォルトの名無しさん [2008/02/10(日) 22:14:14 ] 184 09:05:22 >>185 09:16:09 僅か10分でソースコードをgetして確認まで完了。天晴れ!
189 名前:デフォルトの名無しさん mailto:sage [2008/02/10(日) 22:31:43 ] >>188 まぁ俺様のスパコンなら余裕よ じゃなくて、同じ事考えててソースから入れたら上手く行って「ヤッター」って書き込もうとしたらレスが付いてたの。 そんだけ。
190 名前:本田 [2008/02/11(月) 12:39:59 ] Welcome to the Tcl Developer Xchange! www.tcl.tk/ Latest Software Releases Tcl/Tk 8.5.1 Feb 5, 2008 Tcl/Tk 8.4.18 Feb 8, 2008 ActiveTcl 8.5.1.0 Feb, 2008
191 名前:デフォルトの名無しさん [2008/02/15(金) 19:14:58 ] 181>どうやら8.5版ではevalの処理が今一歩か。 evalはtclのインタープレタ(解釈実行)機能を利用する窓口なのでevalを封印する様では暫く8.4版に留まって様子を見るのも有力な選択肢かもしれない。
192 名前:デフォルトの名無しさん mailto:sage [2008/02/15(金) 23:04:55 ] 俺は8.4の頃からバイトコンパイルの邪魔になるので evalは封印してきたわけだが・・・。
193 名前:デフォルトの名無しさん [2008/02/15(金) 23:09:55 ] そういえば8.5で{*}が追加されたけどこれもeval使うよりは速いのかなー。
194 名前:デフォルトの名無しさん [2008/02/16(土) 07:42:19 ] >192 :バイトコンパイルの邪魔になるのでevalは封印・・・。 →eval命令のコンパイルで何か支障があるのですか?
195 名前:デフォルトの名無しさん mailto:sage [2008/02/16(土) 16:20:43 ] すみません。教えてください。 set a 3 set b {$a + 2} expr $b*4 これが 20 でなく 11 になる理由は分かりました。しかし、次のような C 言語のソースをそのまま Tcl に直すとどうなるのですか? int a = 3; int b = a + 2; int c = b * 4;
196 名前:デフォルトの名無しさん mailto:sage [2008/02/16(土) 18:05:43 ] set a 3 set b [expr $a + 2] set c [expr $b * 4]
197 名前:デフォルトの名無しさん mailto:sage [2008/02/16(土) 21:40:46 ] なるほど。ありがとうございました。
198 名前:デフォルトの名無しさん [2008/02/22(金) 21:40:37 ] 書籍の類が姿を消して久しいが今日丸善本店に立寄るとEffective Tcl/Tkが書棚にあった。手にとって奥付を見ると「1999年8月1日初版発行」になっている!?今年は平成廿年。
199 名前:本田 [2008/02/23(土) 07:19:41 ] >>198 >Effective Tcl/Tk Library sourceforge.net/projects/efftcl/ >Souce code from the book "Effective Tcl/Tk Programming"
200 名前:デフォルトの名無しさん [2008/02/28(木) 23:15:28 ] 三浦カズヨシ逮捕されたな 関係ないけど
201 名前:デフォルトの名無しさん [2008/02/29(金) 00:01:03 ] 美しいクンニ日本 今日本のクンニが乱れている!! www.youtube.com/watch?v=pAEaGlmwZZQ
202 名前:デフォルトの名無しさん [2008/02/29(金) 11:17:41 ] wish83 hoge.tcl とかでソースを実行するときにエラーがあると,ダイアログが出てOKボタンを押さないと次に進まなくなるけど, これを抑制する方法はない?
203 名前:デフォルトの名無しさん mailto:sage [2008/02/29(金) 23:15:30 ] 普通に考えて例えばファイルオープンでしくじったら 読み取りの次の処理も失敗するだろ。止まるのが 普通なのではないだろうか。エラーを「抑制」するとは この場合はどういう処理を期待してるのだろうか。
204 名前:デフォルトの名無しさん [2008/03/01(土) 11:24:06 ] まあcatchしてエラー処理をすればよいのではないかな。
205 名前:202 mailto:sage [2008/03/01(土) 11:28:23 ] >>203 ダイアログを出さずに落っこちてほしいのです. バッチ処理でデータを自動的に次々処理しているときに,ダイアログが出てそこで止まってしまうと, オペレータが常時監視してOKボタンを押さなくてはいけない. そうではなくて,エラーが出たらそのまま落ちて,次のデータに処理が移るようにしたい.
206 名前:デフォルトの名無しさん [2008/03/01(土) 11:29:12 ] 余談だけど前にどっかの英語のブログでプログラミング関連のフォーラムのスクリーンキャプチャ画像があって、 PHP のフォーラムと Python のフォーラムの最新の質問がそれぞれ How to hide error messages? と How to handle exceptions? だったっていうのが面白かった。
207 名前:202 mailto:sage [2008/03/01(土) 11:30:59 ] >>204 確かにそうですね.ありがとうございます.
208 名前:デフォルトの名無しさん [2008/03/01(土) 11:31:07 ] >>205 wishじゃなくtclshを使うのではどうか?
209 名前:202 mailto:sage [2008/03/01(土) 11:44:18 ] >>208 それが,処理自体はバッチ的なんだが,過去の経緯を引きずっている関係から, 部分的にGUIパッケージを使っているんですよね…. どういう方法をとるにしろ,プログラムにある程度の修正を加えるしかなさそうですね.
210 名前:デフォルトの名無しさん [2008/03/01(土) 11:59:26 ] んー、冒頭に package require Tk ってつければいいだけでは? というかバッチの中で呼ぶのだったら wish だと同期的にならないのでいろいろ不都合じゃないの。 Tclの中でのエラー処理の必要がなくて落っこちればそれでいいっていう前提で話してるけど。
211 名前:デフォルトの名無しさん mailto:sage [2008/03/01(土) 12:12:15 ] >>205 なんだそういうことか。それならbgerrorでエラー処理を変えればいい。 でも、ていうか8.3ってbgerrorあったっけ。昔過ぎて忘れた。 proc bgerror {message} { exit 1 } pack [button .b -text GENERROR -width 15] .b configure -command { read $notexists }
212 名前:デフォルトの名無しさん mailto:sage [2008/03/07(金) 10:24:47 ] (・∀・)チックルチーコ! チックルチーコ! ラッキーペア! tcl tcl tcl tcl tcl tcl チャチャチャ 二人は双子♪ 似てない双子♪
213 名前:本田 [2008/03/08(土) 08:39:49 ] >>166 Perl/Tk Tools ptktools.sourceforge.net/
214 名前:本田 [2008/03/08(土) 08:44:33 ] ActiveTcl 8.4.18.0 www.activestate.com/store/download.aspx?prdGUID=f0cd6399-fefb-466e-ba17-220dcd6f4078
215 名前:デフォルトの名無しさん mailto:sage [2008/03/08(土) 08:46:19 ] PowerShellから使えんのかなぁ
216 名前:本田 [2008/03/08(土) 09:15:21 ] >>215 tcom wiki.tcl.tk/1821
217 名前:本田 [2008/03/08(土) 09:32:54 ] >>216 COM Object Implementation in Tcl www.vex.net/~cthuang/tcom/server.html www.vex.net/~cthuang/tcom/
218 名前:本田 [2008/03/08(土) 09:35:20 ] >>217 >COMプログラマの解説書 >Crispin Goswell >Microsoft Office Product Unit >1995年 春 >1995年9月13日改訂 msdn.microsoft.com/library/ja/default.asp?url=/library/ja/jpdncomp/htm/com_co.asp >抄録 >この解説書は、 >Microsoft(r) OLE Component Object Model(COM)オブジェクトを作成し、 >効果的に使用する方法を説明しています。 >例文はほとんどCで書かれていますので、実際に何が行われているかが、大変分かりやすく示されています。 >プログラマの中には、オブジェクトを実行するためにC++を好んで使用する人もいるでしょう。 >C++プログラマの観点からCOMの概念および基本的な使用法を論じているのは >Kraig Brockschmidt著のInside OLE (第2版)(MSDN Library(Books))です。 >COMとは何か、またその設計や哲学の後ろにある動機付けをより理解する事に興味がある読者なら、 >Component Object Model Specification(MSDN Library(Specifications))の最初の2章を読んでください。 >第1章には簡単なイントロダクションを、第2章では徹底的に概要を解説してあります。 >この解説書ではInside OLEとCOM Specificationにある情報を、 >COMオブジェクトを実装する良い方法をいくつか示しながら解説するようにしてあります。
219 名前:デフォルトの名無しさん mailto:sage [2008/03/08(土) 10:58:39 ] Tcl使ってる人はLISPも使ってることが多いんでしょうか
220 名前:本田 [2008/03/08(土) 11:22:01 ] >>219 特別関係は深くないと思う。 ただTKの方は、色々な言語から使える。
221 名前:本田 [2008/03/08(土) 11:24:10 ] LTK - The Lisp Toolkit "The easy way to do Lisp GUI programming" www.peter-herth.de/ltk/ >LTK is a Common Lisp binding for the Tk graphics toolkit. > It does not require any Tk knowledge for its usage. > As it is written in pure Lisp, it is highly portable.
222 名前:デフォルトの名無しさん [2008/03/08(土) 11:29:39 ] DQN男の家族死ね DQN男の親死ね DQN男の友達死ね DQN男の親戚死ね DQN男の家族死ね DQN男の親死ね DQN男の友達死ね DQN男の親戚死ね DQN男の家族死ね DQN男の親死ね DQN男の友達死ね DQN男の親戚死ね DQN男の家族死ね DQN男の親死ね DQN男の友達死ね DQN男の親戚死ね
223 名前:デフォルトの名無しさん [2008/03/08(土) 12:43:06 ] Lisp使いでEmacs使いの人はTclに間違った偏見を持っていることがあるかも。
224 名前:本田 [2008/03/08(土) 13:03:45 ] >>223 なぜ Tcl を使うべきではないのか www.os-omicron.org/~takano/private/trans/tcl_j.html
225 名前:本田 [2008/03/08(土) 13:10:51 ] >>224 Tcl7.x時代の話でTcl8.xにはもう当てはまらない議論。
226 名前:デフォルトの名無しさん mailto:sage [2008/03/08(土) 13:35:14 ] www.geocities.jp/tor_park/Dlang/byte.html
227 名前:本田 [2008/03/14(金) 22:01:12 ] tBuild sourceforge.net/projects/tbuild/ tBuild is a cross-platform Tcl/Tk extension that extends Tcl/Tk with the ability to compile & link shared libraries of Tcl extensions written in C/C++. tBuild currently supports all unix compilers & MS VC++ 5.x/6.x/7.0/7.1/.NET under windows. No Mac supp
228 名前:本田 [2008/03/16(日) 01:19:13 ] Tcl9 sourceforge.net/projects/tcl9/ Tcl9 is an umbrella for all projects related to the improvement of the current Tcl language, towards the hypothetical version 9 (current version is 8.5).
229 名前:本田 [2008/04/02(水) 18:18:34 ] >Tcl/Tk 8.5.2 Release Announcement >March 28, 2008 www.tcl.tk/software/tcltk/8.5.html
230 名前:デフォルトの名無しさん mailto:sage [2008/04/03(木) 15:17:36 ] -e 位使えるようにしてくれ
231 名前:本田 [2008/04/06(日) 12:46:05 ] >>229 >tcltk8.5.2-014-20080405.exe sourceforge.net/project/showfiles.php?group_id=204414&package_id=248905&release_id=589844
232 名前:gth [2008/04/06(日) 14:25:37 ] アイム 出口
233 名前:七つの海の [2008/04/10(木) 23:24:00 ] ×テックルティーケー ○ティコティケェィーィエ
234 名前:デフォルトの名無しさん [2008/04/13(日) 03:08:28 ] x86-32bit Linuxでは正常に動いてたプログラムをx86-64bit Linuxで 動かそうとしたらcannot execute binaryとなってダメなんですけど、 どうすればいいんですか?原因はなんなんですか? 中学生にも分かるように説明してくれませんか?
235 名前:本田 [2008/04/14(月) 06:00:48 ] >ActiveTcl 8.5.2.0 Apr, 2008 www.tcl.tk/
236 名前:本田 [2008/04/14(月) 06:02:18 ] >>234 サポートセンターに電話すべし。
237 名前:デフォルトの名無しさん [2008/04/16(水) 04:48:20 ] >>234 ですが自己解決しました。 libc6-i386というのをインストールしたら64ビットOSでも 動きました。でも、32ビットOSのときよりも動きが遅いです。
238 名前:本田 [2008/04/22(火) 08:24:49 ] snackamp.sourceforge.net/ >SnackAmp sourceforge.net/projects/snackamp/ >SnackAmp is a powerful multi-platform audio music (mp3, ogg ,wav, streams ...) player and organizer for large music collections. >Manage your entire collection, including ID3 tagging and auto-playlisting. Integrated web server for remote control/streaming
239 名前:デフォルトの名無しさん mailto:sage [2008/05/02(金) 15:58:13 ] ファイルから読み込んだ文字列中に"があるとうまく処理ができません。 たとえば、中身が He said "I am a boy" のようなfileに対して set ch [open "file"] while {[gets $ch line] >= 0} { puts [lindex $line 0] } を実行すると unmatched open quote in list while executing "lindex $line 0" となって止ってしまいます。 (mingw のtclsh84 ) このような"の入った文字列を処理するにはどうしたらよいのでしょうか?
240 名前:デフォルトの名無しさん mailto:sage [2008/05/02(金) 20:11:53 ] クォートをエスケすりゃいんじゃね gets $ch line regsub -all \" $line \\" buf puts [lindex $buf 0]
241 名前:239 mailto:sage [2008/05/02(金) 20:56:37 ] 自己解決…って>>240 さんの書かれた通りです。 あ、自分のは -all 忘れてましたわ。 ありがとうございます。 ちなみに、\\"で動くのですが、それだとemacsの色付けが異常になるので\\\"にしました。
242 名前:デフォルトの名無しさん mailto:sage [2008/05/05(月) 18:25:21 ] 使い勝手悪い言語だなあ。
243 名前:デフォルトの名無しさん [2008/05/06(火) 10:44:47 ] Active Tcl ver.8.4.19に改版されている。 ver.8.4.17以降2ヶ月毎に改版されている。随分頻繁に改版しているけど、どこが換わっているのやら。
244 名前:デフォルトの名無しさん mailto:sage [2008/05/08(木) 16:18:48 ] >>242 regularExpressionの速さはピカ一ですが
245 名前:デフォルトの名無しさん mailto:sage [2008/05/08(木) 20:01:20 ] そうなの?
246 名前:デフォルトの名無しさん mailto:sage [2008/05/09(金) 04:16:30 ] コーディングにかかる時間とか、バグのとりやすさのほうが重要だろ。 この観点から見るとtclひどすぎ。 正規表現使う構文にしてもすっきりしてないし。
247 名前:デフォルトの名無しさん [2008/05/09(金) 12:00:11 ] わかったからすきなの使いなよ。
248 名前:デフォルトの名無しさん [2008/05/09(金) 12:42:24 ] まさに正論
249 名前:デフォルトの名無しさん mailto:sage [2008/05/14(水) 08:49:38 ] 例に Perl/Tk 使ってみ。 Tcl ってよー出来てるって思えるから。
250 名前:デフォルトの名無しさん mailto:sage [2008/05/14(水) 13:17:13 ] Tkを使う為の言語としては最強だよな。 他がちょっと弱いけど。
251 名前:デフォルトの名無しさん mailto:sage [2008/05/14(水) 13:44:24 ] Cと組み合わせれば良いじゃん。
252 名前:デフォルトの名無しさん mailto:sage [2008/05/15(木) 02:02:59 ] 恥を忍んで質問させて下さい。 Win版のActiveTclのExpectは、sendの-breakが無いので、 一旦openしてfconfigureでbreakするのを試みてます。 set fd [open "COM1:" RDWR] fconfigure $fd -ttycontrol {BREAK 1} exp_sleep 2 fconfigure $fd -ttycontrol {BREAK 0} exp_spawn -open $fd でも、最後のexp_spawnがうまくいかないです。何故でしょう?
253 名前:デフォルトの名無しさん mailto:sage [2008/05/17(土) 04:37:43 ] 239みたいな例に対応できる汎用的方法がよく分からない。 '"'だけでなく'{'とか'}'とかも気をつける必要がある気がするんだけど。 tcl faq list eval とかで検索してみたけど結局どうすれば。
254 名前:デフォルトの名無しさん mailto:sage [2008/05/18(日) 17:33:48 ] 複数行にわたって書いているリストの中で コメントをなんとか書けないものかなあ
255 名前:本田 [2008/05/22(木) 06:02:40 ] >exp_spawn failed on Windows 2003 with DEP(DataExecutionPrevention) lists.activestate.com/expect%40listserv.ActiveState.com/6A3BD65D48E1EC45AF1B466D4E2A470F02630419%40HQSX5711.Hospira.corp
256 名前:デフォルトの名無しさん mailto:sage [2008/05/23(金) 08:27:47 ] tclshでプロンプト(PS1)の設定は出来ますか?
257 名前:デフォルトの名無しさん mailto:sage [2008/05/23(金) 21:06:59 ] こうじゃね? たとえば、 set tcl_prompt1 {puts -nonewline [info hostname]@[pwd]> } で、ラインコンティニュー用は tcl_prompt2に設定 set tcl_prompt2 {puts -nonewline continue?> }
258 名前:デフォルトの名無しさん mailto:sage [2008/05/24(土) 00:50:15 ] >>257 なんやこれ。こんなんできたのか。長年使ってるけどはじめて知ったわ
259 名前:デフォルトの名無しさん mailto:sage [2008/05/24(土) 01:27:29 ] >>257 出来た! ありがとうございます
260 名前:デフォルトの名無しさん mailto:sage [2008/05/25(日) 04:51:53 ] aliasの設定なんか無理かな? ~/.tclshに ls color=auto を入れたいんだけど
261 名前:本田 [2008/05/25(日) 06:00:16 ] >C++/Tcl cpptcl.sourceforge.net/ >A C++ library for interoperability between C++ and Tcl >C++/Tk cpptk.sourceforge.net/ >A complete C++ interface to the Tk GUI toolkit
262 名前:デフォルトの名無しさん mailto:sage [2008/05/29(木) 20:12:22 ] Tcl/Tk 8.5でBLT-2.4z使えてる方はいらっしゃいますか? パッチとか修正とか、かなり手を入れないと使えないのでしょうか。
263 名前:デフォルトの名無しさん mailto:sage [2008/06/02(月) 21:39:25 ] >>239 ここにその議論がある。wiki.tcl.tk/2157 要するにsplitすればよい。ただし連続する空白文字に対する動作が意図と異なるかもしれない。 while {[gets $ch line] >= 0} { puts [lindex [split $line] 0] } あるいは、 puts [join [split $line] |] などに書き換えて様子を見よう。 >>262 Windows版の場合、tcl84.dllに直接リンクしてしまってるからどうにもならないよね。 Tcl8.3あたり以降のextension作成のガイドラインから外れた古い作りになっているんだろう。 実際何年も更新されてないようだし。 自前ビルドしてやるしか。
264 名前:262 mailto:sage [2008/06/03(火) 11:42:06 ] >>263 jos.decoster.googlepages.com/bltfortk8.5.2 を基に試してみました。 demosやexamplesの一部 (多く?) が失敗するけど、なんとなく使えそうです。 BLT-3.0で対応するのかなぁ。
265 名前:デフォルトの名無しさん mailto:sage [2008/06/14(土) 18:22:11 ] reddog.s35.xrea.com/wiki/A%20Stub-enabled%20BLT2.4z%20for%20Windows.html これは試した?
266 名前:262 mailto:sage [2008/06/16(月) 16:43:53 ] 後出しでごめんなさい。Linuxです。 Fedora 9で試してまして、そうこうしてるうちに、>>263 の方法で対応したパッケージがリリースされました。 https://bugzilla.redhat.com/show_bug.cgi?id=446862 で対処してくださったようです。
267 名前:デフォルトの名無しさん mailto:sage [2008/06/20(金) 19:54:08 ] tk でコンボボックスの幅を指定するにはどうすればいいでしょうか? また、できれば選択した文字列が表示されるテキストボックス部分を 複数行表示にしたいのですが、可能でしょうか?
268 名前:デフォルトの名無しさん mailto:sage [2008/06/20(金) 21:03:00 ] >>tk でコンボボックス tile拡張のttk::comboboxのやつか? ttk::combobox .cb -width 100 とかでいけんじゃね >>複数行表示にしたいのですが、可能でしょうか? 不可能じゃね
269 名前:デフォルトの名無しさん mailto:sage [2008/06/27(金) 03:20:15 ] 質問があります。 set a hoge set b a set c b とやって、cからたどってhogeに辿り着くには どうすればいいのでしょうか。 $$$c とか $[$[$c]] とかいろいろやってみたのですが できません……。
270 名前:デフォルトの名無しさん [2008/06/27(金) 22:53:22 ] set a hoge set b a set c b proc aho foo { upvar $foo bar return $var } puts [aho [aho $c]]
271 名前:デフォルトの名無しさん mailto:sage [2008/06/27(金) 23:22:33 ] >>269 puts [set [set $c]] >>267 2行は無理。BWidgetsのコンボを改造すればできるかも
272 名前:デフォルトの名無しさん mailto:sage [2008/06/28(土) 00:44:17 ] >>271 へ〜、setって変数の参照にも使えるんだ。 勉強になりますた。
273 名前:デフォルトの名無しさん mailto:sage [2008/06/28(土) 03:31:47 ] >>263 > ただし連続する空白文字に対する動作が意図と異なるかもしれない。 この制約がどうにも辛いです。 連続した空白があってもそれをただ一つの区切りとみなしつつ、 安全にファイルなどから読み込んだ文字列を処理するには どうしたらいいのだろうか。
274 名前:269 mailto:sage [2008/06/28(土) 04:50:38 ] >>270 >>271 ありがとうございます。
275 名前:デフォルトの名無しさん mailto:sage [2008/06/28(土) 06:01:58 ] >>273 そんなの教わったregsub使えよ while {[gets $ch line] >= 0} { puts [lindex [split $line [regsub -all -- {\s+} $line { }]] 0] }
276 名前:デフォルトの名無しさん mailto:sage [2008/06/28(土) 12:50:19 ] >>273 set line {He said "I am} foreach word [string map {\" \\"} $line] { puts $word }
277 名前:デフォルトの名無しさん mailto:sage [2008/06/28(土) 14:34:54 ] >>276 '{' inside string
278 名前:デフォルトの名無しさん mailto:sage [2008/06/28(土) 17:20:38 ] 文字列の中に"や{がある事を気にする必要がある時と 必要がない時の条件がよく分からん。。。 あと、ファイルから読み込んだ行を一律regsubしてしまって 常に構わないのかどうかも。。。
279 名前:デフォルトの名無しさん mailto:sage [2008/06/28(土) 21:56:13 ] >>278 文字列をリストに自動変換してるところは気にしろ。文字列をforeachしたり リスト系のコマンドに直接文字列を渡したりしてるところは注意だ。 >>276 set line "He said \"I am \{ a boy \}" foreach word [string map {\" \\\" \{ \\\{ \} \\\}} $line] { puts $word }
280 名前:デフォルトの名無しさん mailto:sage [2008/06/28(土) 23:10:12 ] > \} \\\} これは必要? あってもなくても同じではないの?
281 名前:本田 [2008/07/01(火) 06:46:34 ] >Tcl/Tk 8.5.3 June 30, 2008 >Tcl/Tk 8.6a1 June 25, 2008 >Tcl/Tk 8.4.19 Apr 18, 2008 www.tcl.tk/
282 名前:263 mailto:sage [2008/07/02(水) 07:53:23 ] >>273 そもそもの話をしてもいいだろうか。 こんなコードは試しましたか? set lines {He said "I am a boy"} set i 0 foreach l $lines { puts $i:$l incr i } Tclのlist「形式」は平易ながらバイナリデータまで扱える立派な「データ構造」なので、 まともに実装しようとすればTclが最初から持ってるパーサーを実装しなおすようなことになるよ。 平易ではあるがあまり(書いたソフトの)ユーザーには触ってもらいたくないデータ形式のような気がする。 コメントも使えないしね。自分自身で読み書き保存するためにはいいけど、 ユーザーに触らせるならJSONやYAMLなどのより一般的な形式がいいだろうね。 今ならtcllibのCVS HEADにライブラリが置かれてるよ。
283 名前:239 mailto:sage [2008/07/02(水) 09:03:58 ] なんか、今頃また盛り上がってるが・・・ >>282 それじゃ根本的に違うんだよね〜 getsで一行ごとにテキストファイルから読んでるの文字列に「"」があるのがミソなんで set lines {He said "I am} を処理することになるんですよ。
284 名前:デフォルトの名無しさん mailto:sage [2008/07/02(水) 19:51:00 ] 8.5から文字列をリストに変換できるかどうかチェックする string is list $strが追加されてんぞ。
285 名前:デフォルトの名無しさん mailto:sage [2008/07/03(木) 00:00:27 ] info completeで失敗したら、さらに1行読み込んでappendすりゃいいだけだろ そもそもデータ自体が1行ずつ処理されるように書かれていないのになぜ、1行ずつ 処理したがるのか