第19回 エンバカデロ・デベロッパーキャンプでしゃべります。

毎度お馴染みですが、第19回 エンバカデロ・デベロッパーキャンプでまたしゃべります。 内容は、過去に掲載したOpen Tools APIに関する3点と、 Open Tools API その0:概要 - C++Builder好きの秘密基地 Open Tools API その1:"Hello,World!"を表示してみる…

C++Builder XE Starter/Delphi XE Starterが発表

かねてから要望が多かった個人向けエディションのC++Builder XE Starter/Delphi XE Starterが発表。Delphi関連は有志の方がまとめてくれているのでC++Builderの分について少々。 Delphi/C++Builder XE Starterの機能制限 DEKOのざつだん。 個人的にC++Bu…

Unified InterbaseをC++Builder XEで試してみた。

かねてから、Pro版で使用可能なFirebird/Interbase用のコンポーネントを探していて、 Unified Interbaseコンポーネントをつかってみた(その1) Delphiッこ倶楽部東京出張所でUnified Interbaseコンポーネントの解説記事 という記事がポストされていたので…

JVCLのTJvBalloonHintを使う

QC#66768によると、TBallonHintは任意の位置にバルーンヒントを表示できないっぽい*1ので、代替としてJVCLのTJvBalloonHintを使ってみる。TJvBalloonHintはTBallonHintをJVCLが拡張したコンポーネントでは無いので、使い方が根本的に違う。あと、現時点での…

ヒントの内容をHTML形式で定義して表示する

通常のポップアップヒントでは出来ない強調表示や文字の色変えをHTMLで定義して描画してみる。ただ、ポップアップヒントを表示する目的だけでIEコンポーネントやGeckoを使うのはヘビーなので、JVCLが用意してくれている簡易HTMLレンダリングルーチンを使用。…

TCustomForm::OnCreateでの注意点

フォーム作成時のエラー処理でちょっとハマったので、ほとんど覚え書き。アプリケーションの設定ファイルをアプリケーションと同じフォルダに置くことはよくあること*1だけど、設定ファイルが無い場合はデフォルト値で初期化するのではなく、アプリケーショ…

乗るしかない、このビッグウェーブに!

だ、そうです。 ちうことで、MacBook Air 11インチ欲しい!

BOOST_FOREACHの使い方

C++のコンテナ類を列挙するときに便利なのがboost::foreach。可変長配列であるvectorを列挙する場合は以下の感じ。 //--------------------------------------------------------------------------- #include <iostream> #include <string> #include <vector> #include <boost/foreach.hpp> #include <tchar.h> //-</tchar.h></boost/foreach.hpp></vector></string></iostream>…

Open Tools API その2:メニューの差し替えとノーティファイアインターフェース

IDEのメニューを差し替えるには、IDEそのもののサービスであるINTAServicesのMainMenuプロパティを取得する。 これはTMainMenu型なので、通常のメニューにアクセスのと全く変わりなし。 procedure TFilterWizard.DataModuleCreate(Sender: TObject); var i: …

PrintScreenキーを無効にしてスクリーンショットを無効化する

セキュリティ的に絶対的な効果はないけど、アプリケーションの実行中にPrintScreenキーを無効にしてスクリーンショットを撮れなくするのはそれなりの抑止力があるはず。キーストロークをWindowsに登録するホットキーはフックよりも実装が楽。元ネタは、ここ…

コードフォーマッタープラグイン for RAD Studio XEを作ってみた

RAD Studio XEに実装されたコードフォーマッターがC/C++の細かいところまでフォローしてくれないので、メジャーなコードフォーマッターであるUncrustifyをRAD Studio XEのコードエディタに適用するプラグインを作ってみました。バイナリ(UncrustifyRS.bpl)…

Universal Character Set Detector C LibraryをC++Builder XEから使用する

Mozillaのエンコーディング自動判別ライブラリである「universalchardet」をDLL化したのをC++Builderで動作させてみました。C++Builderでの修正箇所はprmem.hの「#include 」を「#include 」にするだけ。アーカイブはhttp://a7m.sakura.ne.jp/SOURCE/univers…

RadPHPでエンコーディングがBOM無しUTF-8であるソースコードがANSIと見なされる場合の回避策

RadPHPを使ってみて、ちょっと気になった点がありQCに登録したら、早速回答が来たので覚え書きとして記録。こんな感じのソースファイルを作成して、エンコーディングをUTF-8としてBOM無しで保存。 '; print '<BODY>'; print 'これはPHPのソースコードで、エンコー</body>…

Update Pack 1 for C++Builder XEのBoost Update 1についてのちょっとした注意

Boost Update 1を含むRAD Studio XE/C++Builder XE Update1がリリース。ただし、Boost Update 1にすると、boost::tupleを使っている部分でコンパイルエラーになるので以下の部分を修正。$(BDS)\include\boost_1_39\boost\tr1\detail\config.hppの48行目、"(_…

Open Tools API その1:"Hello,World!"を表示してみる

プロジェクトの作成 IDEへのアドオンは、パッケージを作成してそれをIDEに「登録」することで実装される。RAD Studioの場合、[ファイル|新規作成|パッケージ-Delphi]で新規プロジェクトを作成する。Open Tools APIのクラスやインスタンスは通常のプロジェク…

Open Tools API その0:概要

戯言前口上 RAD Studioにコードフォーマッターが実装されても、残念ながら、宗教論争にすらなるC/C++のコーディングスタイルすべてをカバーし切れていないのが不満。ということで、RAD Studioのコードエディタ上からGNU IndentやUncrustifyといった既存のコ…

ファイル検索ツールのバグフィックス

ファイル検索ツールで文字判定時に例外が発生する場合があるのでそれを修正しました。 アーカイブ:http://a7m.sakura.ne.jp/APPS/TextMatch100_2.zip ソースコード:http://a7m.sakura.ne.jp/APPS/TextMatch100_2.source.7z あと、バイナリファイルも検索で…

RAD Studio XEからSSHトンネリングを利用してSunversionリポジトリにアクセスする

LinuxやFreeBSDといったUnix系OSにSSHとSubversionがインストールされていれば、RAD Studio XEからでもSSHトンネリングを利用してリモートのSubversionのリポジトリにアクセスできる。 サーバーは以下のように設定されているものとするので、適宜読み替えて…

ファイル検索ツールを作ってみた

いわゆる、GUI付きGrepを公開しました。詳細はアーカイブ中のヘルプファイルを参照してください。ちなみに、元ネタは第12回デベロッパーキャンプ「C++Builder ライブラリ徹底活用法」のサンプルコードで、こいつをブラッシュアップしたもの。既存のテキスト…

第17回 エンバカデロ・デベロッパーキャンプ セッションB2自己フォロー その4:コンポーネントTJvWizardについて

本編では時間が足りなくなりそうなので思いっきり端折ったTJvWizardについての補足。こいつは、よくあるウイザード画面を実現するコンポーネントでJVCLのインストーラーもこいつを使用してる。 使い方はTPageControlとTTabSheetに近く、TPageControlに「次へ…

第17回 エンバカデロ・デベロッパーキャンプ セッションB2自己フォロー その3:エディタコンポーネント SynEditについて

本編で軽く紹介したSynEditについての修正アーカイブを公開しました。修正点は以下の通り。 RAD Studio XEのカラースキーマ取り込み(Delphi/C++) RAD Studio XE用のプロジェクトで、C++Builderでも使用できるようにした RTF形式の出力で、日本語文字列が化…

第17回 エンバカデロ・デベロッパーキャンプ セッションB2自己フォロー その2:Delphi用のプロジェクトしかないコンポーネントをC++Builderにインストールする

RAD Studio(C++BuilderとDelphiの両方)がインストールされている場合は、Delphi用のプロジェクトのプロジェクトオプションを変更することによって、C++Builderのプロジェクトでも使用可能。当然、コンパイル後のパッケージではなくソースコードが必要。 RA…

第17回 エンバカデロ・デベロッパーキャンプ セッションB2自己フォロー その1:JCL/JVCLをRAD Studioへインストールする

RAD Studio XEにインストールする場合は以下の点に注意。RAD Studio XEはJCL2.21 & JVCL2.40で対応。これらは、パートナーDVDに含まれている。 $(BDSCOMMONDIR)*1にフォルダ"hpp"を作成する。C++Builderが使用するJCLのヘッダファイルはここに生成される。*2…

第17回 エンバカデロ・デベロッパーキャンプ セッションB2自己フォロー その0:Q&Aとその補足

会場とtwitter経由で質問事項があったのでそれの文書化とその補足。 Q1.JCL/JVCLの安定度は? 自分が使っている分には問題なし。実際、お客さんへの納品物にかなり使っています。会場では「DB関連は怪しいかも」と発言したけど、補足するとC++Builder6の頃で…

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

参加者の皆様お疲れ様でした。 うまくしゃべれたか判りませんが、質問はTwitterかここのコメント欄で受け付けます。最低、自己フォローとしてやらないといけないのは、以下の4点。 JCL2.21 & JVCL2.40でのインストールの変更点とC++Builderにインストールす…

JCL2.21 & JVCL2.40リリース

Delphi/C++Builder XEに対応した、オープンソースライブラリ&コンポーネントのJCL2.21とJVCL2.40が正式リリース。デベロッパーキャンプの前に正式版が出て何より。と言っても、XEのパートナーDVDにはしっかり含まれているので、正式リリースは少し前だった…

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を追加するだけ。以下は…