2013-01-01から1年間の記事一覧

Partial Class の Handles で指定されたイベント・ハンドラの実行順序

異なるファイル上の Partial Class に、同一のイベントに対してハンドラを書いた場合、実行順序はどのようになるか。 'Form1.vb Partial Public Class Form1 Private Sub Form1_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load …

DataGridViewTextBoxCell、DataGridViewCell に対する AutoEllipsis (省略記号)の制御

Re[2]: DataGridViewセルでの省略記号を表示させないように このリンク先によると DataGridViewTextBoxCell、DataGridViewCell には AutoEllipsis がないようです。省略記号の非表示を行うサンプルコードが次のリンク先に載っています。 Re[4]: DataGridで..…

WShellの StdOut と StdErr の読み込みでフリーズする

WSH

WshScriptExec の StdOut と StdErr は、読み込みで固まり、実行エラーとなる場合がある。http://p2pquake.ddo.jp/mskb/archives/261解決策のひとつとして、標準エラー出力を標準出力にリダイレクトすることが考えられる。 リダイレクトする場合、Exec には…

Text.PrettyPrint.Leijen 概要

Text.PrettyPrint.Leijen 概要 Text.PrettyPrint.Leijen による整形処理は、次の2ステップで行う。(1) 整形対象となる抽象構文木や文字列をドキュメントに変換する。 (2) ドキュメントから整形文字列を取得する(レンダリング)。ドキュメントとレイアウト …

Haskell で文字列型を使ったDLLの作成例

HaskellのDLLの作成については次の記事を参照. 13.6. Win32のDLLをビルド・利用する文字列型のDLLの作成については次の記事を参照. VB6, VBA の文字列 String を返す DLLを作成する - happynowの日記DLL の作成 -- HsConcat.hs {-# LANGUAGE ForeignFuncti…

VB6, VBA の文字列 String を返す DLLを作成する

VB

Visual Basic は内部的には Unicode を使用していますが、文字列を C や C++ に渡すときは Unicode 文字を等価な ANSI 文字に変換し、C や C++ から文字列を受け取るときは ANSI 文字を等価な Unicode 文字に変換します。 http://support.microsoft.com/kb/1…

Text.Parsec.Perm とコマンドライン解析

通常、コマンドラインの解析には、getOpt を使うのだろう。しかし、getOpt は、1文字オプションではなくHOGE -DEBUG -DL FILEといった文字列オプションに対しては使えない。文字列オプションを解析するのに Text.Parsec.Perm は使えないだろうか。 Parsec の…

getOpt サンプル

module Main (main) where import System.Console.GetOpt import System.Environment import System.IO import System.Exit import Data.List import Data.Char import Control.Monad data Options = Options { optVerbose :: Bool , optInput :: IO String …

Haskell 絶対パスからファイル名の取得(takeFileName)

takeFileName で可能。 import System.Directory import System.FilePath import System.IO main :: IO() main = do -- System.Directory.getCurrentDirectory dir <- getCurrentDirectory (path, h) <- openTempFile dir "sample.txt" hClose h removeFile …

Haskell 遅延評価と即時評価

必要になるまで評価されない、という遅延評価の理解だけでは、 一見、以下の実行例は不可解。Prelude> :m Control.MonadPrelude Control.Monad> liftM3 maybe (fail "$$$$") (return id) (return (Just 3.14))*** Exception: user error ($$$$)Prelude> :m C…

Haskell read 例外処理

read 関数の Exception をどう扱ってよいか迷ってたところ、クールなわざを見つけた。 How to catch a no parse exception from the read function in Haskell? - Stack Overflow maybeRead = fmap fst . listToMaybe . reads 関数の重ね方とか勉強になるな…

Text.ParserCombinators.Parsec.Prim.many: combinator 'many' is applied to a parser that accepts an empty string.

many p の p が空文字列でも成功する場合、例外を起こす。*Main Text.Parsec> parseTest (many (many (char '*'))) ""*** Exception: Text.ParserCombinators.Parsec.Prim.many: combinator 'many' is applied to a parser that accepts an empty string.*Ma…

Haskell 改行コード自動変換

関数型プログラミング言語Haskell Part1165 GHC-6.12.1からSystem.IOが内部エンコーディングローカルエンコーディングと改行コードの自動変換をするらしい。 ttp://ghcmutterings.wordpress.com/2009/09/30/heads-up-what-you-need-to-know-about-unicode-io…

Haskell で固定小数点数

こちらを読まれたし。 [haskell]Haskellで任意精度小数を扱う - think and errorData.Fixed は、固定されるのは小数部の桁数だけで、整数部の桁数は固定されない。 リンク先は固定小数点数という用語は使っていないし、正確には固定小数点数ではないかも。リ…

many の仕様

many の仕様は次のようなものと考えられる。many p は、入力へのパーサ p の適用が続けて n回(n≧0、many1 p ならn≧1)成功し、その時点で、入力が空となっているか、 またはn+1回目で p が入力を消費せずに失敗する場合、成功する。many の実装に使わ…

Parsec 大文字・小文字無視 (Case Insensitive)

Parsec より Attoparsec の方が洗練されている気がする。 Attoparsec パッケージには 大文字・小文字の区別をしない stringCI というものがあり、Parsec にはないようだ。 以下、自作版。 {-# LANGUAGE FlexibleContexts #-} module StringCI where import T…

char oneOf noneOf 失敗しても消費しない

Text.Parsec.Char のパーサー char, oneOf, noneOf は下記の例のとおり、 失敗しても入力文字列を消費しない。Prelude> :m + Text.ParsecPrelude Text.Parsec> parseTest (char 'a' <|> char 'b') "b"'b'Prelude Text.Parsec> parseTest (noneOf "abc" <|> o…