第17回 エンバカデロ・デベロッパーキャンプ 開催告知

性懲りもなくまたしゃべります。 JVCLネタ中心でしゃべる予定ですが、JVCLのコンポーネントのうち使い方が判らないのがあれば解説します。 もちろん、全部把握している訳ではないので、自分の知識と持ち時間の範囲で。 リクエストがあれば、twitterの#dcamp_…

C++Builder 2010 でHTMLヘルプを使用する

既に情報は出ているけど、個人的なニーズがあってまとめてみた。 1. アプリケーションがHTML Helpを表示するようにする。 適当なソースコード(WinMainがあるコードかメインフォームのコードが一番無難かも)に以下の2行を追加。#include <HtmlHelpViewer.hpp> #pragma link "HTML</htmlhelpviewer.hpp>…

dbGo(ADO)を使ってODBC経由でCSVファイルをパースする

前準備: Windowsが64bit版の場合は、コントロールパネルの「ODBC (32ビット)」ではなく、32bit版の"C:\Windows\SysWOW64\odbcad32.exe"を実行する。 ユーザーDSNかシステムDSNに"Microsoft Text Driver"が含まれているか確認。 接続: OLE DB プロバイダー…

自分自身のリソースからアプリケーション名とバージョン番号を取得する

C++Builderの[プロジェクト|オプション|バージョン番号]で設定したバージョン番号を取得するには、GetFileVersionInfoとVerQueryValueを使用してアプリケーションの情報を取得する。VerQueryValueで戻ってくるサイズは文字数。 UnicodeString GetApplicat…

新雑誌:プログラミングの魔導書

噂の新雑誌キタ━━━━(゚∀゚)━━━━!! Sランク魔導師の皆様謹製のネタということで、濃すぎてついて行けるかどうか判らないけど絶対に買う。 書籍版を買うつもりだけど、PDF版はどうするかかなり迷う。

Mustangpeak component for C++Builder 2010

Mustangpeak VirtualShellToolsを使いたくなったので、C++Builder 2010でビルドするためのプロジェクトを作ってみました。内容については一切無保証です。プロジェクトファイルは以下の場所から入手できます。http://a7m.sakura.ne.jp/SOURCE/Mustangpeak_CB…

C++Builder2010にDelphi用のシェルコントロールコンポーネントをインストールする。

$(BDSCOMMONDIR)\Demos\CPP\Apps\ShellControlsにある、C++Builder用のシェルコントロールコンポーネントが不安定なので、Delphi用のサンプルをインストール。 [ファイル|新規作成|パッケージ]で新規パッケージを作成する プロジェクトを保存。プロジェクト…

C++Builder/Delphiロードマップ発表&次期バージョン"Fulcrum"のフィールドテスター募集

フィールドテスター募集:http://edn.embarcadero.com/article/40584 新ロードマップ:http://edn.embarcadero.com/article/40588ロードマップは次の"Fulcrum"でクロスプラットフォーム対応の第一弾としてMacOS Xに対応。次の次の"Wheelhouse"でLinux対応。…

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無しでは生きていけない体になってしまったから、遠慮無くガンガン使う。…

RAD Studio 2010 Update 4/5 Released

NickのBlog:http://blogs.embarcadero.com/nickhodges/2009/12/14/39338 日本語でのリリースノート:http://edn.embarcadero.com/jp/article/40243/ 撤回されたRAD Studio 2010 Update 2/3に+αしたRAD Studio 2010 Update 4/5がリリース。当然、起動時に製…

Hotfix 2 for Delphi, C++Builder and RAD Studio 2009リリース

CB/DEL/RS 2009とWindows7の組み合わせで発生するデバッガの問題を解消するHotfixがリリース。 こいつも、ようやくって感じだけど、2010のUpdate2と3の修正版まだぁ?(AA略

第15回 エンバカデロ・デベロッパーキャンプに行ってきた

今回は観客席側w ようやく、「Webサービス」の意味というか位置づけがわかった。自分の無知を再確認したというか、ぶっちゃけ、これだけで参加した甲斐があった。 C++にもリフレクションがあってもちょっといいかな・・・。__closureを駆使すれば何とかなる…

C++Builderのライブテンプレート

ライブテンプレートが手軽で、かつ、かなり便利なのでライブテンプレートの作り方とC++Builder2009のライブテンプレートを使うを参考に作ってみた。作ったのは、アクセサの自動生成。アクセサとプロパティの宣言部分(accessor_decl.xml) <codetemplate xmlns="http://schemas.borland.com/Delphi/2005/codetemplates" version="1.0.0"> </codetemplate>

Delphi 2010 および C++Builder 2010 Update 2、Update 3(データベース パック)、Boost Library Update

リリースノート:http://edn.embarcadero.com/article/40067 C++Builder 2010の修正点:http://edn.embarcadero.com/article/40168 bcc32.exeのバージョンが6.21になったおかげで、Boost.Serializationが通ったぞ!! * + 巛 ヽ 〒 ! + 。 + 。 * 。 + 。 …

C++Builder/Delphiの色設定をUniSynEditに反映させる

UniSynEditのTSynCppSynは、C++BuilderのIDEの色設定をレジストリから取得して、その設定をUniSynEditに反映できる。ただ、残念ながらBDS2006以降に対応していないので、BDS2006以降に対応したつもり。 修正したソースは、http://a7m.sakura.ne.jp/SOURCE/Un…

C++BuilderでMSXML6を使用する

C++Builder標準のTXMLDocumentはXPathが使えないなど微妙に使いづらいので、MSXMLのタイプライブラリをインポートして使ってみる。まず、以下の手順でMSXMLのタイプライブラリをインポートする。 [コンポーネント|コンポーネントのインポート]を選択 "VCL f…

覚え書き:TStreamReaderとTStreamWriterの使い方

TStreamReaderとTStreamWriterが便利そうなので試してみた。まずは、ファイルの読み込みを行うTStreamReader。 //--------------------------------------------------------------------------- void __fastcall TForm1::Button1Click(TObject *Sender) { i…