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

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

第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対応。…