練炭ブログ

萌え壁紙、Irvine、DMonkey、Proxomitron などの情報を扱ってます。

萌え壁紙 新着情報

コメントなし»

EXIT TUNES PRESENTS Vocalocluster (ボカロクラスタ) feat. 初音ミク
壁紙 かんざきひろ、ぎた(guitar)

-Webコバルト-
『鏡の国の灰かぶり姫』明咲トウル
『橘屋本店閻魔帳 海の罠とふたりの約束!』くまの柚子

webメンズヤング
2011年8月号の壁紙のパスワードが解除されました。
INO
『絶対☆は~れむ』久遠ミチヨシ

Whirlpool Official Web Site(ワールプールオフィシャルウェブサイト)
クロスキャンペーン特典『舞風のメルト』てんまそ描き下ろし限定オリジナル壁紙
『Lunaris Filia』のクロスキャンペーン用シリアルキーが必要。

# HTTPS で回数制限ありとはずいぶん厳重だなー。製品起動用のシリアルキーと同じものなのかね。

DMonkey: Date('月 日, 年') が正しく解釈されない問題

コメントなし»

§問題の概要

Irvine のスクリプト機能(DMonkey)において、new Date ('月 日, 年') で日付が正しく解釈されない。

1月(January)を渡した時は内部的にエラーになり現在の日付が返り、2月以降であれば一か月前の日付が返ってしまう。

元ネタ: http://hibari.2ch.net/test/read.cgi/win/1303889299/987n

テストコード

alert (new Date ('Jan 1, 2009'));
alert (new Date ('Feb 1, 2009'));
alert (new Date ('December 31, 1999 23:59:59'));

§原因

Dmonkey の ecma_misc.pas の function DateParse() 内で、EncodeDate() に渡す月データを GetMonth(sl[0]) - 1 として計算しているため。

EncodeDate() は Delphi の標準関数で、月データを 1~12 で受け取る。

§対策

自分でビルドできる場合は、前述のソースの - 1 を削除する(試していないけど多分それでいけるはず)。

ビルド環境がない場合は、バイナリを直接書き換える。

  1. バイナリエディタで irvine.exe を開く。
  2. 16進数で FF 53 0C 8B 45 D0 E8 61 40 FF FF というデータを検索する(1か所だけ見つかるはず)。
  3. その直後の 4890 に書き換える。

Irvine 1.3.1.127 であれば以下のように書き換える。
00099F8F: 48 90

# dec eaxnop に書き換え。

§副作用

特に無いと思われる。