2010-01-01から1年間の記事一覧

bcc32.exeの拡張構文"__property"と仮想関数

アクセスメソッドは多用しても、プロパティは標準C++に無いからあまり使っていなかったけど、「シンタックスシュガー」としては激しく便利。 ただ、仮想関数との兼ね合いがちょっと気になったので試してみた。 //------------------------------------------…

覚え書き:Ubuntu 10.04における日本語フォントマッピング設定

Ubuntu 10.04におけるデフォルトフォントマッピングの設定は/etc/fonts/conf.avail/にある、65-nonlatin.confをいじればOKってことか。 /fontconfig/alias/familyの値がフォント名で、それに対応するのは/fontconfig/alias/preferの値。 preferタグにぶら下…

正規表現チェッカーの技術的な解説もどき

今回リリースした正規表現チェッカーはBoostにかなり依存しているのだけど、コアとなるboost::regexだけではなく、 boost::foreach boost::preprocessor boost::shared_ptr なんてものを使ってます。特に、boost::preprocessorはかなり協力。VCLコンポーネン…

正規表現チェッカーを作ってみた

boost::regexの挙動をいろいろ試したいのと、正規表現をC/C++のリテラル文字列にするのが面倒だから作ってみた。 構想開始後11ヶ月目にしてようやく公開w URLはhttp://a7m.sakura.ne.jp/APPS/RegexTester100.zip。 C++Builder 2010にバリバリに依存していて…

ストリーム入出力を使用して、文字コードがUTF-8なファイルを読み書きする

Boostのutf8_codecvt_facetをインクルードして、imbueでストリームに設定してやればOK。 libs/detail/utf8_codecvt_facet.cppもインクルードしてやらないとリンクエラーが発生。 UnicodeStringをstd::wstringにしてもちゃんと読み書きできる。 参考URL: htt…

Boost String Algorithms Libraryの使い方 その2:文字列比較系関数

残念ながら、比較系の関数群はC++Builder2010では動作しない。ソースは不本意ながらも(マテ)Visual Studio 2008で動作したのをコピペ。 1.contains/starts_with/ends_with containsは文字列を「含んでいる」か、starts_withは「始まっているか」、ends_withは…

覚え書き:Eclipse+PHP+XDebugでWebアプリを作成する

モノになるか不明だけど、PHPをいじる可能性が出てきたので覚え書き。以下の手順でうまくいった。 XAMPP(http://www.apachefriends.org/jp/xampp-windows.html)とPleiades All in One(http://mergedoc.sourceforge.jp/index.html#/pleiades.html)をダウンロ…

第16回 エンバカデロ・デベロッパーキャンプ バーチャル(一日目)で喋ってきた。(の続き)

セッションの資料とサンプルコードがアップされました。興味がある方は参考にしてください。 で、富永さんのセッション(1E)とおいらのセッション(1B)でAnsiStringからUnicodeStringへの移行に微妙に差異が。 C++Builderの場合、AnsiStrings.hppをインクルー…

第16 回 エンバカデロ・デベロッパーキャンプ バーチャル(一日目)で喋ってきた。

毎回反省ばっかりだけど、とにもかくにも「しゃべり」は何とかしないと。何を言っているのか判らなかったら申し訳ないです。 今回は「チュートリアル」ってことでガイシュツ*1なネタを多めにしたつもりだったけど、受けたかどうかは判らない。内容のバランス…

C++ネタ2題

その1: 記事自体はものすごくいいネタなんだけど、1点だけ疑問符が。 プリインクリメントよりもポストインクリメントを優先して使用すること の節だけど、プリインクリメント(++i)とポストインクリメント(i++)は、int a, i; // a = ++i; i = i + 1; a = i; …

1ドット間隔の点線を描画するペンを作成する

TPenのStyleプロパティにpsDotを設定しても1ドット間隔の点線を描画してくれない。この場合はExtCreatePen APIでジオメトリックペンを作成し、それをTPenに結びつける。 LOGBRUSH logBrush; logBrush.lbColor = RGB(0x00, 0x00, 0x00); logBrush.lbHatch = 0…

Boost 1.42.0リリース

C++Builder 2010でビルドするにはhttp://blogs.embarcadero.com/ddean/2009/09/23/34847の方法に従えばOK。ただし、いくつかの修正が必要。%BOOST_ROOT%は展開先フォルダとする。まず、%BOOST_ROOT%\boost\config\compiler\borland.hppの21行目の"#if (__BOR…

boost::optionalを使って、Nullableなイテレータを実装する

boost::optionalは通常の値に「無効値」を加える仕掛け。 関数などの戻り値でNULLとか0とか-1を「無効値」と扱うケースがあるけど、そうはいかない場合に有効。 あるいは、STLコンテナの「どこも指していない」イテレータが欲しい場合とか。 //-------------…

2010!! & Re:C++プログラマのレベル10

新年早々、C++プログラマのレベル10というポストに釣られてみた。 自己申告するとレベル5とレベル8の間かな・・・。少なくとも、過去に書いた自分のコードについては赤面するし、Boost無しでは生きていけない体になってしまったから、遠慮無くガンガン使う。…