2010-09-01から1ヶ月間の記事一覧

カレントディレクトリのファイル名からフルパス名を求める(Windows)

Haskell で Excel を操作するためにまずはファイル名からフルパス名を求めます。 import System.Win32.Com import System.Win32.Com.Automation import Debug.Trace getFullPathName :: String -> IO String getFullPathName fname = do createObject "Scrip…

Ruby の invoke メソッドだけで Excel にアクセスする。

C で Excel にアクセスするのには COM の invoke を使ってアクセスします。C で書く前に Ruby の invoke メソッドだけを使ってアクセスしてみます。 参考:Win32OLE 活用法 【第 2 回】 Excel COM を学ぶ(5) : Mingw で MS-Access,SQL server に接続 requir…

 C++ で書かれた wxTutorial を wxHaskell に置き換える(statusBar)

C++ で書かれた wxTutorial by Franky Braem の例を wxHaskell に置き換えながら wxWidgets と wxHaskell の学習をしようと思います。 まず、C++のソースです。 HelloWorldApp.h // http://wiki.wxwidgets.org/Hello_World #ifndef INCLUDED_HELLOWORLDAPP_H…

Linux でも wxHaskell

Ubuntu Linux でも wxHaskell が動作したのでメモしておきます。 wxWidgets ライブラリを apt-get コマンドでインストールしての cabal install wx はコンパイルに失敗。 WxHaskell/Building を参考にソースからインストールしました。 wxWidgets のインスト…

Frame をスクリーン中央に位置させる(frameCenter)

module Main where import Graphics.UI.WX import Graphics.UI.WXCore.Frame (frameCenter) main :: IO () -- start :: IO a -> IO () -- Defined in Graphics.UI.WX main = start hello {- frameCenter :: Frame a -> IO () Center the frame on the screen…

全角文字列を半角文字列に変換する。

import Char (isDigit) toHanDigit :: String -> String toHanDigit = toDigit.zenToHan -- 数字以外は無視します。 toDigit :: String -> String toDigit [] = [] toDigit (x:xs) = if isDigit x then x:toDigit xs else toDigit xs zenToHan :: String -> …

テキストボックス(textEntry) の大きさを設定する。

frame や button は clientSize でオブジェクトの大きさを変更しますが、テキストボックス(textEntry)は clientSize の値を変更してもオブジェクトの大きさは変化しません。 [wxhaskell-users] Size of an entry field に minsize を使う方法が紹介されてい…

ダイナミックスコープ

関数で定義した局所変数に、ほかの関数からアクセスできる場合がある。 (defun foo () (let ((a "Hello")) (print a) (bar))) (defun bar () (print a)) (setq a "world") (bar) ;; => "world" (foo) ;; => "Hello" "Hello" (Emacs Lisp の場合) "world" (Co…