久しぶりにDelphi

Delphi 5で書かれたという、あるシステムがあるのだが、会社のお荷物風になってしまっている。内容は、外注さんしか読めず、担当者は勉強する気があるのかないのか、謎であり、小生は、そこを立て直すために派遣されたものの、日々、はぐらかされ、のらくらとかわされ、結局、自分の手で、ソースを眺めるところまで来てしまう。

足痛いのだが…ひとつ仕事すると、骨がくっつくのが、1時間遅れる気がする。
こっそりソースを持って帰ってきて(方法は内緒)、じっくり、自宅で調べることにした。

まず、Delphi 5で作ったらしい、という耳情報を元に、手持ちのDelphi 5 Professionalで読み込んだところ、ADO関連(ADODB etc.)のコンポが無くてまずエラーになった。これらは、ADO Expressとやらを追加インストールすれば、Professional版にも追加できたものらしいが、小生は持っていない。おそらく、会社では、Enterprise版を購入したのだろう。金あるなぁ。そのくせ、勉強しないんだから勿体ない。本当に勿体ない。小生にくれ、と言いたい。古くったって、いいものはいいんだから。

そこで、現役マシンにインストール済みのDelphi 7 Professionalで読んでみたところ、幸い、ADOコンポは含まれていた。しかし、困ったことに、別のコンポ、たとえばNMHttpなどが無くなっている。無くなっていても代わりのコンポはあるが、いかんせん、過去のコードを直している余裕はないし、ちょっとしたラッパーもしくはスタブを作るのも面倒だったので、祈るような気持ちで、久しぶりにDelphi 6 Professionalを引っ張りだして、インストールして試してみた。

幸い、Delphi 6 Professionalでは、NM〜コンポはそのまま残されており、かつ、ADO関連コンポも含まれているのである。VarArrayCreate関数や、null(関数)を使用する際に、エラーが出て焦るが、Variantsユニットを明示的にuseしないといけないように6から変ったみたいだ。そんなことも何もかも、きれいさっぱり忘れている。とにかく、コンパイルできそうなので、うれしくて、コンパイラエラーが出るたびにせっせと直す。

たとえば
if KeyVal <> null then
なんてコードで、"未定義の識別子null"なんて言われて、慌ててnilに書き直してまたエラー、なんていう醜態を晒してしまったが、Variantsユニットを使ってnull関数を指さすようにすればいいのだ。

結局、データベース周りの仕様が全く謎なので、さすがに動作させることはできなかったが、IDEで読ませることで、なんとか内情を調べることができそうだ。ほっとしている。



せっかくなので、仮想マシンにインストールして、未来永劫使えるようにしようと思ったら、「使用許諾コード」が取得できんかった。ググってみたところ、同じような被害者の声が多数聞こえる。おそらく、Borland側(いや今はCode Gearだっけ?)の問題と思える。小生はメールで問い合わせることにした。宛先は、付属の説明書にあるメルアドではなく、新しいメルアドに変わっている。
sales.japan@borland.com
だ。