ようやくVisualStudio2005

in

ずっと稟議をだしていてようやく通ったVisualStudio 2005。いいぇ、2005ですとも。ここまで引っ張られたらいっそのこと2008でもヨカッタかと...早速、アプリの移行を開始したのですがいろいろあります。まず、セキュリティ強化なんたらで文句言われちゃって、警告の山。最初は律儀にセキュリティ強化版の関数XXX_s()に置き換えたんだけれど、なんか馬鹿馬鹿しくなってヤメ。Winアプリなので移植性云々をいう気はないですが、MFCアプリとはいえ、str***とかprintfなんて普通に使っちゃっているし、スクラッチで書き下ろすならまだしも単なる移行でそこまでエネルギー使う必要はないかなってところです。全部、_CRT_SECURE_NO_DEPRECATEで逃げちゃいました。

次にハマったのは、CTime。ODBCラップクラスでDate型のフィールドに1970以前の日付が入っているとバインド時にASSERT発生。ウィザードでODBCクラスを作成するとデフォルトでCTime型にバインドされるんですがこのCTime型へのバインド時にASSERTが発生している模様。VS2002では特になにもアラートがあがらなかったので今日まで気づきませんでした。

そもそも、CTime型のnYearはVS2002でも2005でも1970-3000年までとなっているのでほんとうはどちらもエラーなんですが2002のほうは1970/01/01に黙って変換したのに対し2005の方はASSERTをあげてきます。単純にCTime t(1900,1,1,0,0,0,-1);とすればどちらもASSERTをあげるのでDoFieldExchange()/RFX_Date()経由での変換時の仕様が変わったのかな?このあたりは先のセキュリティ強化関数といいよりタイトな方向にシフトしているような感じがします。バインドする型をCOleDateTimeに変更してしのぎました。(そもそも、1900/1/2っていうデータがはいっているってことがバグ臭いんですが、先方(SIベンダー様)は仕様だと言い張っているのでこの意味のわからん日付を修正することはできませんでした...)

いや、一日で移行できたのはたったの2つ。まだまだ、担当アプリはたくさんあるし動作確認をとりながらだといったいいつまでかかるやら。当面、併用が続きそうです。

この記事のトラックバックURL:

http://hippos-lab.com/blog/trackback/200

Comments