「Visual Studio」に関する日記(2)

<前

Visual Studio Code

インストールしてみました。
主にPHP開発環境として。
今までは秀丸を使っていて、Visual Studio 2015にもPHP Toolsを入れていたのですが、どちらもコードの自動整形が利かなかったんですね。
Visual Studio Codeがどこまでできるかわかりませんが、とりあえず試してみます。

無題

Visual Studio 2010 Expressインストールしてみました。
まだ起動していませんが、まあ何かに使うことはあるでしょう。
うちのパソコンは一応曲がりなりにもマルチコアなので、並列処理系が楽しみなのです。

VistaでのBomber丸World開発環境

メテオンもどきを改良していました。
まず、旧形式のデータを投稿してもエラーが出ないようにしました。
そして、お試しプレイ前にデータ抽出してもちゃんとデータを取れるようにしました。

そうそう、VistaでのBomber丸World開発環境を整えました。
DirectX8SDKを入れてVC6を入れればそれで終わりだと思っていたのですが、ディレクトリ設定で優先するディレクトリを間違えて設定していたため、一部のライブラリが古いほうを使われ、リンクに失敗するということがありました。
もちろん今ではそれも直しましたが。
メテオンもどきでやることがないときはこっちのほうを開発しましょうかね。

入力支援

掲示板に不具合報告フォームをつけました。
内容的には単なる入力支援に過ぎず、通常の文章に変換して投稿するだけなのですが、エラー報告にどのようなことを書けばいいのかわからない人のためにはなるかと思っています。

爆ボンのページの2ヶ国語化のためのスクリプトができたので、早速トップページから2ヶ国語化中です。

Bomber丸WorldをVC++2005でコンパイルしようと試行錯誤していたのですが、コンパイルが通った後に実行時エラーが出たところで力尽きました。
やっぱりたとえ互換性に問題があるといわれていようともVC++6でBomber丸Worldは開発しようと思います。
VC++2005を使うのは、今後1から作るプロジェクトだけ、ということにしましょうかね。

無題

ミディビのトップページに開発の意図を掲載しました。
本来はルール1のところに書く文章だったのですが書いているうちにどんどん脱線しちゃって、全体的な開発の意図のほうの文章になってしまったので移動しました。
その上でルール1の文章は改めて書き直しています。

CharaBox3の開発中に気付いたことで、VC#で、メニュー編集中にコピーを行うとVC#そのものが突然消えるというバグらしきものがありました。

VBCHECK

こっそりパネルαとじゃんけんαを更新ですよ。
VBのコードの問題点を指摘してくれるソフトをたまたま見つけたので、あたっている部分だけ修正してアップしました。
ついでに著作権情報や一部アルゴリズムも変更しておきました。

そのソフトを見つけるきっかけとなったのがNeoMupl。
NeoMuplの動作が極端に遅いということ、そして解決法は先日書いたとおりですが、ソートアルゴリズムや文字列-データ対応のプログラムなんかはいかにも誰かが作っていそうだったので手近なところでVectorで探していたら、目的のものは見つからずに他の便利そうなソフトが見つかったというわけです。
結局ソートアルゴリズム周りで楽はできそうにないので再びC#も視野に入れ始めたのですが、現段階の問題として、VC#2005がExpressEditionだからなのかあるいはC#だからなのか、エクスプローラからのドラッグ&ドロップができなくて、一歩踏み出せずにいます。
これさえあればもう迷わなかったんですけどね。
C#でエクスプローラからのドラッグ&ドロップの方法を模索しつつVBで効率のよいアルゴリズムを作るとしましょう。

そうそう、アキタラヤメル企画にレゴのコンテンツを追加しようと思います。
今レゴでオリジナルの作品がいくつもあり、それらを分解する前に作っておいたLDrawのデータがあるのですよ。
うちのキャラのいくつかはレゴで作ったものが元ネタだし、こういうのがあってもいいと思うのですよ。

VC++2005EEでWindowsプログラム

VC++.NETでVC6のインクルードファイルとライブラリを使ってWindowsアプリケーションを作るのに成功しました。
しかしやはりVC6とかなり勝手が違い、標準関数と自作関数以外はオートコレクトもないし、よく見たらVC6でも一応設定はできないけど最適化は自動でやってるみたいだし、やはりC++に関してはまだまだVC6メインでいったほうがよさそうです。

今日はMIFUMIDIAの次の更新のためいきなりアプレットの仕様が変更になっても対応できるようにCGIを手直ししていました。
どうにも今の仕様じゃ続きから作る機能が実装しにくいんですよ。

VB + Java = C#

VisualC#、どちらかというと―IDEの影響が大きいかもしれませんが―VisualC++6よりははるかにVisualBasic6に近い感じがします。
ちょっとコードの一部を出してみると、
pnlInfoUpper.Height = cmbName.Height * 3;
lblName.Left = lblGame.Left = lblInfo.Left = 0;
lblName.Height = lblGame.Height = lblInfo.Height = lblGame.Top = cmbGame.Top = cmbName.Height;
lblInfo.Top = cmbName.Height * 2;
lblGame.Width = cmbName.Left = cmbGame.Left = lblName.Width;
data.Load();
ChangeView(ViewMode.ABC);
LayoutInfo();
プロパティを指定してコントロールの大きさを変更してるあたり、いかにもVBです。
他にもVBと同じ仕様のforeachがあったり(本当にVBのFor Eachに括弧をつけただけです)、refをつけて明示的に参照渡しにしたり(VBではByRef)、VBをC言語風の見た目にしたような感じでした。
ファイルの読み書きについてはJavaに似ていて、System.IO名前空間のクラスを使って読み書きします。
StreamReaderはテキスト読み込みクラスで、
sr = new StreamReader(filename, Encoding.GetEncoding(932));
でテキストファイルを開き(Encoding.GetEncoding(932)はシフトJIS)、ReadLine()メソッドで一行ずつ読み込めます。
もしかしたら変な予備知識がない分VB.NETやC++.NETより使いやすいかもしれません。
いや、だからこそC#にしたんですけど。
そうそう、コーディング中にもガンガンエラーを出したりヒントを出したりしてくれるので下手にヘルプを引くよりまずは何かを入力してみるというのが結構有効です。
そして、ヘルプは、大して速くもない自分のパソコンを使うよりも、Googleで検索したほうが圧倒的に早く、正確な情報が得られます。

C#

しかしVC++.NETを触ってみた感想、.NETにあわせてC++が結構拡張されてるみたいです。
^って何よ。
下手したらMFC以上にタチ悪いかも??
^というのはどうにもオブジェクトのハンドルらしいです。
gcnewで生成したオブジェクトを代入しているあたり、どうもガーベジコレクタが働いて、使われなくなったら自動的に解放されるらしいです。
しかし、後付けの機能が増えるに従い際限なく複雑化するC++がいい加減嫌になってきたので.NETはC#にすることにしました。
VC++2005はWindowsネイティブもできるから選んだというのに色々面倒なステップが必要な上にRADツールもつかずSDKは英語ということで、とても実用に堪えるものではなく、騙された気分でした(VC6があるので)。
というわけでVC#を導入。
なんかこれはこれでライセンス登録が必要らしいです。
でも少なくとも.NETに無理矢理C++を当てはめたVC++.NETよりは見通しがよさそうな気はします。

ドットネット

ドラクエ8のもう一つのエンディングを見てしまいました。
本当はただラスボスのマダンテが見たかっただけだったんですが、たいした技を使うひまもなくあっさりお亡くなりになられたのでそのままエンディングに入ったのですが、そこでアルゴンリングをもっていることに気づき、ククールにも指摘されたのでちょっと王様に見せてみたらなんか駆け落ちするはずだったところが堂々と結婚できることになり、チャゴスが前にも増して気の毒なことになってしまいました。

今日はMFCの練習もかねてキャラボックスのC++バージョンを作ろうとしたのですが、MFCをどう使っていいのか、画像形式は何が使えてどこまで表示できるのか、などがわからず断念し、.NETならどうかなと思ってVC++2005Expressをインストールしてみました。
ただ、インストールに時間がかかってしまったので本格的に使い始めるのはまだ先になりそうです。

<前