目次

なにを書くか

私のような Java+Eclipseで開発してて、Visual StudioとかWindowsを敬遠していたため、書いてなかった人向けのC#入門ってなればいいかなと。

予定通り?柄じゃない講座は書けそうにないので、やはり実装しようそうしようとなったwww

第1段 Web更新チェック

ProcessクラスでJavaをkickして、Web上のデータの更新差分を拾って、MAPIで結果を通知するのを作った。Processクラスでinvokeする形はJavaのRuntimeクラスに類似で、MAPIはCOMのi/fを使うと言うcom-java bridgeよりは簡単に使える感じだった気がする。

第2段 時計

もう作っちゃったから書かないけど、背景透過デジタル時計、mp3目覚まし・SS設定と起動付きとありがちな習作ができあがった。DllImport?ばっかのcsharpコードなので微妙だが、JNIよりはNatvie機能を使うのは簡単だった。

第3段 find実装

window標準装備のfindは
% find /?
ファイル (複数可) 内のテキスト文字列を検索します。

FIND [/V] [/C] [/N] [/I] [/OFF[LINE]] "文字列" [[ドライブ:][パス]ファイル名[...]]

  /V        指定した文字列を含まない行をすべて表示します。
  /C        指定した文字列を含む行の数だけを表示します。
  /N        行番号を表示します。
  /I        大文字と小文字の区別をしないで検索します。
  /OFF[LINE] オフライン属性が設定されたファイルをスキップしません。
  "文字列"  検索する文字列を指定します。
  [ドライブ:][パス]ファイル名
            検索するファイル (複数可) を指定します。

パスが指定されていないときは、プロンプトで入力されたテキストまた
は別のコマンドからパイプ処理で渡されたテキストを検索します。
ってことでほしいfindは -execのある所謂unixのfindなのでだいぶ違う。仕方ないので opensolarisで公開されているfindのsrcを元に、windows cmd line向けに微妙移植してみることにした。

微妙移植の仕様

  • usageはこんな感じ
    • # find <paths> ... expression
    • expressionの表現は先頭が -で始まるもの。

実装査読

  • 1. main付近
    • 引数HLのチェック。symlinkをどう扱うかに関する振る舞いを決定。Winでは気にする必要がないから、この引数は削るでFA
    • -H/Lの後の引数は findの対象とする Pathリストなので、これを確保。ないときはエラーメッセージ出力。
    • static int compile()で引数チェック。actionにPRINT/LS/OKがなければ、PRINTをセット。

  • 2. compile付近
  • -

材料メモ

C#とJavaの言語仕様の違いとか、同じものが Javaのbase libraryとC# or .NET Framework(2.0以上)にある場合の違いで気になったところは入門記載項目の対象になると思うので、材料としてメモメモ。

言語周り

  • 気になった keyword
    • out
    • using

library周り

  • System.Windows.Forms.Form付近
    • 明示的なDispose()
  • Integer.parseInt()とint.TryParse?()
    • てか、intって基本データ型ぢゃないのかしら・・・と思いつつ、static IntXX.TryParse?()と把握。だが、これでいいのか?w
  • Win32 FileTime?
    • 1970/01/01 00:00:00 UTCは TickTime?で 621356292000000000
    • 下限値は 1601/01/01 00:00:00 UTCで TickTime?で 504911556000000000

Last-modified: 2008-09-05 16:30:00