RAD Studio XEファーストインプレッション その3:VCL&サードパーティコンポーネント編

UnicodeStringに関するちょっとした仕様変更 UnicodeString::t_char()は移行期間が過ぎたということで「非推奨」に。それに伴い、プロジェクトのTCHARのマッピングがデフォルトでwchar_tに。よって、C形式の文字列ポインタ(const wchar_t*)が欲しい場合は、c…

RAD Studio XEファーストインプレッション その2:C++ライブラリ編

C++RTLの更新 まず、ディスカッションフォーラムで問題になっていた、ストリームIOについての致命的なバグはFIXされました。こんなコードを喰わせると何故か文字化け。 #include <string> #include <iostream> #include <locale> int main() { char locale[] = "japanese"; std::locale</locale></iostream></string>…

RAD Studio XEファーストインプレッション その1:Subversion編

"Fulcrum"のコードネームで開発されていた、C++Builder/Delphiの新バージョンが"RAD Studio XE"として発表。 ベータテストをやっていたのだけど、表に出せる部分は出してもいいよとのお達しがEmbarcaderoから来たので、ほんの少しだけ晒してみる。 もちろん…

エンコーディング判別・変換ライブラリ「バベル」の使い方。

第12回デベロッパーキャンプでネタにしたmlang.dllのDetectInputCodepageがBOM無しUTF-8をWindows-1252と誤判別するので、代替としてバベルを使ってみる。使い方はヘッダファイルbabel.hをインクルードして、プロジェクトにbabel.cppを追加するだけ。以下は…

第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…

TurboPowerプロジェクトの新管理人にNick Hodges

Owl's perspectiveさま経由。 TurboPowerプロジェクトの管理人にNick Hodgesがつくとのこと。 But I should note that this isn’t an “officially sponsored” Embarcadero deal. This is at best “semi-official”. とあるから、Embarcaderoオフィシャルでは…

C++Builder 2010 Boost support&RAD Studio 2010 Update 1

C++Builder 2010付属のBoost1.39.0が更新。ただし、インストーラーで提供されてる訳ではなく、アーカイブを展開して、自前でコンパイル。出来たlibファイルを差し替えて、CG_BOOST_ROOTの値を変更する。 テストが通ったのが以下の16種類。 algorithm/minmax …

UniSynEditをC++Builder/Delphi 2010へインストールする方法

Unicodeが扱える高機能なエディターコンポーネント、unisyneditがC++Builder/Delphi 2010に対応したので、その覚え書き。 残念ながら、日本語環境ではそのままインストールできないので以下の手順を踏む必要がある。 アーカイブを公式から落として、アーカイ…

VCLからExcelにアクセス(C++Builder版)

第9回デベロッパーキャンプ セッションA2でネタになった、VCLを使ってExcelにアクセスするサンプルのC++Builder版を作ってみた。 オリジナルと違うのは読み込み元のデータベースをdbExpressでBlackfish SQLに接続したこと。 それに伴って、ソースコードに一…

第14回エンバカデロ・デベロッパーキャンプセッションT3自己フォロー(Delphi/C++Builder DB総ざらい)

C++Builder/Delphi 2010のdbExpressでInterbaseのドライバーを使ってFirebirdに接続するとエラー。 Pathは通しているけど、エラーメッセージに"Incompatible version"ってあるから、ドライバーがFbclient.dllをリネームしたgds32.dllかどうかチェックしてい…

第14回エンバカデロ・デベロッパーキャンプセッションT7自己フォロー(グリッドの特定列をボタンにする)

やることは、グリッドのセルにボタンを表示してそれに応じたダイアログ等を表示すること。コンポーネントを作らずにオーナードローでごまかす。 1.初期化 まずフォームにTDrawGridとTButtonを貼り付ける。TDBGridならばオーナードローにする 行数分だけ動的…

第14回エンバカデロ・デベロッパーキャンプで喋ってきた

来場された方お疲れ様でした。 稚拙でわからない部分があったかもしれませんが、コメント等いただければこちらでフォローします。 とにもかくにも全体的にきつかった。orz やっぱり人前で喋るのは難しい。ちょっとこけるとgdgdになる。 あとは、セッションT7…

C++Builder/Delphi 2010のデータベース関連について

後追いネタでかつ、DB関連はヘビーには使っていないけど、気になる部分が。 Professonal版のdbExpressによるリモート接続は、EULAにより不可。(2009より) FirebirdのdbExpressのドライバーは、Professional版では提供しない(リンク先PDF)。 個人的な意見…

C++Builder/Delphi 2010 RTM

RTMしますた。最終ビルド番号は3513。 ヘルプについては、DEKOさまがいろいろ言っているので、それに追加。 とりあえず、C++Builder専用のマクロについては、ごらんの有様だよ(AA略 OPENARRAYとVCL_MESSAGE_HANDLERは記述されているけどリンクがない。そもそ…

Delphiのランタイムライブラリにマルウェアを仕込む"Win32.Induc"

Delphi 4-7のRTLにマルウェアを仕込んで、そいつでこしらえたアプリを使うと拡散か・・・。((( ;゚Д゚)))ガクガクブルブル これ、Delphiがターゲットだけど、理論的にはC++BuilderとかVisual C++とかもできるはず。VC#やVBは必ずランタイムが必要だったはずだから…

Windows 7 (x64)でC++Builder/Delphi 2009のデバッガが動作しない場合の対処法

MSDNとかでWindows 7のRTM版を入手して、早速乗り換えた人も多いと思うけど、残念ながらC++Builder/Delphi 2009のデバッガで以下のようなエラーが発生。 現状での対処方法はバイナリエディタでパッチを当てるしかない。あくまでも自己責任なので、そこのとこ…

C++Builder 2010情報解禁

ちょっと出遅れたけど、C++Builderの新バージョン、"C++Builder 2010"についての情報が解禁になったので、個人的な感想とかを晒してみる。 詳しい情報は、本家とかDelphi系ブロガーの皆様に任せるとして(ぉぃ)、いち、C++Builderユーザー視点から。 現時点…

Windows 7 RTM(en) + MUI Pack

仮想マシンに入れてみたけど、全く問題なし。 MUI Packで日本語を追加して、レジストリの"HKLM\SYSTEM\CurrentControlSet\Control\Nls\Language\InstallLanguage"の値を0409から0411に変更すれば、まんま日本語版。 この方法に早く気がついておけば、必要に…

覚え書き:Windows VistaでInternet Explorerの履歴が表示されなくなった場合の対処法

元ネタはここ。 ユーザープロファイルを別ドライブに移動した場合、IEの履歴が表示されなくなるので、以下の方法で修復する。 $(HOME)\AppData\Local\Microsoft\Windows\をエクスプローラーで開く。$(HOME)は移動したユーザープロファイルがあるフォルダー。…

覚え書き:C++Builder 2009以降でコンポーネントをビルドする場合についての確認事項

C++Builder 6用のプロジェクトをコンバートして、[Delphiコンパイラ|コンパイル|構文オプション|コンパイラに渡す追加スイッチ]に-LUDesignIDEを追加するときは、Baseだけでなく、デバッグ、リリース全てに追加する。*1 Delphiのソースでコンパイルエラ…

TFormの境界線を消した場合(BorderStyle=bsNone)の移動とリサイズ

以下の設定をすれば、TFormを移動したり、サイズの変更が可能。ただし、Vistaだと境界線が残る。 class TForm1 : public TForm { __published: // IDE 管理のコンポーネント private: // ユーザー宣言 public: // ユーザー宣言 __fastcall TForm1(TComponent…