Hobbyの最近のブログ記事

前の10件 6  7  8  9  10  11  12  13  14  15  16

System.Net.IPAddressのコンストラクタに渡す文字列をチェックしたかったのだが、IPv4表記ならば楽にバイト列化できるけど、IPv6の場合短縮表記やら、インタフェースIDやら、IPv4埋め込みやらで、やたらと手間がかかる・・・と思っていた。

%や:や.で分割して、0埋めが必要ならどれだけか調べて置換・・・とか、いろいろやったんだけど、結局のところ、

System.Net.IPAddress.Parse
System.Net.IPAddress.TryParse

この2メソッドが異様に強力ということに。
かなり適当な表記でも、正しければIPAddressに変換してくれる。
コンストラクタ要らずで、超便利。

ただし、インタフェースID部分は数値である必要があるらしい。

VS2008落ちまくる

| コメント(2) | トラックバック(0)

VS2008(SP1)が落ちる。

「ツールボックス」で「アイテムの選択」をすると100%落ちる。

VS2010との同居に問題があるのか、よくわからない。

しかも、サクッと落ちて、例のデバッグしますか?も表示されないので、気付かないほど。

ツールボックス使わなくても何とかなるからいいんだけど、ついやっちゃった場合、未保存コードがパァになるので、注意せねば・・・

入力文字制限

| コメント(0) | トラックバック(0)

Windowsフォームアプリで入力文字を制限するのに、MaskedTextBoxを使うのはいいのだけれど、これ、マスクできる文字種が少なすぎるという欠点がある。
たとえば、16進数で可変長の文字列入力をさせたいなんて、単純なことなのにもう無理。
なんともし難い。

仕方なく、TextBox派生で、文字制限をかけるコンポーネントを実装。
でも、WndProcをオーバーライドしなきゃならんとか、コピペのことまで考えなきゃならんとか、まわりくどいことこの上ない感じ。

もっとスマートな方法があるような気がするのだが・・・
OnTextChangedはあっても、OnTextChangingは無いんだよなぁ。

この件。
性能まで考えると、やはり、アンマネージC/C++にしたほうがいいのかも知れない・・・

20100524_OverSslClientSetup.zip

TCP通信をSSL暗号化するものである。
マニュアルはまだない。
アルファ版でござる。

マネージャとサービスから成り立っている。
Yahoo!のメール設定をプリセットしてある。

Vector登録するまでには及んでいない(後述のIPv6とかに対応したい)ので、ここに置いておく。
.NET Framework 2.0~3.5xに対応している・・・はず(VS2010でビルドしたので、ちょっと不安)。
Windows 7の64bitでも、動く(32bitターゲットだから、WOW64上ってことになる)のを確認済み。

そうそう、サービスは起動後3分経つと自動停止することに加え、使用期限は2010年6月いっぱいに設定してあるので、もしも気に入って金払ってでも使いたいとかいう奇特な人いらっしゃればコメントを。

usingに関するメモ

| コメント(0) | トラックバック(0)

C#で勝手にDisposeしてくれる方のusing。

例外出てもDispose呼んでくれるので便利だけど、気になって確認したのでメモ。

  • using(A hoge1 = new A(), hoge2 = new A()) { } と、
    using(A hoge1 = new A()) {using(A hoge2 = new A()) { } } は処理順も同じなので、安心して使ってよい。
  • usingで対応できるのは、変数に代入できた場合のみ。
    たとえば、using(A hoge = new A()) で、Aのコンストラクタ処理で例外発生した場合にはhoge.Dispose()は呼ばれない。

まぁ、当たり前っちゃー当たり前だけど、後者は重要な気がする。
どんな場合でもDispose呼んでくれると思って、コンストラクタ等で例外出しまくると、意図しないことになる可能性があるってことだ。

20100521_X509Certificates_Test1.zip (実行ファイルの圧縮)

とりあえず、昨日のコードをごにょごにょして、ここまで解析できることがわかった。

でも、証明書スナップインで表示されるような「目的」を一部を除いた大部分で取得することができていない。
どうやって取ってきてるんだろうか・・・

証明書ストアにアクセスする必要があるので、コードメモ。

表示用に文字列にしたけど、ひとまずアクセスできることを確認。

使えそう。

インストーラで困る

| コメント(0) | トラックバック(0)

サービスに限ったことではないが、msiインストーラプロジェクトで、Permanentプロパティの設定を間違えた。

これは、「アンインストール時に削除するかどうか」というプロパティではなく、「アンインストール時に残すかどうか」を決めるプロパティ。
#VS2010では説明が逆なので、迷う。正しくは、残す場合はTrueで、通常はFalse(残さず削除)。

これ、間違えたままインストールすると、インストール用レジストリに、そのキーとなるファイルのインストールカウント履歴らしきものを残すらしく、その後、Permanentプロパティを正しく設定したものをインストール&アンインストールしても、ファイルが残りまくるという現象が発生する。

これを解消するには、レジストリからキーとなっているファイル名(または単純にファイル名)に関連する部分を全部削除するしか方法はない。

要注意。

ポンコツながらも動くものができた。

今回のものは、Windowsサービス&GUIなネットワーク系アプリケーション。

まだ、ソケット状態の把握がうまくできていないため、公開するレベルではないけれど、なかなか良い。

こいつをいくらかちゃんとしたレベルに仕上げたら、また、Vectorに登録するとしよう。

VS2010だけなのか、未確認。

ユーザーコントロールを追加して、public EventHandlerを追加した。

しかし、コンパイルして、フォームに張り付けても、プロパティウィンドウにイベントとして表示されない。

[Browsable(true)]と、BrowsableAttributeを設定してもやはり表示されない。

なぜだ?

前の10件 6  7  8  9  10  11  12  13  14  15  16

サイトカウンタ

Total: 61,706 Hits, (Recent24Hours: 65 Hits)
~ Since 2010/01 ~

埋め込みツイッター


Now: 2012/05/20 23:42:28 JST

このアーカイブについて

このページには、過去に書かれたブログ記事のうちHobbyカテゴリに属しているものが含まれています。

前のカテゴリはHardです。

次のカテゴリはSoftです。

最近のコンテンツはインデックスページで見られます。過去に書かれたものはアーカイブのページで見られます。

2012年5月

 日   月   火   水   木   金   土 
    1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31    

埋め込みQRコード