役に立ちそうもないTips移転版

俺得なTipsを書き連ねるだけのブログ。

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

VB.netの「クラスリテラル」

よーするにJavaの ClassName.class 記法を VB.netでやろうと思ったらどうすりゃええか、だが。 GetType(TypeName) でTypeNameのTypeオブジェクトが取れる。 ちなみにこのGetType()はTypeのメソッドとかでなくて、VBの演算子。

ADO.net SqlClientのCommandとPrepareとTransaction

SqlCommandのConnectionに設定したSqlConnectionが どっかでSqlTransactionを生成しているとき、 CommandにそのTransactionを設定せずにPrepare()を呼ぶと文句を言われる。 さて何が逆鱗に触れとるんだろう。一時的なストアドでも作ってて そのCREATE PROCED…

log4netのAppenderを自作したばやい

typeにクラス名だけ書くとConfig時にうまいことクラスを読み込めなくて Configuratorがぶーたれてくれる。 というのも結局Type.GetType()で取ってきてるんで、log4netから見れば別アセンブリのクラスなんだから appenderタグのtype属性で、 type="クラス名,…

リモートデスクトップでCtrl+Alt+Del

リモートデスクトップで接続した先のマシンにCtrl+Alt+Delを送り込みたいときは、 Ctrl+Alt+End を押す。って今更ですねすみません。 つか、 リモートデスクトップで使えるショートカットキー/ Windows CMS コンテンツマネジメントシステム にいろいろ書かれ…

SQL Serverは存在していてアクセスも拒否されとらんつーの

プログラム実行中にいきなり 「SQL Server が存在しないか、アクセスが拒否されました」 とエラーが出て。 コネクションつなぎ直した覚えなんぞないぞと思ったらエラー メッセージ "SQL Server が存在しないか、アクセスが拒否されました" の原因ちなみに、…

DbConnectionをClose()するかDispose()するか

Closeメソッドの説明見るとDisposeしてもCloseしても変わらんよ、とあるが、 DisposeするとConnectionStringまでクリアされる。CloseだとConnectionStringは保持されるので、そのままOpenできるんだがorz # まぁ、Disposeって「もう使わんよ」ってことなわけ…

IDisposableとFinalizeのはざまで

タイトルはともかく。.netでIDisposableを実装したとき、Finalizeはどーすりゃええん? という話だが。 IDisposable実装の作法も含めてこういう話。 アンマネージリソースを(直接、間接に)扱ってれば、IDisposableは実装しとく。 アンマネージリソースを扱う…

レガシVB: WithEvents変数のイベント発生順序

たとえば、WithEventsなCommandButtonを持つクラスがあったとして。 フォームの方でそのCommandButtonにイベントハンドラ、 クラスの方で同じイベントに対するイベントハンドラがあったときに 実行順序はどーなるのかというと。 フォームにもともとあるイベ…

レガシVB: For Each 〜 In Array()で型保証したいとき

まぁFor Eachの対象集合にArray()なんてそーとーAdhocなコード以外で使うもんじゃないが、 なんだかんだで似たような状況(イテレータ変数をVariantにしかできない場合)はあるんで。要は、型付けした変数を別途用意しておいて、一旦そっちへ代入すりゃいいっ…

svn commitで「リポジトリ側と比べて古くなっています」

コミットしたものの、古い内容に戻したいときに、たまたま古いのが手元にあるからって svn使わずに直接ファイルコピーしたりすると、後で変更してコミットするときに こーゆー文句を言われるようで。 解決法としては、 変更したファイルを念のためワーキング…

SQLServerとEOFとタイムアウト

ADOでRecordsetをOpenするとまずEOFをチェックするが こと、SQL Serverへつないでてタイムアウトを見たいときはEOF見ちゃダメ。MSKB [PRB] ADO EOF は SQL7.0 では True を返すが SQL6.5 ではタイムアウトを返すにあるとおり、タイムアウトするとEOFは単にFa…

Subversionのディレクトリ指定

よー分からんなって妙なチェックアウトかましたりgdgdなブランチ作ったりするんでorz svn checkout svn://hoge/piyo D:\foo\bar\piyo ってとき、 D:\foo\bar は既存でなくてはいけないが、 D:\foo\bar\piyo はあってはいけない(実行時に作られる) 実行すると…

レガシVB: 構造体メンバのByRef渡し

一応実験結果をメモ。 構造体のメンバは、単独でプロシージャのByRef引数に渡せる。 (メンバいっこだけIN/OUTで更新したいときとか。まぁ滅多とあるまいが。)

レガシVBのNull

BooleanコンテキストではNullは偽。 (したがって、Fieldの値が○である、という判定で If rs.Field("hoge").Value = ○ Then とやって、hogeがNullの場合、Nullとの比較はNullなので このIf文は偽の分岐。)

SHBrowseForFolderのルートフォルダ指定

どーもWebのサンプル見てるとここの指定があんましちゃんと書いてない気がorz引数で渡すBROWSEINFO構造体のpidlRootメンバに設定するんだが、その設定値として CSIDL_* を直接代入なんてしたら勿論ダメで、 SHGetSpecialFolderLocation()でちゃんとITEMIDLIS…