SHOJI's Code
仕事や趣味で書いた各種言語のプログラミングコード(エクセルVBA,PHP,C/C++,JavaScript等)、その他雑記。
アクセスアップ・SEO対策・検索エンジン登録
2008.06<<12345678910111213141516171819202122232425262728293031>>2008.08
COMのイベントで・・・
前回の記事でも書いた、テスト用のCOM。そのイベント処理をJavaScriptで使う場合、WSHならば前回の記事の方法を使えばイベントハンドラも設定できるが、HTMLのJavaScriptだと、その方法も使えないので、イベントハンドラをプロパティとして指定するようにした。
ちなみに以下がテスト用のWSH。
var objTest = WScript.CreateObject("testcom.counter", "objTest_");

if( objTest )
{
msg( "CreateObject() succeeded." );

msg( "Default value is "+objTest.value );

objTest.onchange = changed;

objTest.inc();
objTest.dec();

for(var i=0;i<10;i++) WScript.Sleep(1000);
}
else
msg( "CreatetObject() failed." );



function objTest_onchange(c)
{
msg( "(EVENT)Value changed. New value is "+c.value+"(c) / "+this.value+"(this)" );
}
function changed(c)
{
msg( "(CALL)Value changed. New value is "+c.value+"(c) / "+this.value+"(this)" );
}

function msg(txt)
{
WScript.Echo( txt );
}


ここで、問題が出た。イベントハンドラ(objTest_onchange)では、thisがそのCOMオブジェクトなのだが、プロパティとして渡した方(changed)がthisが違うもの。とある方法で調べてみると、changedのthisのクラス名は全然別のもの・・・。困ったぞ・・・。
[COMのイベントで・・・]の続きを読む
テーマ:プログラミング - ジャンル:コンピュータ
1となっている最下位のビットを抽出 (C/C++)
また小ネタ(^^;

タイトルにあるように1となっている最下位のビットを抽出するもの。例えばこんな感じ。

例)
00010010 → 00000010
11011000 → 00001000

b1 = ((b - 1)^b) & b;


ま、備忘録。詳細の説明はしない。
テーマ:プログラミング - ジャンル:コンピュータ
ブラウザオタク?
Webサイトのデザインや管理をする関係でIEFireFoxをインストールしていて、両方がうまく動けば、まぁいいや、という感じでデザインや管理をしてきた。
Macではどう見えているのか?と気になったりもしたけど、Mac持っていないし、まぁいいや、という感じだったのだが・・・。

この間、なんとなくOperaをインストール。そして、昨日、SafariのWindows版パブリックベータをインストールしてしまった。結局今、私のノートパソコンに入っているブラウザは、
  Internet Explorer
  FireFox
  Opera
  Safari
  Lynx (テキストブラウザ)
かな?いくつ入れるねん(-.-;
あ!あと、携帯での表示チェック用にimode HTML Simulator IIも入ってる。
テーマ:ブラウザ - ジャンル:コンピュータ
初めてのハッシュ (C言語)
プログラミングを生業としているくせに、これまでハッシュを使った検索をしたことがなかった(^^;

単純に全体をチェックしていた部分で、どうしても速度的に速めたかったため、ハッシュを使ってみた。
[初めてのハッシュ (C言語)]の続きを読む
テーマ:プログラミング - ジャンル:コンピュータ
ミリ秒単位のGetLocalTime() (C言語)
GetLocalTime()(あるいはGetSystemTime())という関数がある。現在時刻を取得してSYSTEMTIME構造体に返す関数だ。構造体としてはミリ秒単位までの精度があるが、実際には15ミリ秒程度の精度になる。

仕事でミリ秒単位で時刻を取得する必要があり、どうしようか考えて作ったのが以下のコード。
[ミリ秒単位のGetLocalTime() (C言語)]の続きを読む
テーマ:プログラミング - ジャンル:コンピュータ
ポインタを渡すウィンドウメッセージ (C言語)
以前 Windows 3.1 で作成したシステムの更新を現在手がけていて、そのとき作ったユーティリティを WIN32 でコンパイルしなおしていた。

が、そこで困ったことがあった。
イベント情報を受信し、管理する EXE があり、そのイベント情報の取得はその EXE へウィンドウメッセージを使用して取得するようになっていた。そのときに lParam には構造体のポインタを渡すようにしていたのだ。Windows 3.1 (WIN16)のときにはそれで問題なく動いていたが、WIN32では、プロセス間で直接アドレスを渡してもアクセスできない (アクセス違反が発生する)

で、いろいろ調べてみたら VirtualAllocEx なる便利な関数を発見。
[ポインタを渡すウィンドウメッセージ (C言語)]の続きを読む
テーマ:プログラミング - ジャンル:コンピュータ
gethostbyaddrでホスト名解決にかかる時間 (C言語)
先日、仕事で私が書いたライブラリを使ったところ異常に時間がかかるという現象が起こったと報告を受けた。
そのライブラリはWinSockを使用して簡易的な通信をするためのライブラリであるのだが、調べてみると時間が掛かっている箇所は送信元のホスト名を調べる関数の中で起こっていることがわかった。以下のようなテストコードを書いて調べてみると、gethostbyaddr関数で数秒時間がかかる場合があることが判明。
[gethostbyaddrでホスト名解決にかかる時間 (C言語)]の続きを読む
テーマ:プログラミング - ジャンル:コンピュータ
塗り潰しのアルゴリズム (C言語)
昨日書いた記事をやはりC言語で書こうと思って書いたもの。
[塗り潰しのアルゴリズム (C言語)]の続きを読む
テーマ:プログラミング - ジャンル:コンピュータ
値をスワップ (C言語)
小ネタ・・・(^^;

例えば整数 a と b があったとして、その値をスワップ(a←→b)したいとき、普通は
c = a; a = b; b = c;
と、いう風に間にテンポラリの変数を使って処理するが、そういった変数を使用せずに、スワップする方法(ただし、整数限定)。
[値をスワップ (C言語)]の続きを読む
テーマ:プログラミング - ジャンル:コンピュータ
copyright © 2004-2006 SHOJI, Powered By FC2ブログ all rights reserved.
無料ホームページ アフィリエイト レンタルサーバー FC2ブログ 一戸建て