スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

Cランタイムを使おうかな

昨日から今後のプログラムでCランタイムを使おうかと考え始めました。少しでも軽くの呪縛から長年逃れられませんが、いくら趣味とは言っても何か作ってなんぼですよね。ちょっと調べてみて使えそうなら、今後はデフォルトで使う方向で行こうかなと考えてます。fopenとかかなり懐かしいです。(^^;

さて、早速テキストファイルクラスのCランタイム使用版を作ってみました。自分でバッファを作らないと、おー、なんて簡単なんだ。これはちょっと感動。書き込み時間を比較してみたところ、

独自(672) < Cランタイム(984) < API(2094)

でした。なんど試してもだいたいこのくらいでした。作りのシンプルさから言ってCランタイムの方に心が惹かれています。

<2008/06/25追記>
どうもfopenをデフォルトで使うと、テキストモードになる上にUnicodeをMBCSに変換しているようです。そこで、MBCSビルドに変更し、さらにバイナリモードにしてみたところ、

独自(510) < Cランタイム(610)

くらいでした。だいぶ縮まりました。まだ設定があるのかもしれません。
スポンサーサイト

テキストファイルの読み書きクラス

どうもモニターばかり見つめているので目がシバシバしてつらいです。夜になって気になって、目薬を買っておけば良かった・・・orz と二日連続で思っています。

シェル拡張のデバッグ時にログを掃き出すためにテキストファイルを扱うクラスを考えています。ログを掃き出すだけなら書き込みだけで十分ですが、今後のことも考えて読み込みも作ります。私がAPIを直接使いたくない理由としては以下のことがあります。

・CreateFileの引数が多すぎるし、内容も覚えきれないので気軽に使えない。
・行単位の扱いができない。ReadFile、WriteFileの引数も多い。
・エラー時のClose処理の呼び出し忘れを起こしやすい。

例外を使えば、エラー時のClose処理を一元的に行えますが、その場合にはCRTにリンクする必要があります。DLLをあまり大きくしたくないときにはこれが結構効いてきますし、クラスのデストラクタで処理する方が便利です。

というわけけ主に気軽に使えることを目標に設計を考えてみます。

「テキストファイルの読み書きクラス」の続きを読む

レジストリで悩む

『お忍びリネーム』をちまちまと作ってますが、ようやくCOMの外側ができて、IShellExtInitのInitializeがExplorerから呼び出されるようになりました。まだビープ音が鳴るだけですけどね。今回は今まで疑問のままだったところをじっくり取り組んでみようと思ってるので、はやる気持ちを抑えてレジストリ登録とテキストファイル操作をもう少し調べようと思っています。

普段のアプリではINIファイルを使うことが多いので、レジストリはあんまり触らないで来たんですが、Windows95の頃と比べるとセキュリティ強化の関係でより気をつけないといけなくなってると思われます。あと、レジストリキーの存在チェックって簡単な方法が無いですね。レジストリからキー登録解除(削除)するときに、キーが無い場合はエラーじゃないので削除する前に調べておこうと思ったんですが、(1)オープンしてエラーコードをチェックする、(2)対象キーの親キーに対してサブキーを列挙する、以外に方法ってあるんですかね?ネットで検索したんですが、見つかりませんでした。今のところ、削除時のエラーコードをチェックするようにしてます。

あと、自分で作ったテキストファイル操作クラスがUnicodeアプリに対応してなくて、先にそれを改造しないといけません。シェル拡張のデバッグに使おうかと思ってまして。Explorerプロセスにアタッチしてデバッグしてみたんですが、なんだかとても遅いですね。いざというときには頼りになりますが、普段はファイル出力でデバッグした方が早そう?

システムの復元に救われる

最近ようやく忙しさから解放され、再び勉強しつつ『お忍びリネーム。』を作ろうとしています。ここ何日かでレジストリ登録の仕組みを考えようと思い実験してたんですが、いろいろと試行錯誤している間に大変なことをやらかしました。

"CLSID\\{@CLSID_OshinameShellExtension}"

で置換されるべき、{@CLSID_OshinameShellExtension}に対する「置換後の文字列」の初期化処理を、関数に移動した後に呼び出しを忘れたままレジストリキー削除を実行してしまったのです。

つまりこれは結果的に、

HKEY_CLASSES_ROOT\CLSID\

に対する削除が行われたものと思われます。すぐにヤバいと思い、その時開いていたレジストリエディタでCLSIDキーを更新して確認してみてもキーは残っています。大丈夫だったのか?その時点ではあまり深く考えませんでした・・・。

「システムの復元に救われる」の続きを読む

カレンダー
05 | 2008/06 | 07
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 - - - - -
カテゴリー
最近の記事
最近のコメント
タグ

カメラ GH2 GH3 

ブログ内検索
月別アーカイブ
RSSフィード
プロフィール
●オンラインソフト作家。しかし長らく活動休止中。
ソフトウェア

●Dさんの長押しIME起動2
●IME+ (仮称)

・Dさんの長押しIME起動。
・Dさんの日本語じゃなきゃイヤン。
・Dさんの名前変更お手伝い。
・Dさんのダイヤルアップ接続お手伝い。
・DさんのWindows終了お手伝い。

・お忍びランチャー。
・お忍びリネーム。
・デジくいっくサーチ!
・Simple Remote
・計算王?

※過去の開発ソフトの一部はリンク先からダウンロードできます。

リンク
FC2カウンター
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。