![]() |
![]() |
Excel VBAでメモリをダンプしてみる
■目的
ExcelVBAで変数のメモリをダンプしてみる。 これは非公開の関数を使用しているので、製品に組み込むような真似はすべきではない。 ■コード
数値の変数の例:
出力結果
・・・0x000A すなわち10をあらわしている。 Stringの変数の例:
Unicodeのコード表と付き合わせると以下のようになる http://ash.jp/code/unitbl21.htm 0x0031...UTF-16の「1」 0x3042...UTF-16の「あ」 0x0033...UTF-16の「3」 ■説明 VBAでは基本的にポインタは使用できない。 だが、隠し関数として以下の3つが存在する ・VarPtr 変数のアドレスを返す ・StrPtr UniCodeの文字列バッファのアドレスを返す 固定長の文字列を指定した場合、自動的に可変長の文字列を作成してそのアドレスを返す。 つまり、固定長の文字列に対しては使用すべきではない。 この挙動を確認するには次のコードを実行すればよい。
可変文字列の場合は、アドレスは変更されないが、固定文字列はStrPtrを実行するたびにそのアドレスが代わっているのが確認できる。 可変文字列と固定文字列は同じように見えるが、低レベルでメモリを操作する場合は根本的に違うということを認識しなければならない。 ・ObjPtr パラメーターとしてオブジェクト変数名を取得し、このオブジェクト変数によって参照されるインターフェイスのアドレスを取得する。 なお、配列のアドレスを取得したい場合はVarPtrArrayをせんげんして使用する
by mima_ita
| 2013-06-19 06:48
| VBA
|
![]() |
![]() by mima_ita 検索
カテゴリ
全体
実験 VBA 泣き言 管理 メンタルヘルス memo buildbot php テスト subversion book JQuery python R .NET box2d SQLSERVER node.js ruby 未分類
最新の記事
以前の記事
2014年 07月
2014年 06月 2014年 05月 2014年 04月 2013年 12月 2013年 11月 2013年 10月 2013年 09月 2013年 07月 2013年 06月 2013年 05月 2013年 03月 2012年 10月 2012年 09月 2012年 08月 2012年 04月 2012年 02月 2012年 01月 2011年 10月
最新のトラックバック
その他のジャンル
ブログパーツ
|
![]() | ||||||||||||||||||||||||||||||||||||
ファン申請 |
||