Delphiムズいー >< https://t.co/q347WhLq1X 個数の後の6byteと各メソッド名の間の6byteの意味が分からないー
2013-06-21 15:29:56@ktz_alias VMTはどこが詳しかったんだっけな…クイックリファレンスだっけ?ちょっと見てみよう
2013-06-21 15:57:56@ktz_alias あー違うなー。6はエントリごとの TMethod = packed record Size: Word; Address: Pointer; Name: packed ShortString; ... end; の先頭2要素(続く
2013-06-21 16:07:54@ktz_alias Size(2バイト)、Address(4バイト)をスキップするためのもの、だけど、 https://t.co/6dSu4SYG5g のコードって動くのかな?
2013-06-21 16:09:30@ktz_alias 手元のDelphiクイックリファレンス ISBN4-87311-040-8 の3章実行時型情報の3.2.1にある擬似コードとテーブル構造が違うと思うんだよね。
2013-06-21 16:10:38@ktz_alias この本が絶版状態というのは非常に悔やまれる。eBookで復刻していただけないものか。
2013-06-21 16:11:34@owlsperspective 引っこ抜いてきた元がDelphi7用のdunitなので、ある程度は耐えれるかもしれないけど・・・
2013-06-21 16:13:49@ktz_alias Delphi 3ならたぶんクイックリファレンスの話がそのまま使えるので、先頭2バイトのサイズを見ながら4バイトスキップして次にあるNUL終端文字列を取って、次の要素(先頭のサイズが1つのレコードのサイズ)に進む、とすればいいと思います
2013-06-21 16:15:42@ktz_alias さっきのTMethod構造体は...のところにエクストラメンバーがいるので、Sizeメンバでポインタを進めていく必要がある、と書かれています。
2013-06-21 16:17:05