vb6

VB6開発者に贈るGoFデザインパターン【予告編】

vb6

あまり知られていないような気がしますが、VB6にも不完全ながらオブジェクト指向プログラミングを実現するための機能は備わっています。 public, friend, private でのスコープ制御によるカプセル化の実現。 インターフェースによる多態性。 継承はサポート…

Windows7でVB6のStrConv関数を使ってSJISからUnicodeへ変換するときに発生する問題

問題 Windows7になってAPIの挙動が変わったせいなのか、VB6 の StrConv関数の挙動が WindowsXP の頃と変わっている。*1 Shift-JIS を扱うプログラムではバイト単位に文字列を操作したいという要求が多いので、例えば「先頭5バイト」などといった場合、次のよ…

ActiveX EXE や DLL, OCX(いわゆるCOM)が公開している Type Library 情報をダンプするスクリプト

VB6でCOMコンポーネントを開発してると、TypeLibIDとかCLSIDの不一致でソースコードが開けなくなったり、いままで動いていたプログラムが動かなくなったりという場面によく遭遇します。(とくにCOMコンポーネントの開発に不慣れで「COM」というものをよく理…

Strategyパターンによる汎用性の高いマージソートの実装(VB6)

vb6

VB6でマージソートするクラス書いた。ソースコードは以下のような構成(クラス図として正確かどうかは自身がない) Javaの ISorter ソートアルゴリズムのインターフェース。 このインターフェースによりソートの機能を利用するコードとソートアルゴリズムの…

日本語も含めてマッチする正規表現(簡易版)

vb6

Function test(para) As Boolean Dim regex As RegExp Set regex = New RegExp regex.Pattern = "[一-龠ぁ-んーァ-ヶA-Za-z0-9\w]+" test = regex.test(para) Set regex = Nothing End Function ↓にあるように、正しくはないがおおむね使える。ものか…

予約語を変数名やプロシージャ名に使用する方法

たまたま見つけたので引用。VBScriptにおいて、通常、end とか and とかの予約語はVBでは変数名に使用することができない。 が、ブラケット("[", "]") で括ることで、予約語であっても変数名やプロシジャ名の識別子として使用することができる。 IDENTIFIER …

vb color(long値) を Webカラーの"#rrggbb"形式の文字列に変換する関数

vb6

なんかもっといい方法が無いものか...

VB6で non well-formed な xml 文書から DOM を得る

vb6

HTMLDocument の動的な作成: Days on the Moon を参考にやってみた。 Sub parseXml() Dim html As Object ' ※レイトバインディングしないと、write() メソッドの呼び出しがコンパイルエラーになる。 Dim fso As Scripting.FileSystemObject Dim el As HTMLUn…

VB6で関数ポインタっぽいもの

vb6

MSDNのコード見てたら面白いコードがあったのでメモっとくAPI関数呼び出すときとか、そのコールバック関数のアドレスをAddressOf演算子つかってAPI関数に渡したりできるが、VBのコードではそういうことができない。 VB6でも関数ポインタっぽいものが使えたら…

VB6でフォームにWebBrowserコントロールを配置しそこにコンテンツを直接流し込む

vb6

ちょっとはまった。 まず、ページを開かないと、Documentオブジェクトにアクセスすることができない。 で、ページの読み込みが完了するタイミングはDocumentCompleteということで以下のようなコードになる。 (フォームにWebBrowserコントロールを配置して..…

VB6のイミディエイトウィンドウでループ処理書けた

いまさらVB6なんで、誰得って感じですが、、 デバッグなどに重宝するイミディエイトウィンドウですが、最近知ったんですがループ処理を書くこともできます。 for i = 0 to 10: debug.print i : nextという感じで、通常のプログラムでは改行となる箇所を:(コ…