C#

2009年7月 2日 (木)

走れる時に、走ってみた。

今日のジョグ 5km 28分52秒。

梅雨なんで、走れる時に走ってみた。
最近、走っていて脚よりも心臓の方が先に疲れる。
今までは、脚の方が先だったのに。

暑いか、貧血かの、どっちかだろう。
とりあえず、鉄分サプリを補給しとこ。

2009年1月30日 (金)

Form を常に前面に表示する。

ボタンをクリックする事で、Formを最前面に表示したり、通常のFormに戻したりしたいと思い、次のようなコードを書きました。

 if (this.TopMost == false)
            {
                 this.TopMost = true;
             }
 
if (this.TopMost == true)
             {
                 this.TopMost = false;
             }

でも、何か上手く動きません。
何回クリックしても、通常のFormのままです。

試しに、TopMostのデフォルト値をtrueにしてやると、初期状態はもちろん最前面に表示されます。
一回クリックして、通常表示のFormには成るのですが、もう一回クリックしても、二度と最前面表示されません。

何だか良くわかりませんが、色々と検索していくうちに、上のコードは、次の一行で表現出来る事が分かりました。

this.TopMost = !this.TopMost;

これだと、上手く動きます。

最初のコードと、意味は同じ筈なのに。

なんでだ?

2008年8月21日 (木)

サブネットマスク集約ソフト

大量のIPアドレスを眺めていて、サブネットマスクを集約したくなる時ってありますよね?

・・・・・・少なくとも、私はあります。
と、いう事で、自動的にIPアドレスをまとめてくれるツールを作ってみました。

ダウンロードは、こちらから。

ダウンロード先は、以前に私が使ってた場所なんで、特にあやしく無いです。

ただ、フリーウェアって事で、御利用は自分自身の責任でお願いします。

  • 使い方
  • 左側のテキストボックス「アドレスリスト」欄に、集約したいIPアドレスを「*.*.*.*/*」形式で入力し、「集約してみる」ボタンを押すと、IPアドレスを纏めてくれます。

2008年8月13日 (水)

正規表現を使って文字列を調べる

//一番上のuseingの所に、一行追加する。
using System.Text.RegularExpressions;
//例えば、入力された文字がIPアドレスかどうか調べるには。
string Ipaddr = "172.24.1.1/24";
if (Regex.IsMatch(Ipaddr,"^[0-9]+[.][0-9]+[.][0-9]+[.][0-9]+/[0-9]+$"))
{
    //ここにIPアドレスだったら処理する内容を書く
}
//ちなみに、この正規表現だと393939.3030030.30030.33333./33333なんて出鱈目な値でもIPアドレスって判断するので注意。

2008年8月10日 (日)

IPアドレスを2進数に変換する

//今回は、マスク部は無視してます。
//まずは、*.*.*.*/*の形からマスク部を消去。
string addr = "172.24.1.1/24";
string[] addrbu = addr.Split('/');
//アドレスをオクテット毎に分割して、int型に変換する。
string[] addrgoto = addrbu[0].Split('.');
int iti = Convert.ToInt32(addrgoto[0]);
int ni = Convert.ToInt32(addrgoto[1]);
int san = Convert.ToInt32(addrgoto[2]);
int yon = Convert.ToInt32(addrgoto[3]);
//アドレス部を2進数標記にして文字列に戻す。
string sini = Convert.ToString(iti, 2);
string sni = Convert.ToString(ni, 2);
string ssan = Convert.ToString(san, 2);
string syon = Convert.ToString(yon, 2);
//このままだと、行頭が零の場合無視されているので、桁数を合わせる。
sini = sini.PadLeft(8, '0');
sni = sni.PadLeft(8, '0');
ssan = ssan.PadLeft(8, '0');
syon = syon.PadLeft(8, '0');
//最後に各オクテットをまとめて完成。
stirng Ipaddr = sini + sni + ssan + syon;

2008年8月 6日 (水)

enterで区切られている文字列を分割する

//enterで区切られた文字列をstrblockとする。
//Splitメソッドはchar型しか指定出来ないので、単純に分割すると「\r」みたいな制御文字が残る。
//これを避けるため、最初にenter記号を一文字に置き換えてしまう。
strblock = strblock.Replace("\r\n", "\n");
//置き換えた文字を使って、文字列を分割する。
string[] Kekka = strblock.Split('\n');

2008年8月 4日 (月)

ランダムな値を取得する。

//ランダム値の取得
//例えば、10までのランダムな数字をRanとして取得する。
Random Pas = new System.Random());
int Ran = Pas.Next(10);

//でも、randomクラスは、ランダムを作る際にPCの起動時間か何かを参照するらしく、繰り返し文なんかで使うと、同じ結果が続いたりする。
//それを防止するには、useingの所に次の一行を追加する。
using System.Security.Cryptography;

//でもって、byte形の乱数を発生させる。
byte[] Seed = new byte[1];
RNGCryptoServiceProvider Rand = new RNGCryptoServiceProvider();
Rand.GetBytes(Seed);

//この乱数を、randomクラスの参照値として指定する。
Random Pas = new System.Random(Convert.ToInt32(Seed[0]));
int Ran = Pas.Next(10);

//でもこれって、参照元がbyte形なので、255以上のRandamが欲しい時は、もう一工夫がいるかも??

2008年8月 1日 (金)

他のプログラムを実行させて、終了した事を確認する方法。

例えば、test.exeを実行させる場合。

//一番上のusingの所に一行追加
using System.Diagnostics;

//プログラムをインスタンス化して起動
Process Protest = Process.Start("test.exe");
//プログラムが終わった事を判定
Protest.WaitForExit();

プログラムを実行するだけなら、
Process.Start("test.exe");
だけでも実行可能可能。

2008年7月27日 (日)

英文での日付表示方法

//一番上のusingの所に一行追加
using System.Globalization;

//文化圏を指定
CultureInfo USA = new CultureInfo("en-US");

//例えば現在日時
DateTime Hi = DateTime.Now;
//で、英文風な値をstringで取得
stirng Hizuke = Hi.ToString("ddd,dd MMM yyyy",USA);

その他のカテゴリー