C++Builder Tips

C++Builder2009の新機能 その5 (std::unique_ptr編)

CodeGearの高橋さんから、C++0xのunique_ptrが使えるということで試してみた。今までのauto_ptrだとこんな感じ。 #include <memory> // 中略 void __fastcall TForm1::Button1Click(TObject *Sender) { std::auto_ptr<TStringBuilder> pBuffer(new TStringBuilder()); pBuffer->Appen</tstringbuilder></memory>…

C++Builder2009の新機能 その4(TStringBuilder&boostのスマートポインタ編)

VCLに追加されたTStringBuilderを試してみたけど、Appendメソッドに文字列リテラルを渡すと微妙にやばいかも。 void __fastcall TForm1::Button1Click(TObject *Sender) { boost::scoped_ptr<TStringBuilder> pBuffer(new TStringBuilder()); pBuffer->Append("123"); // TSt</tstringbuilder>…

C++Builder2009の新機能 その3(プロジェクト移行編)

その1: C++Builder 5/6/2006/2007から、C++Builder 2009へプロジェクトを移行する場合、一発でうまくいかなかったら、 ぶっちゃけ、プロジェクトを再作成したほうが手っ取り早い*1です。 もちろん、CodeGearを腐すつもりは毛頭無く、以下の理由によるもの。…

C++Builder2009の新機能 その2

Unicode対応のテストとして、いくつかのテキストファイルをTMemoに喰わせてみる。まずは、こんなテキストファイル*1から。普通に保存するとShift-JISのはず。 ユーザー総員 傾注! 諸君 C++Builder2009が来た 無敵のBCB厨諸君 最古参のBCB厨諸君 万願成就の…

C++Builder2009の新機能 その1

Delphi系の方々は解説を始めているけど、C++Builder系で解説している人が今のところいないので、解説になっているかどうか判らないけど、一発目。 まずは、目玉であるUnicode文字列の説明から。 「吉野家」の「吉」は所謂「土吉」(コード:U+20BB7)でサロ…

JCL/JVCLのヘルプをRAD Studio/C++Builder/Delphi 2007に統合する方法。

参考にしたのは、サードパーティ製ヘルプを RAD Studio ヘルプにプラグインする方法と、Integrate Help in Delphi 2007 JCL/JVCLのHTMLHelp2版ヘルプを入手。 ヘルプファイルはSourceForge.netよりダウンロード。 JCLはダウンロードエリアのJCL-1.101.1.2725…

任意解像度のビットマップにミリ単位で描画する方法

ビットマップファイルを動的に生成する場合、解像度情報はデフォルトの96dpiで生成される。 デバイスに依存しないで、任意解像度のビットマップにMM_HIMETRIC(1/100mm)単位で描画する場合、以下の手順で、ビューポート範囲等を設定する。 void SaveImage(HDC…

Borland製のコマンドラインツールとの格闘記

VC++用に書かれたMakefileをC++Builderへ移植をしたら、しばらく書いていないせいか、書き方を忘れていた。orz で、コンパイルはBCC32を使うから、C++Builder付属のmakeに食わせたら、ファイル名のワイルドカードの展開をしない。 それに、tlib(ライブラリ…

VariantからAnsiStringへの暗黙的キャストのバグ(?)

BDS2006でビルド出来ていた古いコードを引っ張り出して、C++Builder2007に食わせたら、こんなメッセージ。('A`) [BCC32 エラー] OutputLog.cpp(155): E2031 'Variant' から 'AnsiString' へのキャストはできない QCを調べたら、こんなものが。 AnsiString st…

C++BuilderとDelphiの違いに関する小ネタ×2

その1: TurboPowerのパッケージをC++Builder2007でビルドしたら、constブロックで定義している変数に値を代入していてエラーになる。('A`) ソースコードを追いかけると、どうも、C/C++でいうstatic変数っぽい使い方をしている模様。 Delphiは「静的変数」な…

C++BuilderでExcel形式ファイル(*.xls)の動的生成(その0)

Excel形式ファイルを動的生成するライブラリやコンポーネントはいろいろあるけど、とりあえずxlslibをDLL化してみた。 ただし、コンパイルが出来ただけなので、Excel形式のファイルが正しく生成できるかどうかは、未検証。 特に、日本語の問題があるので、こ…

C++Builder 2007 on Windows Vista x64

仕事の都合上、Vista x64でも動作検証しなければならなくなったので、おいらのPCを生贄に。 その1: 当然といえば当然だけど、Vista x64でもC++Builder 2007はしっかり動作します。 だけど、メニューバーの「ファイル(F)」の「(F)」の部分が消えている・・・…

C++BuilderでOracle 10gの埋め込みSQLを使ってみた

2chム板の「C++Builder相談室 Part17」にC++BuilderでOracle Pro*Cを使う猛者がいたので、試しにやってみた。 1.準備$(ORACLEHOME)\precomp\LIB\にあるorasql10.libをCOFF2OMFを使ってC++Builderでリンクできるようにする。 coff2omf orasql10.lib orasql10o…

C++Builderでのboost::foreachの使い方

boost1.34.0の新機能でいいなって思ったのが、boost::foreach。 VBとかRubyやPerlやJavaなど最近の言語でお馴染みの配列等の繰り返し構文って奴ね。 VB6だとこんな感じかな? For Each hoge In fuga あれこれ Next C++だと、std::for_eachを使うべきなのだろ…

C++Builder2007ファーストインプレッション その2:いきなり実戦投入編

BDS2006のあまりにも怪しすぎるバグにむかついたので、いきなりC++Builder2007を実戦投入ww プロジェクトの移行に関しては、BCB6→BDS2006への移行ノウハウが使えるので、今のところ問題なし。 BDS2006のプロジェクトを移行すると、*.cbprojというファイルが…

C++Builder2007ファーストインプレッション その1:いきなり非純正ツール編

とりあえず、非純正ツールを突っこんでみた。 ・JCL/JVCL: C++Builder2007のリリースに合わせて、JVCLが3.32、JCLが1.110にそれぞれバージョンアップ。 こいつを入れてやればOKなんだけど、JCLのインストール時に"BPL Path"が自動的にとれていないので、 "C…

C++Builder2007ファーストインプレッション(プロローグ)

うちに帰ったらパッケージが届いていたので、早速インストールw パッケージはDVDとかが入っている薄型パッケージに、DVD2枚と、シリアルナンバーとクイックスタート。 BDS2006と比べて、起動は大分速くなった。 "構造ビュー"がようやっと使い物になったぞ!!∩…

C++Builder6&BDS2006のインストール時確認事項

メインPCを入れ替えたのだけれど、なぜかC++Builder6がまともに動作しなかった。エラー内容は起動時にコンポーネント関連のエラーが発生し、Standard以外のコンポーネントパレットが表示されない。 原因は多分C++Builder6をAdministratorでインストールして…

C++Builder6からBDS2006への移行時のチェックポイント

BCB6からBDS2006へ移行したプロジェクトをビルドしたとき、リンク時に"[リンカ 致命的エラー] Fatal: ファイル 'STLPMT.LIB' を開けません"というエラーが発生することがある。これは、QCにもあるんだけど、おいらも見事にはまってしまった。 おいらの場合、…