Programming

no image

Tcl/Tkで任意のフォルダをデフォルトファイラーで開く

たまにやるけど忘れるので。スペースを含まないときは別のやり方でも開くのですが、 一般的には以下のようにします。cmdの引数にエスケープされた状態で渡すというのがキモです。 string mapの変換ルールではエスケープシーケンスが適用される…

no image

LinkedList in XOTcl

いわゆる双方向連結リストというデータ構造ですが、かつてはリチャードストールマンに、Tclには構造体がないからlinked listを作れないと指摘されていました。今ではいくつもあるオブジェクト指向拡張を使い、クラスを導入すればTclでも他の…

no image

break可能なコードブロック

Tclにはgotoみたいに直列に書いたコードをスキップする制御構文がない。 例えばなんかデータを受信して、チェックしたり加工したりしたあとでどこかに記録するけど、 結果によらず受信回数はカウントしときたい場合、こんなコードを書いたとする。 …

no image

ソースコード中のUnicodeリテラルを展開して出力

Tclスクリプトにマルチバイト文字が入ってると、環境によっては文字化けして実行できないという問題がありました。 コメントは英語表記にしてあるのでいいとして、ギリシャ文字のシグマとか、パスワード隠し記号とかは見た目上どうしても使いたいので、そ…

no image

Jet/ACEでExcelファイルをCSVに変換する

ある分析装置がxlsx形式でレポート出力するのでExcelのCOMインターフェース経由でCSVに落としてから処理していました。 この方法だとMicrosoft Excelが必須になってしまいます。 あとExcel本体経由なので、セキュリティ…

no image

XOTcl というか Next Scripting Framework 2.0b3のコンパイル

XOTclの最新安定版はteacupで配布してる1.6.7ですが、今のところTcl8.6b2で使うことができません。 私の場合、XOTclに依存しまくってるので、8.4から8.6に1つ飛ばしで移行しようと思ったところ、これだけが引っかかって…

no image

ipconfigを呼ばないでMACアドレスのリストを取得する(twapi 3.1.17対応ほか)

「ipconfigを呼ばないでMACアドレスのリストを取得する」を書いた時点のtwapiのバージョンはたしか3.0.32だったんじゃないかと思いますが、3.0.32の次のバージョン3.1.17が去年の暮に出ていました。出てるのは知ってたんで…

no image

TkSQLite Tcl script function

こんなに便利な機能があったのに使ってなかったなんて。 こういうスクリプトを書いておいて、TkSQLiteの初期設定->SQLiteのタブに登録しておくと、 # unixepoch.tcl proc UnixEpoch {t&…

no image

Tcl array関係のお役立ち関数2つ

Cでは定数を定義するのに#defineを使うことが多いようですが、 Tclではプリプロセッサがないので、同じ方法は使えません。 グローバル変数を使うというのが最初に思い浮かぶと思うんですが、 switch文の分岐に変数を使うには特殊な方法が…

no image

FfidlでC言語のエクスポート関数に配列のポインタを渡して内容を書き換えてもらう

なぜかFfidlで配列を引数に渡すサンプルがどこにも見当たらなかったので、作ってみました。 C言語のDLL側のサンプル。 関数pow2は任意の大きさの整数型配列とそのサイズを受け取り、 その配列の各要素を2乗した値に置き換えるものです。 /…