2009年12月25日

TTouchKeyboardのハッキング

Chris BensenさんによるDelphi 2010の新機能の一つ、タッチキーボードのhackについての解説です。

Hacking the TTouchKeyboard Part Iではまずキーボードレイアウトの名称の一覧を取得し、この名称からキーボードレイアウトをロードします。

Hacking the TTouchKeyboard Part IIでは取得したキーボードレイアウトをXMLで読み書きする、というサンプルプログラムが紹介されています(タッチキーボードとは直接関係ない部分だからか説明省略です)。

Hacking the TTouchKeyboard Part IIIでは逆にXML表現のキーボードレイアウトをコンパイルしてリソースとしてリンクすることができる形式に変換するキーボードレイアウトコンパイラが紹介されています。

Hacking the TTouchKeyboard Part IVではXML表現のキーボードレイアウトファイルの各要素が説明されています。

(以下追記予定)

2009年12月24日

2009年12月23日

IDE Fix Pack 2.9リリース

Andreas HausladenさんのIDE Fix Pack (for Delphi/C++Builder 2007/2009/2010)がアップデートされてVersion 2.9になっています。

Andy’s Blog and Tools » New IDE Fix Pack 2.9

2009年12月18日

Windows Vista以降のOSでgsecがサービス動作のFirebirdに接続できないとき

Windows Vista以降のOSにFirebirdをインストールし、サービスとして動作させた後に、ユーザを作成するためにgsecでサーバに接続しようとするとローカルプロトコルが動作せずにエラーになることがあります。この場合は一旦Firebirdのサービス("Firebird Guardian"か、存在しなければ"Firebird Server")を停止し、firebird.confの

# IpcName = 
となっている行を

IpcName = Global\FIREBIRD
としてFirebirdを起動するとローカルプロトコルが正常に動作し、gsecで接続できるようになります(Firebird 2.x)。Firebird 1.5では

IpcName = Global\FirebirdIPI
とします。

元ねたはキムラデービーブログ | [IBDeveloper] FirebirdはWindows Vistaの上で動作しますか?設定ファイル(aliases.conf/firebird.conf)のリファレンス - Firebird WikiDoes Firebird work on Windows Vista or Windows 7?あたり。

RAD Studio/Delphi/C++Builder 2007 informal, unofficial fix for Windows 7

RAD Studio/Delphi/C++Builder 2007をWindows 7の64bit版で動作させるとデバッガで例外が発生してしまう問題(RAD Studio/Delphi/C++Builder 2009ではHotfix 2で修正されていた)の私的で非公式な修正をChris Hesikさんがリリースしています。

Chris’ CodeGear Debugger Blog » RAD Studio 2007 informal, unofficial fix available: Windows 7 problem addressed
ID: 27521, RAD Studio 2007 Debugger Fix for Windows 7

内容的にはOlaf Monienさんのバイナリパッチと同等のものに加えて、いくつかのWindows 7環境における問題のfixを含んでいるようです。なおThis fix has not been tested at all, and it is not supported in any way by Embarcadero. If it works for you, great… if not, you’ve been warned.(超訳:この修正は完全にテストされてはおらず、エンバカデロによりサポートされません。あなたの環境で動作すれば素晴らしい…んですが、もし駄目だったとしても、警告しましたよ)だそうです。

また(もうないとは思いますが)新しいアップデートがリリースされた場合はこのファイル(bordbk105N.dll)を元のものに戻すか、削除後に修復セットアップしてからアップデートを適用する必要があると思われるので注意が必要です。

2009年12月15日

RAD Studio/Delphi/C++Builder 2010 Update 4, Update 5, Boost Library Update

RAD Studio/Delphi/C++Builder 2010のUpdate 4, Update 5 (database pack), Boost Library Updateがリリースされています。2009/11/13にwithdrawとなったUpdate 2, Update 3, Boost Updateの修正に加えてそのほかの修正も行われているとのことです。

27492 Update 4, 5 & Boost Lib for RAD Studio, Delphi & C++Builder 2010
リリース ノート: Delphi 2010 および C++Builder 2010 Update 4、Update 5(データベース パック)、Boost Library Update

2009年12月14日

Delphi 2010 Handbook続報

Marco CantuさんによればDelphi 2010 Handbookは大体完成して2010/01末には書籍として販売されるようです。また新たな試みとして全体を3部に分割してPDFで月曜日(2010/12/14)から先行販売するそうです。今回は日本語訳の動きはないのですかね。

Delphi 2010 Handbook Almost Ready

2009/12/15追記: 予告どおりPDF版のPart 1が9.80USD(846JPY)で発売されました。Part 2、Part 3は15日の間隔でリリースされるそうです。

Delphi 2010 Handbook Part 1 PDF Available

2009年12月12日

Firebird 2.5 Release Candidate 1リリース

新しいスレッディングアーキテクチャを採用し、新たにSuperClassicが追加されたFirebird 2.5のRelease Candidate 1がリリースされています。RCはもう一度予定されているようです。

Firebird File Repositories (download)
Firebird 2.5 Release Notes

2009年12月10日

[書籍]Firebird徹底入門

ジュンク堂書店の新宿店で

Firebird徹底入門/木村明治はやしつとむ坂井恵著/翔泳社/ISBN978-4798119632/3,990円

を買ってきました。結構分厚いですね。表紙は残念ながら焼き鳥ではありません。

2009年12月9日

Microsoft Monthly Update 2009/12

今日はMicrosoftのセキュリティアップデートの日です。
MS09-069
MS09-070
MS09-071
MS09-072
MS09-073
MS09-074

2009年12月6日

DelphiSpeedUp 2.8/IDE Fix Pack 2.8リリース

Andreas HausladenさんDelphiSpeedUpがアップデートされてVersion 2.8になっています。Delphi/C++Builder 6/7/2005/2006/2007のデバッガのステップイン([F7]キー)の動作が改善されています(Delphi 5についてはSorry Delphi 5 users, but I can’t support you anymoreとのこと)。
またIDE Fix Pack (for Delphi/C++Builder 2009/2010)もアップデートされてVersion 2.8になっています。上記のデバッガのステップインの問題のほかに、呼び出し履歴(call Stack)とローカル変数(local variables)の表示更新を不必要に行わないようにし、Delphi/C++Builder 2010のオブジェクトインスペクタで[F1]キーが効かない問題も修正されます。

Andy’s Blog and Tools » DelphiSpeedUp 2.8 and IDE Fix Pack 2.8 released

2009年12月4日

RAD Studio/Delphi/C++Builder 2009 Hotfix 2

RAD Studio/Delphi/C++Builder 2009のHotfix 2がリリースされています。Windows 7の64bit版におけるデバッガの問題など3点の不具合を修正するものです。RAD Studio/Delphi/C++Builder 2007用のhotfixもお願いしたいところです。

Hotfix 2 for Delphi, C++Builder and RAD Studio 2009
27476 Hotfix 2 for Delphi 2009 and C++Builder 2009

2009/12/18追記: Chris HesikさんによるRAD Studio/Delphi/C++Builder 2007用のUnofficial, informal fixがリリースされました。

2009年12月2日

第15回エンバカデロ・デベロッパーキャンプ終了

スピーカの皆さん、関係者の皆さん、懇親会に参加したみなさん、おつかれさまでした。David.Iさんも下手な説明ともっと下手な英語でくだらない話を聞いていただいてありがとうございました。

ずっと放置状態でしたが、ここまでで出ていない情報をいくつか。

G1(オープニングセッション)
  • 来年(2010年)は従来のような“リアル”なデベロッパーキャンプは2回(東京、大阪)にして、“バーチャル”なものをもう2回程度、というように考えている。 by 藤井さん
    »“バーチャル”なら、参加者はもちろんセッションスピーカも“リアル”ではなかなか来てもらえないような人(たとえばMarco CantuさんとかDEKOさんとか)にも出てもらいやすくなる、と。ただしwebセミナーの“盛り上がらなさ”感などを考えるとある程度の聴衆は必要かも、とか、時間帯は色々な意見があって難しい(webセミナーでも時間帯の希望はばらついていたそうで)、とか、時間差をつけての録画の再配信って、とか、一度小規模な形で試してみるか、とか、うまくいくようにするには考えなければいけないことがたくさんありますね、なんてお話もさせていただきました(番外編で)。

G2(コミュニティトーク)
  • Project Xでは(KylixのようにIDEを移植するのは難しいので)クロス開発、リモートデバッグの形態になる。
  • VCLのWindows 7対応は(Windows 7とDelphi 2010のリリースのタイミングの関係から)まだ不足しているので今後対応を進めていきたい。
  • Unicodeの扱いが難しいのは新しいやり方になれるしかない。
    »Unicodeの扱いは.NETでのサポート範囲に留まり、独自のアプローチはあまり考えていない、というようなニュアンス。
  • マルチコアをよりうまく使うようなもの(文法的なものやライブラリなど)は現在開発中の新しいコンパイラで考えたい。
  • 分散処理へのアプローチはDataSnapで。
  • クラウドコンピューティングについては未だ業界標準が存在していないのでなんとも。
    »コンポーネントでサポートするような方向性はありかもしれない。


2009/12/15追記: セッション資料がダウンロードできるようになっています。またはやしさんによるストリーミングビデオも見られるようになっています。

第15回 エンバカデロ・デベロッパーキャンプ - 資料ダウンロード
第15回エンバカデロ・デベロッパーキャンプ | Tomneko blog

2009/12/24追記: G1「Delphi/C++Builderの今そして未来」のセッションビデオが公開されています。またG1/G2関係の情報を追加しました。

セッションビデオ「Delphi/C++Builderの今そして未来」

2009年11月30日

FlameRobin

はやしさんの"Firebird RDBMS 傾向と対策1"を見ていたらFlameRobinというFirebirdの管理ツールが紹介されていました。Firebird日本ユーザ会からダウンロードできる日本語版は0.8.3ですが、公式のsorceforgeでは最新が0.9.3となっています。

Firebird RDBMS 傾向と対策シリーズ無償公開

今はなきPSネットワークから出ていたFirebird RDBMS 傾向と対策(全4巻)をPDF化したものをはやしさんが公開してくださっています(焼き鳥本出版記念?)。

Firebird RDBMS傾向と対策 ◁ TomnekoSoft.com
Firebird Books :: Firebird関連の本・書籍の紹介

内容はFirebird 1.0ベースですが、それを念頭においておけばInterBase/Firebirdのユーザにとって有益なものだと思います。

2009年11月25日

Direct2Dのデバッグについて

Chris Bensenさんによると、Intelのグラィックドライバの問題で、(Delphi/C++Builder 2010の新機能である)Direct2Dをデバッグしようとするとデバッガの動作が非常に遅くなる現象が確認されています。これはDelphi/C++Builder固有の問題ではなく、Visual Studioでも発生するとのことで、NVIDIAのビデオカードを使えば問題ないようです。

Chris Bensen: Debugging Direct2D

Firebird徹底入門発売決定

はやしさんからアナウンスがあった焼き鳥本ですが、2009/12/09に翔泳社から発売されるようです。

Firebird徹底入門(amazon.co.jp)/木村明治、はやしつとむ、坂井恵著/翔泳社/ISBN978-4798119632/3,990円

2009年11月20日

InterBase Roadmap

InterBaseのロードマップが公開されています。2009年にリリースされたInterBase SMP 2009ではセキュリティと暗号化にフォーカスしていましたが、2010/09にリリースを計画しているInterBase SMP 2011では
  • Windows x64版の追加
  • データベースクラウド
  • パスワード暗号の強化
  • Windows 7サポート
  • エンバカデロのデータベースツールによるサポート
が行われるようです。また将来的(2011年以降)には
  • ストアドプロシージャのデバッグ機能
  • ユニバーサルトリガ
  • チューニングを行うためのSQLヒント
  • より大きいインデックスキー
  • クライアント/サーバプロトコルの最適化
も計画されているようです。

InterBase Roadmap

2009/11/24追記: 日本語のInterBaseのロードマップが公開されています(ロードマップそのものは英語のままですが)。

2009年11月12日

Webセミナー Delphi/C++Builder 2010 - タッチプログラミング

11/12 - Webセミナー「Delphi/C++Builder 2010 - タッチプログラミング」
無事に終了しました。次はDirect2Dとかやってほしいですね。

RAD Studio/Delphi/C++Builder 2010 Update 2, Update 3, Boost Library Update

RAD Studio/Delphi/C++Builder 2010のNovember 2009 Update(Update 2/Update 3/Boost Library Update)がリリースされています。

27438 November 2009 Update for RAD Studio, Delphi & C++Builder 2010
リリースノート: Delphi 2010 および C++Builder 2010 Update 2、Update 3(データベース パック)、C++Builder 2010 Boost Update

またDavid DeanさんがC++Builder 2010のBoostライブラリのサポート状況を更新しています。

David Dean » C++Builder 2010 Boost support (Update)

2009/11/13追記: November 2009 Update(Update 2/Update 3/Boost Library Update)は現時点でwithdrawとなった模様です。A7Mさんが指摘しているWindows 7 x64上でのライセンスの認識の問題が原因でしょうか。
Keep seeing registration dialog after Rad Studio 2010Update 2 & 3 installed

2009/11/14追記: we are working on a fix that will cover everyoneだそうです。
Nick Hodges » Blog Archive » The Coming RAD Studio Update

2009年11月11日

Microsoft Monthly Update 2009/11

今日はMicrosoftのセキュリティアップデートの日です。
MS09-063
MS09-064
MS09-065
MS09-066
MS09-067
MS09-068

2009年11月10日

Webセミナー Delphi/C++Builder 2010 - dbExpress/DataSnap開発手法

11/10 - Webセミナー「Delphi/C++Builder 2010 - dbExpress/DataSnap開発手法」
無事終了です。参加して気が付いたことを。
  • Office Live Meetingのクライアントに参加者として表示されるのは登録時の"名"(Firstname)の部分なので要注意(日本向きな仕様ではありませんが、しょせんMSですから)。
  • webクライアント(Live Meeting Web Access)だと音声が出ないので、Office Live Meetingクライアントを使用しましょう。
  • 質問は回答が行われるまで新しいものを出せません(質問を修正することは可能)。

今回説明に使ったPPTファイルはそのうちにPDF化してダウンロードできるようにしていただけるということです(できればサンプルソースもお願いしたいところです)。

2009/11/11追記: セミナー中に出た質問についての情報がTeam Japanに掲載されています。

Team Japan » DataSnap 2010 と HTTPS

Firebird 2.5レビュー

近日(?)公開予定のFirebird 2.5についてはやしさんOSC 2009 Tokyo/Fallで講演したときの資料を公開しています。Firebird 2.5の目玉機能であるSuper Classic Serverについての説明やWindows/Linux上でのMySQL/PostgreSQLとのパフォーマンス比較など、なかなか興味深い資料です。

TomnekoSoft.com :: Firebird RDBMSの情報
Firebird2.5がやってきた!~MySQL、PostgreSQLとのパフォーマンス比較~ ◁ TomnekoSoft.com

また2009/12/上旬には翔泳社から木村明治さん、はやしつとむさん、坂井恵さんの共著で"Firebird徹底入門"が発売されるとのことです。Firebird=焼き鳥、ですか。

2009年11月9日

JVCL 3.39リリース

JVCL(JEDI Visual Component Library)がアップデートされてVersion 3.39(JCL Version 2.1.1)になっています。

Browse JEDI VCL for Delphi Files on SourceForge.net

2009年11月5日

第15回エンバカデロ・デベロッパーキャンプ日程決定

第15回エンバカデロ・デベロッパーキャンプは2009年12月02日に東京国際フォーラムのホールD1、会議室G502/G510で開催されます。今回はDavid Iさん(エンバカデロ・テクノロジーズ チーフエバンジェリスト)がいらっしゃるとのことです。

2009/11/20追記: 番外の懇親会は前回と同じところだそうです。こういうのは好き嫌いが分かれるところですが。
Team Japan » 第15回デベロッパーキャンプ番外セッション - 懇親会場決まりました

2009/11/27追記: EDNにアーティクルが追加されています。
第15回 エンバカデロ・デベロッパーキャンプ
デベロッパーキャンプ番外セッション 「デベロッパートーク BOF」

2009/11/30追記: 会場のホールD1(ホールDの1F)、会議室G502(ブロックGの5Fの北端)、会議室G510(ブロックGの5Fの南端)は相互に離れているとのことです。セッション間の移動には注意が必要ですね。また、はやしさんがUstreamによる中継を企画しているそうです。
Team Japan » いよいよ12月2日開催、デベロッパーキャンプ
第15回エンバカデロ・デベロッパーキャンプ Usream配信

2009年10月30日

RAD Studio/Delphi/C++Builder 2010 Help Update 1

RAD Studio/Delphi/C++Builder 2010のHelp Update 1がリリースされています(予定よりも1ヶ月遅れのような気がしますが)。

27420 Help Update 1 for RAD Studio, Delphi & C++Builder 2010
Delphi 2010 および C++Builder 2010 Help Update 1
Known Problems in the Help - RAD Studio

2009年10月22日

C++Builder 2009ファーストガイド完結

2009/07から10回に分けて公開されてきたC++Builder 2009ファーストガイドが無事に完結しました。執筆者の皆さん、おつかれさまでした。

2009年10月21日

MDIアプリケーションにおけるリボンコントロールの不具合の回避

リボンコントロールをメインフォームに使用したMDIアプリケーションでは、MDI子フォームを最大化すると子フォームのリストア/クローズボタンがメインフォーム上の不正な位置に描画されてしまう、という不具合があり、QualityCentralにも報告されています(QC67835QC70321QC73386)。この問題を修正するコンポーネントをJED Softwareさんが公開しています(近日中にCodeCentralにも投稿予定とのこと)。

jed-software.com » Blog Archive » VCL Ribbon MDI Fix

2009年10月15日

第14回エンバカデロ・デベロッパーキャンプ セッションビデオ

2009年09月02日に大阪で開催された第14回エンバカデロ・デベロッパーキャンプのミガロの吉原さんのテクニカルセッション(T6)のビデオが公開されています。

セッションビデオ「知って得する!現役ヘルプデスクが答えるDelphiテクニカルエッセンス4.0」

2009年10月14日

C++処理系のC++0xサポート状況

主要なC++処理系のC++0xサポート状況をまとめたページが2ちゃんねるのC++0xスレッドで紹介されていました(結構前の話ですが)。

C++0xCompilerSupport - Stdcxx Wiki

これを見るとC++Builder 2009の対応状況はまあまあといったところでしょうか。最もアグレッシブなのはgccで、次がIntel C++、VC++とC++Builderはどっちもどっちな感じです。

アプリケーションの多重起動を禁止するのにglobal atomを使用するのは適切ではない

アプリケーションの多重起動を禁止するでは多重起動禁止にmutexを利用しましたが、別解としてatomの一種であるglobal atomを利用する、という方法も(あまり主流ではないにしても)出回っているようです。しかしGlobalAddAtom(ja)で追加したglobal atomは明示的にGlobalDeleteAtom(ja)で削除しなければ自動的に消滅することはありません。このためアプリケーションが何らかの理由で異常終了してしまうと再実行することができなくなってしまいます。実際にプロジェクトソースを
program Project2;

uses
  Windows,
  SysUtils,
  Messages,
  Forms,
  Unit2 in 'Unit2.pas' {Form2};

{$R *.RES}

const
  { Atom name }
  CAtomName: String = '{7B0C8E12-F168-4DA4-89C9-E4C86BE404FE}';

var
  AppAtom: ATOM;
  Wnd: HWnd;
  AppWnd: HWnd;
begin

  Application.Initialize;
  Application.MainFormOnTaskbar := True;

  if GlobalFindAtom(PChar(CAtomName)) <> 0 then
  begin
    { Search main form }
    Wnd := FindWindow(PChar('TForm2'),nil);  // Class name of the main form
    if Wnd = 0 then
    begin
      Exit;
    end;

    { Bring foreground and activate }
    SetForegroundWindow(Wnd);

    { Get window handle of TApplication }
    AppWnd := GetWindowLong(Wnd,GWL_HWNDPARENT);
    if AppWnd <> 0 then
    begin
      Wnd := AppWnd;
    end;

    { Restore if iconized }
    if IsIconic(Wnd) then
    begin
      SendMessage(Wnd,WM_SYSCOMMAND,SC_RESTORE,-1);
    end;

    Exit;
  end;

  AppAtom := GlobalAddAtom(PChar(CAtomName));
  try
    Application.CreateForm(TForm2, Form2);
    Application.Run;

  finally
    GlobalDeleteAtom(AppAtom);
  end;

end.

として一つ目のインスタンスを実行し、強制的に終了してから二つ目のインスタンスを実行してみましたが、GlobalFindAtom(ja)で有効なglobal atomが取得できてしまい、ログオフ/再起動を行うまでプログラムは有効に起動できません。ということでアプリケーションの多重実行を禁止するのにglobal atomを使用するのは不適切である(global atomの用途として適切ではない)、という結論に達しました。

元ねたはTrial Delphi Programs: Allow Only One Application Execution Per Windows Session

Microsoft Monthly Update 2009/10

今日はMicrosoftのセキュリティアップデートの日です。
MS09-050
MS09-051
MS09-052
MS09-053
MS09-054
MS09-055
MS09-056
MS09-057
MS09-058
MS09-059
MS09-060
MS09-061
MS09-062

2009年10月8日

Firebird 1.5.6リリース

Firebird 1.5系列の最終版となる(予定の)Firebird 1.5.6がリリースされています。

Firebird File Repositories(download)
Firebird 1.5.6 Release Notes

タッチアプリケーションのデモ

Cris Bensenさんが先日のCodeRage 4で使用したタッチアプリケーションのデモについて説明しています。

Touch Demo Part IではまずフォームにDirect2Dサーフェースを用意します。WM_ERASEBKGNDメッセージハンドラではバックグラウンドの消去をしないようにして、オーバライドしたPaintでダミーの描画を、同じくオーバライドしたResizeでDirect2Dサーフェースのリサイズを行うようにします。

Touch Demo Part IIでは1秒あたりの描画フレーム数を計測、描画する処理を追加して、10msec毎に再描画を発生させます。

Touch Demo Part IIIではタッチした位置をグラフィカルに表示するためのTGlowSpotとそのリストを用意して、これらをPaintで描画するようにします。WM_TOUCHメッセージハンドラでタッチしたポイント(複数)に対応したTGlowSpotを生成するようにして、最後にRegisterTouchWindowUnregisterTouchWindowでこのフォームでWM_TOUCHメッセージが発生するようにします。

Touch Demo Part IVではイナーシャ(inertia/慣性)をサポートするためにTGlowSpotに_IManipulationsEvents COMインタフェースを追加してその処理を行わせ、最後にマウス動作をタッチ動作に統合します。

デモはこれで完成、ということでソースコードがCodeCentralで公開されています。

27469 Touch Demo

2009/11/20追記: Part IVの内容を追加しました。

2009年10月1日

RAD Studio 2009対応 TeeChart Standard 8.05アップデート

RAD Studio 2009対応 TeeChart Standard 8.05アップデートがリリースされています。RAD Studio 2010に含まれるものと同等になるようです。

RAD Studio 2009対応 TeeChart Standard 8.05アップデート
27339 TeeChart Standard 8.05 for RAD Studio 2009
Release Notes

Asphyre Sphinx

Delphi/C++Builderで2D/3Dグラフィックを扱うためのライブラリとしてはOpenGLのラッパであるGLSceneがメジャーどころですが、Stack Overflowを眺めていたらAsphyre Sphinxというフレームワークを見つけました(ライセンスはMPL 1.1)。Delphi 2006/Turbo Delphi/Delphi 2007対応(Delphi 2009/2010対応はまだ)で、DirectX 7/DirectX 9/OpenGLをサポートしているとのことです。

元ねたはStack Overflow3D graphics in Delphi/Native TForm GUIs

2009年9月29日

IDE Fix Pack 2.71リリース (RAD Stdio 2009のみ)

Andreas HausladenさんIDE Fix Pack 2009がVersion 2.71にアップデートされています

Andy’s Blog and Tools » IDE Fix Pack 2.71 for RAD Studio 2009 (only)

SourceForge TurboPowerプロジェクト

2003年にオープンソース化されたTurboPowerプロジェクト(MPL 1.1)ですが、Nick Hodgesさんが管理者(tpsfadmin)となり、公式な形で提供されていく(But I should note that this isn’t an "officially sponsored" Embarcadero deal. This is at best "semi-official".)ことになったそうです(オープンソース化された経緯については旧Delphi-MLの73894以下のスレッドが参考になります)。現在TurboPowerプロジェクトには以下のプロジェクトが存在しています。

2009年9月28日

RAD Studio 2010の新機能その13

VCL/TTimeSpanレコード型
TTimeSpanユニットに時間差を表すTimeSpanレコード型が追加されています。詳細はWings of WindさんRAD Studio 2010 Review #13: – The Persistence of Time

コンパイラ/RTTI
新しいRTTIを利用して別パッケージ内に存在する未知のクラスのインスタンスを生成する方法。詳細はTeam JapanDelphi 2010: RTTI新機能を試す(動的なインスタンス生成)

これで持ちネタは終了です(というかこの2つを書くのを忘れていました)。

2009年9月25日

2009年9月24日

C++Builder 2010のBoostライブラリサポート

David DeanさんがC++Builder 2010におけるBoostライブラリ(日本語訳)のサポート状況を公開しています。またCodeCentralからパッチ済のBoost 1.39.0がダウンロードできるようになっています。

David Dean » C++Builder 2010 Boost support
27358 C++Builder 2010 Patched Boost 1_39_0

2009年9月17日

RAD Studio オンラインヘルプシステム

ちょっと古い話題ですが、RAD Studioのヘルプシステムがwiki上に再構築されています。

英語版(オリジナル)
日本語版
コードサンプル

Dee Ellingさんによれば、
  • wikiの内容をMicrosoft Help2形式に直接変換できる(Help Updateは2009/09と2009/11に予定されている)。
  • 内容を簡単に編集、更新できる(当社比)。
  • 登録ユーザはディスカッションタブに書き込むことができる(英語版のみ)。
  • 英語版以外のものは翻訳したものが流し込まれる。
  • wikiへのログオンは現時点ではEDNとは異なるシステムになっている(将来はシングルサインオンシステムに統合したい)。
だそうです。システムのレスポンスがあまりよくないのが難点ですね。

元ねたはDee EllingさんWiki Wiki Help2 Wiki

2009年9月15日

クラスコンストラクタとクラスデストラクタ

Delphi 2010で追加されたクラスコンストラクタクラスデストラクタですが、その名に反してクラスだけではなくレコード型に対しても定義することができます。またジェネリクスを含むクラス/レコード型に対するクラスコンストラクタ、クラスデストラクタは複数回呼び出されることがあります(Delphiのジェネリクスの実装がC#やJavaのようにライブラリによるものではなくC++のようにコンパイラによるものであることを考えれば当然なのかもしれませんが)。

Class constructors and Generics | YAPB

元ねたはNick HodgesさんRandom Thoughts on the Passing Scene #127

2009年9月13日

Delphi 2010のRTTIと属性

Robert Loveさんによる、Delphi 2010の新機能の一つであるRTTI(Run Time Type Information)の拡張と属性(Atributes)についての解説記事です(全1213回の予定)。
  1. Delphi 2010 RTTI - The basics (新しいRTTI(en)の基本的な使用方法)
  2. Using Attributes and TCustomAttribute descendants (属性として使用するTCustomAttribute(en)とその派生クラス)
  3. Exploring TRttiType and descendants in Depth (実行時に取得した型情報を扱うためのTRttiType(en)とその派生クラス)
  4. Introduction to TValue (新しいRtti.pasのTValue(en)レコード型)
  5. Exploring TRttiMember Descendants in depth (Part I) Properties and Fields (RTTI情報を扱うためのTRttiMember(en)とその派生クラスで、フィールドを扱うTRttiField(en)とプロパティを扱うTRttiProperty(en))
  6. TRttiContext.Create() & TRttiContext.Free() (TRttiContextのCreateとFreeがコンストラクタ、デストラクタ呼出ではないことについて)
  7. Exploring TRttiMember Descendants in depth (Part II) Methods (TRttiMember(en)の派生クラスのTRttiMethod(en)経由でメソッドを呼び出し(invoke))
  8. TValue in Depth (TValue(en)レコード型の詳細)
  9. INI persistence the RTTI way (RTTIの属性を利用してクラスインスタンスの情報を永続化)
  10. Xml Serialization - Basic Usage (RTTIを利用してクラスインスタンスをXMLにシリアライズ/デシリアライズ)
  11. Xml Serialization - Control via Attributes (属性でXMLシリアライズ化を制御)
  12. Attributes: Practical Example- Object to Client Dataset
  13. Types by Package... Dynamic plug-in systems.

元ねたはRob’s Technology Corner: Delphi 2010 - RTTI & Attributes

2009/09/15追記: Introduction to TValueのリンクを追加しました。
2009/09/16追記: Exploring TRttiMember Descendants in depth (Part I) Properties and Fieldsのリンクを追加しました。
2009/09/18追記: Exploring TRttiMember Descendants in depth (Part II) Methodsのリンクを追加しました。
2009/09/23追記: TValue in Depthのリンクを追加しました。
2009/10/08追記: INI persistence the RTTI wayおよびXml Serialization - Basic Usageのリンクを追加しました。
2009/10/09追記: TRttiContext.Create() & TRttiContext.Free()およびXml Serialization - Control via Attributesのリンクを追加しました。

RAD Studio 2010で拡張されたToolsAPIのサンプルコード

Chris HesikさんがRAD Studio 2010で拡張されたToolsAPIのサンプルコードを公開しています。

27315 ToolsAPI demo for plugging into the code editor in Delphi 2010

元ねたはChris’ CodeGear Debugger Blog » RAD Studio 2010 ToolsAPI: Plugging into the code editor space in the IDE

RAD Studio 2010のUML機能

Michael RozlogさんがRAD Studio/Delphi/C++Builder 2010のUML機能、検査(オーディット)機能、計測(メトリクス)機能、ドキュメント生成機能に関するwhitepaperを公開しています。

RAD Studio 2010 UML and Audits and Metrics: not the old UML!

Delphi 2010ではPro SKUでも限定的に検査機能、計測機能が使用できるようになっています。

元ねたはMichael Rozlog » Blog Archive » New UML whitepaper for RAD Studio 2010 (Delphi and C++Builder 2010)

CodeRage 4の動画公開

2009/09/08-11(PDT)に行われたオンラインカンファレンスCodeRage 4のセッションの動画が公開されています(EDNでログインする必要があります)。

CodeRage 4 Sessions & Replays

RAD Studio Roadmap

DelphiのプロダクトマネージャであるMichael RozlogさんがRAD Studioのロードマップを公開しています。

RAD Studio Roadmap

が、全然新しくないような。Newsflash: The Roadmap. « Wings of Wind Softwareでもツッコミまくりです。見た限り新しい情報は5枚目で赤線で消されている"Windows"くらいでしょうか。

2009年9月10日

Firebird 2.1.3リリース

Firebird Ver2.1.3がリリースされています。

Firebird Development: Database Engine
Firebird File Repositories(download)
Firebird 2.1 Release Notes

Firebird 2.1以降には"UPDATE OR INSERT文"なんていうのがあるんですね。

第14回エンバカデロ・デベロッパーキャンプ

2009年09月02日に大阪で開催された第14回エンバカデロ・デベロッパーキャンプのセッション資料とダイジェストビデオが公開されています。

第14回 エンバカデロ・デベロッパーキャンプ - 資料ダウンロード
セッションダイジェストビデオ「ついに登場!Delphi/C++Builder 2010の概要」

2009年9月9日

Microsoft Monthly Update 2009/09

今日はMicrosoftのセキュリティアップデートの日です。
MS09-045
MS09-046
MS09-047
MS09-048
MS09-049

MS09-048のWindows 2000/XP用の更新プログラムが存在しない(対応不能)件はいかがなものかと。

2009年9月8日

Delphi 2010は13をスキップしてVer14に

Delphi 2009はVer12だったので、順当にいけばDelphi 2010はVer13となるはずでした。が、キリスト教文化圏の悪癖で(というかそのことでグダグタいわれないために)13をスキップして14としたようです(確かにQCクライアントでも2010にはVer14が割り当てられています)。このあたりの経緯についてはAllen BauerさんのThe Oracle at Delphi » What happened to version 13?を参照。

2009年9月7日

RAD Studio 2010の新機能その12

コンパイラ/Delphi
新しい"delayed"ディレクティブでDLL内の関数のロードを実行直前まで遅延することができるようになります。詳細はAllen BauerさんProcrastinators Unite… Eventually!とその続きのExceptional Procrastination
また高橋さんがdelayedディレクティブを実際に使用する方法を紹介しています。詳細はTeam JapanDelphi 2010: 新機能 delayed ディレクティブ

IDE/言語構成ツール
言語構成ツールでIDEのUIとライブラリの言語を切り替えることができます。詳細はAndreas HausladenさんのRAD Studio 2010 now speaks multiple languages

DataSnap/REST+JSON
DataSnap上でREST経由でJSON形式のデータをやり取りする方法を高橋さんが紹介しています。詳細はTeam JapanDelphi 2010: DataSnap 2010でREST,JSONを試す

IDE/オブジェクトインスペクタ
コンポーネントのプロパティエディタをオブジェクトインスペクタ最下段の"verbs"エリアからも呼び出すことができるようになります。詳細はPaweł GłowackiさんRAD Studio 2010 - Object Inspector "verbs" area

VCL/JSON
TJSONMarshal/TJSONUnMarshalを使用してクラスインスタンスをマーシャリング(シリアライズ/デシリアライズ)することができます。詳細はDaniele TetiさんCustom Marshalling/UnMarshalling in Delphi 2010

コンパイラ/RTTI
RTTIについてのまとめ。
  • TRTTIContextはレコード型で、Create/Freeで生成、破棄する必要はありません。
  • RTTI用のデータで実行ファイルのサイズは大きくなります。
  • RTTIを使用するとprivateメンバにもアクセスできます($RTTI指令でメソッド、フィールド、プロパティの別に可視範囲を指定します)。
  • 実行時情報を元にどのメソッドでも呼び出すことができます。
  • TValueはバリアント型のように使用できます。
  • 詳細はWings of WindさんCommunity pulse: CodeRage 4, RTTI Reloaded

    コンパイラ/クラスコンストラクタ/クラスデストラクタ
    従来initialization/finalization部に記述していた処理をクラスコンストラクタ、クラスデストラクタに置くことができるようになります。クラスコンストラクタはinitialization部よりも前に、クラスデストラクタはfinalization部よりも後に実行されることが保証されています。これによりクラス依存のコードをそのクラスの外側に記述する必要がなくなり、リンカが不要なコード/データを外すことが容易になります。詳細はAllen BauerさんClass (, Static, or Shared) Constructors (and Destructors)とその続きのClass Constructors. Popping the hood.

    2009年9月6日

    IDE Fix Pack 2.7/VCLFixPack 1.4リリース

    Andreas HausladenさんIDE Fix Pack 2007およびIDE Fix Pack 2009/2010がVersion 2.7に、VCL Fix PackがVersion 1.4にそれぞれアップデートされています(Delphi 2010にはVCL Fix Packは必要ないとのことです)。

    Andy’s Blog and Tools » New IDE Fix Pack for 2007, 2009 and 2010

    2009年9月4日

    Delphi 2010 Handbook

    Marco Cantuさんによれば、Delphi 2010 Handbookを執筆中とのことです。発売まではまだしばらくかかるようですが、ebookのサブスクリプションという形で書きあがった分からリリースしていくようなことを考えているとのことです。でも英語をモニタ上で読むのはつらいので紙媒体のほうがいいかな…。

    Delphi 2010 Handbook in the Works

    2009年9月3日

    Indy10のTIdFTPコンポーネントのパッシブモードのGetメソッドの不具合

    Delphi 2007またはそれ以前のバージョン用のIndy10の最新ナイトリ(Ver10.2.3 r3568)のTIdFTPのGetメソッドには、パッシブモードで呼び出したときにTransferTimeoutプロパティの値が使用されずに永久に受信待ちになってしまう不具合があります。
    TIdFTP.InternalGetメソッド内でInitDataChannelを呼び出してFDataChannel.IOHandlerのReadTimeoutにTransferTimeoutを設定しているのですが、DataChannelのReadTimeoutがデフォルトの-1のままになっているため、LPasvCl.Connectの呼び出しの内部でDataChannel.IOHandler.ReadTimeoutにFDataChannel.ReadTimeoutを設定して結果的にTransferTimeoutの値が無視されてしまう、というのが原因と思われます。
    回避策としてはOnDataChannelCreateイベントでDataChannel.ReadTimeoutにもTransferTimeoutを設定してしまう、という方法が考えられます。
    procedure TDataModule1.IdFTP1DataChannelCreate(ASender: TObject;
                                                   ADataChannel: TIdTCPConnection);
    begin
    
      if (ASender <> nil) and (ASender is TIdFTP) then
      begin
        if (TIdFTP(ASender).Passive = True) and
           (ADataChannel <> nil) and (ADataChannel is TIdTCPClientCustom) then
        begin
          TIdTCPClientCustom(ADataChannel).ReadTimeout := TIdFTP(ASender).TransferTimeout;
        end;
      end;
    
    end;

    2009年9月1日

    JVCL 3.38リリース

    JVCL(JEDI Visual Component Library)がアップデートされてVersion 3.38(JCL Version 2.0.1)になっています。

    Browse JEDI VCL for Delphi Files on SourceForge.net

    JCLが2.0でDelphi/C++Builder 5、Kylix 3、Delphi.netをサポートしなくなったため、JVCLもこれらのバージョンでは動作しないと思われます(JVCL 3.37 with JCL 1.105が最終バージョン)。

    トライアル版にはコマンドラインコンパイラが付属しておらずそのままではインストールできないため、JCL 2.0.1とJVCL 3.38のバイナリインストーラをAndreas Hausladenさんが用意してくれています。ダウンロードは下記のページから。

    元ねたはAndreas HausladenさんAndy’s Blog and Tools » JEDI Code Library 2.0.1 and JVCL 3.38

    2009/09/06追記: Andreas Hausladenさんによると、JVCL 3.38はDelphi 2010のdelayedディレクティブの影響でテーマ描画関係がうまく動作しなくなってしまっているようです(JCLには影響しないとのこと)。
    Andy’s Blog and Tools » Once upon a delayed JVCL time…

    Windowsユーザエクスペリエンスガイドライン

    MSDNライブラリでVisual Style(Windows Vista/7)に対応した"Windows ユーザー エクスペリエンス ガイドライン"(UXガイド)が公開されています。PDF版もあります(775ページもありますね)。

    Windows ユーザー エクスペリエンス ガイドライン

    元ねたはCrystal Dew R&D LabsさんのWindows ユーザー エクスペリエンス ガイドライン

    2009年8月27日

    RAD Studio 2010の新機能その11

    dbExpress/SOAP
    WDSLインポートウィザードを含むSOAP 1.2サポートが追加されます。詳細はWings of WindさんRAD Studio 2010 Review #12: – Tooling, Help, UnicodeChris BensenさんRAD Studio 2010 - SOAP 1.2

    DataSnap/HTTPサポート
    DataSnapでプロトコルとしてHTTPを使用するときにサーバ側をISS+ISAPIのDLLで構成することができます。詳細はJim TierneyさんDataSnap 2010 HTTP support with an ISAPI dll

    コンパイラ/Delphi
    as演算子、is演算子でインタフェース参照から元のクラス(インスタンス)にキャストできるようになります。詳細はMalcolm GrovesさんCasting an Interface Reference to the Implementing Class in Delphi 2010

    コンパイラ/RTTI
    クラスやそのメンバに属性(attribute)を付加(annotate)し、RTTIでそれを取得することにより、実行時に属性情報による処理を行うことができます。詳細はMalcolm GrovesさんMore Attributes in Delphi 2010

    IDE/リファクタリング
    属性に対してもリファクタリング機能が使えます。詳細はMalcolm GrovesさんRefactoring Support for Attributes in Delphi 2010

    DataSnap/JSON
    DataSnapでTDBXCallbackを使用してサーバメソッド内からコールバック関数を呼び出すことができます。詳細はAdrian AndreiさんDatabase Connectivity : Don’t call me, I’ll call you…

    2009年8月26日

    RAD Studio 2010の新機能その10

    ネタをためてしまうと駄目ですね。毎日少しずつでも書かないと…。
    Database/dbExpress
    dbExpressでFirebirdのサポートが追加され、BlackfishSQL、DataSnap、Sybase ASA (Adaptive Server Anywhere)、Sybase ASE (Adaptive Server Enterprise)、IBM DB2、Firebird、Informix、Interbase、Microsoft SQL Server、mySQL、Oracleといったデータソースを扱えるようになります(非常に残念なことにInterBase/FirebirdはProfessional SKUに含まれませんが)。またMidas.dllのソースコード(C++)が付属するようになります。詳細はWings of WindさんRAD Studio 2010 Review #10: – Database Jewels。またAndreano LanusseさんによるビデオもNew dbExpress driver for Firebird in Delphi 2010 and C++Builder 2010で見られます。

    VCL/マルチタッチ
    実機を使えば簡単にマルチタッチを扱うアプリケーションが作れますよ、というお話。詳細はTeam JapanさんDelphi 2010/C++Builder 2010: マルチタッチを試す

    DataSnap/サーバ-クライアント通信
    ウィザードでDataSnapサーバを簡単に作成でき、これを実行しておけばDataSnapクライアントから呼び出すサーバ側のメソッドをプロパティエディタ上からドロップダウンで選択するだけで簡単に呼び出しコードができてしまいます。またクラスインスタンスをJSONでシリアライズして転送することもできます。詳細はWings of WindさんRAD Studio 2010 Review #11: – DataSnap。またDataSnap上でのJSONの扱いかたについてはAdrian AndreiさんDatabase Connectivity : JSON Types for Server Methods in DataSnap 2010で、DataSnapを使用した軽量クライアントについてはTeam JapanさんDelphi 2010: DataSnapでOracle11gに接続するで、それぞれ詳しく説明されています。

    RAD Studio 2010発売紹介ビデオ

    RAD Studio 2010の発売にともなって公式ページがRAD Studio 2010 エヴァリュエーションセンターになり、RAD Studio 2010についてMichael Swindellさん(製品戦略担当副社長)とJan Libandさん(マーケティング担当副社長)が紹介するビデオが追加されています。2010の次はクロスプラットフォームと64bit対応、という方向性はまだそのままのようです。

    2009年8月25日

    W32.Induc その2

    この件に関するFAQの翻訳がリリースされています。

    W32/Induc-A Virus (Compile-A-Virus)に関するQ&A

    単純に今回の(現在の)ウィルスだけを考えればこれでいいのかもしれませんが、このFAQにある対応をくぐりぬけるような変種は簡単に考え付きます。この問題を完全に回避するには、ライブラリパスにリストアップされているLib、Bin、Imports、Projects\Bpl、Lib\Indy10およびデバッグdcuパスにリストアップされているLib\Debug、Lib\Debug\Indy10のように既知のパスに既知のユニット名のdcuが格納されているものを全て置き換えられないようにする必要があります(例えばIndy10に属するユニットのmalware版をLibに配置すればこちらがリンクされてしまいますよね)。

    そのための方法としては、常に削除+既知でない場所に配置したバックアップからコピーする、ということも考えられますし、あるいはハッシュを保存しておいてそれを比較して検証するようなことでもいいかもしれません。なにかツールを作成してみますか…。

    Delphi 2010/C++Builder 2010/RAD Studio 2010リリース

    予定通りDelphi 2010/C++Builder 2010/RAD Studio 2010が発売開始になりました。現時点ではESD(Electronic Software Distribution)版のみで、パッケージ版は2009/09/中旬予定とのことです。残念ながら開発環境からWindows 2000が外れてしまいました。あとは2009で導入されたPROFESSIONAL エディションおよび PROFESSIONAL ACADEMIC エディションの DB Express 配備制限に適用される追加条項の影響によりProfessional SKUでdbExpress経由のリモートデータベースアプリケーションが作れなくなったこともあり、導入は見合わせとはいわないまでも微妙です。本格導入は遠のいたかも…。

    Delphi® 2010とRAD Studio™製品ファミリー新バージョンが 本日、世界同時発売開始、タッチサポートも搭載

    License Terms for Delphi 2010, C++Builder 2010 and Embarcadero RAD Studio 2010
    Delphi Prism 2010 使用契約

    Embarcadero Delphi 2010 および C++Builder 2010 のリリース ノート
    Delphi Prism 2010 リリース ノート

    Embarcadero Delphi 2010 および C++Builder 2010 のインストール ノート
    Delphi Prism 2010 のインストール ノート

    RAD Studio 2010 Released!

    2009年8月21日

    W32.Induc

    既に各所で報じられていますが、DelphiのVer4-7を経由して広がるコンピュータウィルスが報告されています。現時点での危険性は低いようですが、この手法を模倣したもっと凶悪なmalwareの出現の可能性を考えると、早期に対策するべきだと思われます。
    まず確認方法ですが、Delphiのインストール先のLibフォルダにsysconst.bakが存在し、sysconst.dcuのタイムスタンプがつい最近になっているという場合、ウィルスに感染している可能性が濃厚です。この場合、Delphiをアンインストールして、Delphiのインストール先フォルダを完全削除し、再インストールするのが望ましいと思われます(再インストールが難しい場合は正常なsysconst.pasをコンパイルしてsysconst.dcuを再生成する方法もありますが、あまりお勧めしません)。
    また対策としては今のところとりあえず怪しいプログラムをいきなり実行しない、ということぐらいでしょうか(sysconst.bakを作っておくという手はいつまで通用するのかわからないので)。Allen Bauerさんによれば、

    私たちは、皆さんがこのウイルスに感染しているかどうかを調べる方法、そして、感染していた場合の推奨される対応方法についてまとめる作業を進めています。この推奨されるステップでは、皆さんが再感染しないようにガードされるように作業しています。

    ということなので、正式なアナウンス待ちということで。当該ディレクトリをログオンユーザの権限で書き込みできないようにする、という手も考えられますが…。

    ちなみに第一発見者はロシアのGunSmokerさんのようです。

    参考URL:
    Team Japan: Delphiをターゲットとしたウイルスの脅威について
    Embarcadero Discussion Forums: Virus use old Delphi versions to spread ...
    Symantec: W32.Induc.A
    Sophos security analysis: W32/Induc-A Win32 executable file virus (Virus.Win32.Induc.a)
    マカフィー: W32/Induc | ウイルス情報
    エフセキュアブログ: 0wn1ng Delphi(0wn1ng Delphi - F-Secure Weblog : News from the Labの翻訳)
    Viruslist.com: Analyst's Diary

    2009/08/25追記: この件に関するFAQがリリースされています。すぐに翻訳されると思いますが、とりあえず英文のリンクを。
    Frequently Asked Questions about the W32/Induc-A Virus (Compile-A-Virus)

    2009年8月18日

    RAD Studio 2010 スニークプレビュー その3

    RAD Studio 2010の公式ページにスニークプレビュー第3弾"Make the Connection with RAD Studio 2010"(日本語版:"RAD Studio 2010のデータベース接続")が追加されています。内容は予告どおりデータベース/DataSnap接続関係です。
    • Firebird 2.1/1.5サポートの追加とInterBase 2009、Microsoft SQL Server 2008、Oracle 11g、MySQL 5.1のドライバの更新
    • DataSnapによるマルチティア接続
    • DataSnapサーバを簡単に作成
    • DataSnapサーバとクライアント間のデータストリームのフィルタリング
    • RESTful Web ServicesとJSONサポートの追加

    これでいよいよ来週はリリースということに…あれ?カウントダウンがなくなってる…。

    RAD Studio 2010の新機能その9

    VCL/OnGestureイベント
    TTouchManagerのOnGestureイベントにはジェスチャに関する情報、位置、アングル、距離、慣性(イナーシャ)ベクタがTGestureEventInfoレコード型で渡されます。例えばInteractiveGestureOptionsにigoPanInertiaを指定するとEventInfo.GestureIDがigiPanのOnGestureが連続して発生するようになります(最初の1回はEventInfo.FlagsにgfBeginが含まれていて区別可能)。詳細はSeppy BloomさんRAD Studio 2010 - Touch & Gestures Part 2

    2009年8月17日

    RAD Studio 2010の新機能その8

    コンパイラ/RTTI
    TCustomAttributeクラスを派生してカスタム属性を定義し、これをクラスやクラスのメンバに適用することで、RTTIを使用して実行時にその属性を取得できるようになります(でいいのかな?後で再確認)。これを利用してORマッパ(object-relational mapper)のようなものも作れます、ということのようです。詳細はMalcolm GrovesさんRTTI and Attributes in Delphi 2010Wings of WindさんRAD Studio 2010 Review #9: – Attributes, The new RTTI and DB Access

    2009年8月15日

    RAD Studio 2010の新機能その7

    VCL/グラフィック
    PNGとBMPでアルファチャンネルをサポートするようになります。TDirect2DCanvasでDirect2Dをサポートします。ジェスチャの形状をCanvasに描画することもできます。詳細はWings of WindさんRAD Studio 2010 Review #8: – And now some feedback from us

    VCL/新しいユニット
    Chris Bensenさんによる新しく追加されたユニットの説明です。Delphi 2010 - New Units

    2009年8月13日

    RAD Studio 2010の新機能その6

    IDE/メニュー項目
    表示メニューからメッセージペインが開けるようになったり、プロジェクトメニューからQA測定、QA検査が呼び出されるようになったり、コンポーネントメニューからWSDLインポータが呼び出せるようになったりします。詳細はTeam JapanRAD Studio 2010: メニューの地味な変更

    VCL/タッチキーボード
    VCLのTouchカテゴリのTTouchKeyboardコンポーネントで仮想キーボードを使用することができるようになります。ファンクションキーがないとか、日本語環境で標準的な109キーレイアウトではないとか、微妙な気がしますが…。Windowsキーがない件については"Microsoftのスクリーンキーボードとは違うアプローチを選択した(we decided to take a different approach to the Touch Keyboard than Microsoft did with their on screen keyboard)とのことです。詳細はTeam JapanRAD Studio 2010: タッチキーボードChris BensenさんRAD Studio 2010 - Touch Keyboard。Chris Bensenさんのコメントによれば、101/102/106キーボードレイアウトが入力ロケールにより選択されるが、アジア系言語は日本語だけで、中国語、韓国語、アラビア語は間に合わなかった、とのことです。

    コンパイラ/delayed属性
    externalな関数にdelayed属性を付加することでその呼び出しまでバインドを遅らせることができるようになります。詳細はWings of WindさんRAD Studio 2010 Review #6: VCL – Language enhancements for Touch and Gestures

    VCL/WICサポート
    WIC(Windows Imaging Component)をサポートするようになります(WICはWindows XP SP3以降で使用可能です)。BMP/GIF/ICO/JPEG/PNG/TIFF形式およびRAW形式の画像をWICで経由扱うことができます。詳細はWings of WindさんRAD Studio 2010 Review #7: – A historical moment

    VCL/IOUtilsユニット
    新しく追加されたIOUtils.pasでディレクトリの列挙やファイルの列挙をfor-in構文(と無名メソッド)で簡単にできるようになります。詳細はMalcom GrovesさんIOUtils.pas – OO File System Access in Delphi 2010。RANさん、情報ありがとうございます。

    2009年8月12日

    Microsoft Monthly Update 2009/08

    今日はMicrosoftのセキュリティアップデートの日です。
    MS09-036
    MS09-037
    MS09-038
    MS09-039
    MS09-040
    MS09-041
    MS09-042
    MS09-043
    MS09-044

    2009年8月11日

    RAD Studio 2010 スニークプレビュー その2

    RAD Studio 2010の公式ページにスニークプレビュー第2弾"Free Your Customer From Keyboards with Dazzling Touch Based User Interfaces"(日本語版:"タッチベースのユーザーインタフェイスでキーボード操作から解放!")が追加されています。内容は予告どおりタッチ、ジェスチャなど"Natural Input"関係です。
    • タッチ対応
    • Windows 7のマルチタッチ
    • カスタムジェスチャ
    • 仮想キーボード
    • 既存のアプリケーションのタッチ/ジェスチャ対応

    今回はChris Bensenさんの部屋からです。が、ん?オリジナルと日本語版で尺が違う…オリジナルは2分37秒、日本語版は8分49秒ってどういうことでしょう?

    次回は2009/08/18でFirebird、DataSnapなどのデータベース接続についてとなっています。

    ところでhttp://blogs.embarcadero.com/のwebサーバが落ちてます(2009/08/11 17:08JST現在)。pingは通るようですが。2009/08/12 10:20JST現在で復旧しています。2009/08/12 17:27現在でまた落ちてます。なんか不安定です。2009/08/13 10:20現在で復旧しています。

    2009/08/12追記: オリジナルも8分49秒のものに入れ替えられています。

    Delphi 2010 プレビュー その5 まとめ

    2009/08/06に行われたDelphi/C++Builder次期バージョンプレビュー会のまとめなど。

    まずここまで出てこなかった項目について。
    • 言語構成ツールでIDEのUIやリンクするライブラリの言語を切り替えられます。切り替えはインストール時に言語(英語、ドイツ語、フランス語、日本語)毎にインストール対象としたものから選択するようになります(例えば英語、日本語とインストールしておけばこの2ヶ国語間で切り替えられる)。

    • トランスレーションリポジトリについても、事前翻訳されたリポジトリが多数用意されており、自動翻訳を使用することで、より簡単に国際化アプリケーションを作成することができるようになります。

    • RTTIの拡張はProject ChromiumのライトウェイトORマッピングを実現するためにも必要だったようです。

    • クラスエクスプローラのクラス階層図はSVG形式でエクスポートできるそうです。

    • RAD Studio 2010はAll-AccessのInstantOn上で動作します。

    • Subversion対応は見送られたようです。VCSを組み込む上で必要なサポートはOTA上に用意されているようですが。

    • PostgreSQLは日本以外ではマイナーなので対応しないようです。QC41013が再度Openされたらみんなでvoteしましょう。

    • 発売は意地でも2009/08/25(PDT)らしいです。

    プレビュー会でいろいろ見ての感想その他。
    • 言語構成ツールによる言語の切り替えのサポートは、日本語ユーザが英語を基本言語とする国際化対応アプリケーションを作成する上で嬉しい機能です。これで英語版dcuの取り出し、差し替えとか不毛なことをしなくて済みます。

    • 全体としては地道に細かい改善を積み重ねた、という印象です(全く新しいのはジェスチャ関係とTDirect2DCanvasくらいでは?)。マーケティング的にはWindows 7に正式対応、でしょうけれども。

    • DataSnapはもっと実用面を考えたプロモーションが必要だと思います。こういうシステムでこういうように使うと効果的ですよ、といったところを。

    • RAD Studio 2010は「買い」か?ですが、2009ユーザは「買い」でしょう。バグもたくさん取れているようですし。では2007以前のユーザにとってはどうでしょう?これはいつ"Unicode Ready"に移行するか、ということになりますが、次のCommodoreやDelphi Xで少なからず混乱する可能性を考慮すれば、2010は一つのタイミングだと思います(次の次くらいまでスキップするのも一つの見識ではありますが)。

    • All-AccessならDelphi 2007もDelphi 2009も使えますよ、というのはアピールするらしいです。

    • 製品ロードマップは早く更新したほうがいいと思います。

    • マルチタッチのデモに使ったHPのノートPCは前日に秋葉原で買ってきたそうです。

    Delphi 2010 プレビュー その4 データベース

    2009/08/06に行われたDelphi/C++Builder次期バージョンプレビュー会のまとめです。データベース関係。
    • dbExpress
      Firebirdサポート追加
      正式にdbExpressでFirebird 1.5/2.1に接続できるようになります。
      各データベースの最新版に対応
      InterBase 2009、Microsoft SQL Server 2008、Oralce 11g、MySQL 5.1に対応します。
      SQL Native Clientドライバ
      Windows 2000でも動作するSQL Native Client 2005用ドライバとMARS(Multiple Active Results Sets - 複数のアクティブな結果セット)サポートの追加。
      date/time関数
      ロケール依存書式文字列とロケールに基づくTimestampのオフセットのサポート。
      MIDAS.DLLソースコード
      MIDAS.DLLのソースコードが添付されるそうです。
      Web Service SOAP 1.2クライアントのサポート

    • DataSnap
      新規DataSnapサーバ、新規DataSnap WebBrokerアプリケーションのウィザードの追加
      HTTPコミュニケーションとインプロセスコネクティビティをサポート
      HTTPトンネリングサポート
      ファイアウォール外のクライアントで使用します。
      DataSnap HTTPリクエストのためのRESTサポート
      コミュニケーションストリーム処理のためのフィルタ
      フィルタリングのための新しいDataSnap APIとコンプレッションフィルタの追加。
      コールバックおよびJSON(JavaScript Object Notation)
      サーバメソッドでTJSONValueおよびその継承を受け入れ可能。
      WebサーバアプリケーションでDataSnapサーバをホスティング
      .NETプロキシ生成

    2009年8月10日

    RAD Studio 2010の新機能その5

    IDE/クラシックスタイル
    Delphi 2010のIDEをDelphi 7ライクなクラシックスタイルに設定する方法をAndreano Lanusseさん動画つきで説明しています。
    Andreano Lanusse » How to configure Delphi 2010 to look, work, and feel like Delphi 7またはVideo: How to configure Delphi 2010 to look, work, and feel like Delphi 7から。

    VCL/Delphi Natural Input
    ジェスチャ、マルチタッチ、仮想キーボードなどの、従来とは異なる、あるいはWindows 7で新しく追加された入力であるNatural Inputのサポート。詳細はWings of WindsさんRAD Studio 2010 Review #5: VCL – Natural Input OverviewSeppy BloomさんRAD Studio 2010 - Touch & Gestures Part 1Chris BensenさんRAD Studio 2010 - Gestures and Multi-Touch。Seppy BloomさんによればGesturesカテゴリのTGestureListView/TGesturePreview/TGestureRecorderコンポーネントはジェスチャデザイナで使用しているものだそうです。

    IDE/ソースコードフォーマッタ
    ソースコードを指定したルールに従って整形しなおすことができます。詳細はTeam JapanRAD Studio 2010: ソースコードの整形

    Delphi 2010 プレビュー その3 VCL

    2009/08/06に行われたDelphi/C++Builder次期バージョンプレビュー会のまとめです。VCL関係です。
    • Delphi Natural Input

    • タッチ
      ベーシックタッチ
      一本の指でマウスのエミュレーションを行う。通常のタッチパネルでサポート。
      マルチタッチ
      二本以上の指でタッチした位置や距離を検知する。Windows 7以降のOSと専用のハードウェアが必要になる。
      ジェスチャ
      マウスやタッチの動きでジェスチャイベントが発生する。

    • ジェスチャ/仮想キーボード
      ジェスチャ
      独自実装のジェスチャエンジンをプラグイン可能(ジェスチャマネージャコンポーネントを配置するだけ)。特殊なハードウェアは不要。標準のジェスチャもカスタム定義したジェスチャも使用可能。カスタム定義も専用デザイナで簡単にできる。ジェスチャの割り当てはコンポーネント単位に指定できる。
      仮想キーボード
      TTouchKeyboardコンポーネントで仮想キーボードを実現。カスタマイズも可能。

    • Direct2D
      Windows 7のDirect2D/DirectWriteのサポート
      TCustomCanvasから派生したTDirect2DCanvasを使用する。
      TGraphicによるWIC(Windows Imaging Component)ラッパ
      TImageでTIFF形式をサポート

    • VCLの機能強化
      Gridコンポーネント
      テーマサポートの追加。
      IOUtils.pas
      新しいI/Oユーティリティクラスの追加。
      CM_INPUTLANGCHANGE
      言語の変更を通知するカスタムメッセージの追加。
      TIcon.AssignTo
      ビットマップへのアサインが可能に。
      Month Calendarボックスドロップダウン
      オブジェクトインスペクタで日付をカレンダで指定可能に。
      TCategoryButtonsコンポーネント
      インプレースリネーム機能のサポート。
      TCheckListBoxコンポーネント
      CheckAllメソッドの追加。
      PtInCircle関数
      Typesユニットに追加。
      TRichEditコンポーネント
      現在のカーソル位置を返すActiveLineNoプロパティを追加。
      Boolean型プロパティ
      オブジェクトインスペクタでBooleanをチェックボックスで指定可能に。


    今日はここまで。

    Delphi 2010 プレビュー その2 コンパイラ

    2009/08/06に行われたDelphi/C++Builder次期バージョンプレビュー会のまとめです。次にコンパイラ、言語関係。
    • Delphiコンパイラ
      RTTI
      取得可能なRTTI(実行時型情報)が拡張される。クラス型やレコード型のメンバ(メソッドやフィールド、プロパティ)を実行時に知ることができ、メソッドの呼び出しも可能になる。RTTIユニットを使用する。RTTIなのでprivate属性のものは取得できない。
      カスタム属性
      [(属性)]でクラスなどの定義にカスタム属性を付加する。
      クラスコンストラクタ/クラスデストラクタ
      従来ユニットのinitialization部、finalization部で行っていたような処理をクラスコンストラクタ(クラスのロード時に呼び出し)、クラスデストラクタ(クラスのアンロード時に呼び出し)で行うことができるようになる。

    • C++コンパイラ
      FastMM
      (やっと)FastMMが標準のメモリマネージャとして組み込まれる。
      #pragma once
      VC++と同様にインクルードガードに#pragma onceを使用できるようになる。
      XML生成オプション -Zx
      __FUNCTION__マクロのサポート
      [[deprecated]]属性のサポート
      セキュア(..._s)関数
      VC++互換のセキュア関数が使用できるようになった。
      テンプレートクラスのための__declspec(dllimport)/__declspec(dllexport)
      実際には不具合の修正だとか。

    Delphi 2010 プレビュー その1 IDE

    2009/08/06に行われたDelphi/C++Builder次期バージョンプレビュー会のまとめです。まずIDE関係から。
    • 操作性の改善
      IDEインサイト
      [F6]で表示されるIDEInsightでキーボードから全ての機能にアクセスできる。
      コードフォーマッタ
      パラメータに従ってソースコードを自動的に整形(パラメータはDelphiとC++で別々に設定できる)。
      バックグラウンドコンパイル
      オプションでコンパイルをバックグラウンドで実行させることができる。バックグラウンドコンパイルを実行するとソースコードなどは一時的なスナップショットが取られ、エディタ上で編集を続行可能。C++はコンパイル時間が長いので特に有効。
      コードエディタ上の検索
      Firefoxライクな検索バーで検索候補をハイライト表示し、次候補([F3])および前候補([SHIFT]+[F3])の検索が可能になる。
      開き直す
      開き直すことのできるプロジェクトおよびソースの数、履歴を変更可能に。
      ユニットの使用
      IDEInsight同様にフィルタリング可能に。
      新規作成のフィルタ
      IDEInsight同様にフィルタリング可能に。
      XMLデータバインディングウィザードの改善
      ジェネリック構文のリファクタリングをサポート

    • デバッガ
      ビジュアライザ
      日付時刻型やTStringsクラスなどをデバッガ上でよりわかりやすく表示できる。
      カスタムビジュアライザ
      Open ToolsAPIでカスタムビジュアライザを作成して組み込むことができる。sourceディレクトリにサンプルとして標準添付ののビジュアライザのソースがある。
      スレッドデバッグサポート
      選択したスレッド内でのステップ実行やデバッグが可能になる。各スレッドの停止、再開を任意に指定可能になる。ブレークポイントのプロパティで特定のスレッドをターゲットにすることができるようになる。また各スレッドに名前をつけて区別するようになる(名前がないとWindowsがつけるスレッドIDで区別することになる)。

    • モデリング
      新しいlook&feelのモデル図、グラデーションによる塗りつぶし、項目間のリンクの作成機能などが追加
      検査/測定機能はモデリング機能を有効にしなくても利用可能になる
      C++のモデリング機能のパフォーマンス改善
      ダイアグラムエディタの強化

    2009年8月8日

    RAD Studio 2010の新機能その4

    IDE/細かい改善
    プロジェクトマネージャペインで並び順が指定できるようになったり、デザイン時パッケージと実行時パッケージのアイコンが区別できるようになったり、コードエディタペインのブレークポイントやブックマークが移動できるようになったりします。またIDEインサイトではフォームやデータモジュール上のコンポーネントを探したり、プロジェクトオプションを探すこともできるようになります。詳細はWings of WindさんRAD Studio 2010 Review #4: Project Management Enhancements

    IDE/新機能紹介ビデオ公開
    Andreano LanusseさんIDEの新機能を紹介するビデオを公開しています。Video: What's new in Delphi 2010 and C++Builder 2010 - IDE Featuresからも見られます。

    IDE/ToolsAPI拡張
    ToolsAPIが拡張されて、IDE上のドッカブルビューが(公式に)作成できるようになったり、エディタ領域に追加のビューを組み込めるようになったり、IDEインサイトのサポートが追加されたり、プロジェクトマネージャのローカルメニューへのメニューの追加のサポートが拡張されたり、IOTAProjectインタフェースで提供される情報が増やされたり、デバッガビジュアライザの作成と登録がサポートされたり、デバッガインタフェースが新機能をサポートするように拡張されたり、ビルドシステムからの通知がサポートされたり、IDEへのバージョンコントロールシステムのサポートが追加されたり、ToolsAPIからより多くのアクションにアクセスできるようにコードフォールディングのインタフェースが拡張されたりします。詳細はChris HesikさんRAD Studio 2010: ToolsAPI enhancements

    IDE/ジェネリクス用のリファクタリングとヘルプインサイト
    ジェネリクスに対してもリファクタリング機能やヘルプインサイトが有効になります。詳細はDarren KosinskiさんRAD Studio 2010 - Refactoring & Help Insight for Generics

    2009年8月7日

    C++0x規格案からConceptが削除された経緯

    大詰めを迎えつつある(はずの)C++0xの規格案からConceptが削除された、というニュースは一部のC++0xウォッチャな人々に驚きを持って迎えられました。C++標準化委員会の偉い人であるDouglas Gregorさんによる理由と経緯の説明をhitoさんが翻訳してくださっています。C++0xに興味がある人は読んでおくべき。

    What Happened in Frankfurt? « C++Next
    本の虫: Douglas Gregor、フランクフルト会議について語る

    2009/08/15追記: Bjarne StroustrupさんとDanny Kalevさんのやりとりもhitoさんが翻訳してくださいました。

    本の虫: Bjarne Stroustrup、Conceptと未来を語る

    RAD Studio 2010の新機能その3

    IDE/アクションプロパティエディタ
    プロパティエディタ上のアクションプロパティから新規アクションや標準アクションを便利に設定することができるようになります。詳細はChris BensenさんRAD Studio 2010 - Actions

    コンパイラ/RTTI機能の拡張
    新しいRTTIの拡張機能を使用すると従来取得できなかった情報をクラスやレコードから取り出せるようになります。しばらく前にDelphi-MLで質問が出ていたレコード型のフィールド名の取得もこれで可能になります。詳細は我らがTeam JapanDelphi 2010: RTTI新機能を試す

    2009年8月6日

    Delphi/C++Builder次期バージョンプレビュー会

    Team Japan » 本日、Delphi/C++Builder次期バージョンプレビュー会

    これから中目黒に行ってきます。実況はしませんが、随時更新の予定です。

    18:00 準備完了。もう時間ですが誰か足りないような…。始まりました。
    みなさん揃ったようです。というかいつもの人たちだけですね…。

    FORUM 8さんのVRはヌルヌルに動きます。イケてます。OpenGLだそうです。

    高橋さん登場でRAD Studio 2010のお話に。

    時間オーバでバタバタしつつ終了しました。なかなか面白かったです。出席者および関係者のみなさん、おつかれさまでした。プレビューのまとめ、感想などは別途。

    2009/08/07追記: 中継の録画が見られるようになっているようです。たぶんVRの凄さはこれではわからないと思いますが。
    Delphi/C++Builder次期バージョンプレビュー会ライブ - 録画

    2009/08/10追記: プレビュー会についてのリンクをまとめておきます。
    Delphi 2010 プレビュー その1 IDE
    Delphi 2010 プレビュー その2 コンパイラ
    Delphi 2010 プレビュー その3 VCL
    Delphi 2010 プレビュー その4 データベース
    Delphi 2010 プレビュー その5 まとめ

    2009/08/11追記: @ITさんの記事が出ています。
    Delphi新版はタッチ操作のアプリケーション開発を可能に - @IT

    RAD Studio 2010の新機能その2

    IDE/ファイル|開き直すメニューの改良
    IDEの[ファイル]→[開き直す]で保持されるプロジェクト、ファイルの最大数や実際に保持されているアイテムをエディットできるようになります。詳細はChris HesikさんRAD Studio 2010: Improved File|Reopen menuNick HodgesさんRAD Studio 2010 IDE Features: File|Reopen。日本語だとTeam Japan » RAD Studio 2010: ファイル・プロジェクトの再オープン

    IDE/デバッグビジュアライザ
    デバッグ時のローカル変数をよりわかりやすく表示できるようになります。日付時刻(TDateTime)や文字列リスト(TStrings)用のものは標準で付属しますが、OTA(Open Tools API)を利用して作ることもできます。詳細はWings of WindさんRAD Studio 2010 Review #3: Debug Visualizers.

    2009年8月5日

    RAD Studio 2010の新機能その1

    RAD Studio 2010の新機能についての情報が続々と公開されています。ということで可能な限りフォローしてみます。
    IDE/バックグラウンドコンパイル
    Delphi/C++Builder 2010ではバックグラウンドでコンパイルを実行させることができるようになります。詳細はAndreano LanusseさんBackground Compilation in Delphi 2010 and C++Builder 2010

    IDE/検索機能の強化
    検索結果がコードエディタ上でハイライト表示されます。また検索ダイアログがFirefoxのように検索バーに置き換わりました。詳細はDarren KosinskiさんEmbarcadero RAD Studio 2010

    IDE/IDEインサイト
    IDE上で呼び出し可能な機能を集約して一覧表示します。詳細はNick HodgesさんRAD Studio 2010 – IDE Features: IDE InsightMark DuncanさんRAD Studio 2010 - IDE Insight Part 1。日本語だとTeam Japan » RAD Studio 2010: IDEインサイト

    IDE/C++Builderクラスエクスプローラ
    C++Builderでもクラスエクスプローラが使用できるようになります。またクラスの継承関係をグラフィカルに表示できます。詳細はDavid DeanさんC++Builder 2010 and the new Class Explorer。日本語だとTeam Japan » RAD Studio 2010: 帰ってきた C++ クラスエクスプローラー

    IDE/スレッド指定ブレークポイント
    ブレークポイントのプロパティで実行スレッドをIDまたは名前で指定できるようになります。またデバッガ上でスレッドを扱いやすくするためにTThreadクラスでスレッドに名前をつけられるようになります。詳細はChris HesikさんRAD Studio 2010: Thread-specific breakpoints

    IDE/コンポーネントツールバー
    (コンポーネントパレットではなく)Delphi 7以前のようなコンポーネントツールバーを使用することができるようになります。詳細はWings of WindさんRAD Studio 2010 Review #2: The new old Component Toolbar.Andreano LanusseさんThe old Component Toolbar is back and better in RAD Studio 2010、新しいツールパレットのほうが気に入ってるんだけどな、というNick HodgesさんRAD Studio 2010 — IDE Features: "Old School" Tool Palette。日本語だとTeam Japan » RAD Studio 2010: コンポーネントツールバー

    IDE/プロパティエディタ
    プロパティエディタ上でBooleanにチェックボックスがつきました。また日付型ではDateTimePickerライクなプロパティエディタが使えるようになります。詳細はChris BensenさんEmbarcadero RAD Studio 2010

    IDE/ユニット表示、フォーム表示
    ユニット表示([Ctrl]+[F12])、フォーム表示([Shift]+[F12])はIDEインサイトを使用するように変更されました。詳細はChris BensenさんRAD Studio 2010 - The IDE

    ちなみにNick Hodgesさんの右隣の部屋はChris Bensenさん(シニアR&Dエンジニア)の部屋だそうです。

    2009年8月4日

    RAD Studio 2010 スニークプレビュー その1

    EmbarcaderoのwebサイトにRAD Studio 2010の公式ページが登場しました。スニークプレビューの第1弾"RADically Reduce Development Time with RAD Studio 2010"はIDEの新機能についてです。
    • IDEインサイト
    • コードフォーマッタ
    • クラスエクスプローラ
    • データビジュアライザ
    • デバッガスレッド制御

    次回のプレビューはタッチ/ジェスチャ機能についてで、2009/08/11に公開だそうです。またカウントダウンによればRAD Studio 2010は2009/08/25発売ですね(もちろんPDTでしょうけど)。

    元ねたはMarco CantuさんのIDE Sneak Preview of RAD Studio 2010

    2009/08/05追記: 早くも翻訳されています。
    RAD Studio, C++Builder, Delphi Prism, Delphi 2010スニークプレビュー
    Application Development with RAD Studio 2010 |Delphi , C++Builder & Delphi Prism

    2009/08/05追記: RAD Studio/Delphi/C++Builder 2010は2009/08/25 00:00PDT(2009/08/25 16:00JST)からダウンロード版が購入可能になるとのことです。
    Windows 7対応のDelphi/C++Builder新版が8月25日発売へ - ニュース:ITpro(要登録)

    2009年8月3日

    Micro FocusによるBorlandの買収が完了

    2009/05/06の発表以来どうなることやらという雰囲気も漂っていたMicro FocusによるBorland Softwareの買収が2009/07/27に完了したとのことです。

    Completion of Borland acquisition - Micro Focus

    既に www.borland.com は www.microfocus.com にリダイレクトされるようになっています。と思ったら http://www.borland.com/jp/ はまだそのままですね…。

    2009/08/03追記: Micro Focus Finalizes Borland Acquisition with Sweetened Deal -- Application Development Trendsによれば最終的に1株1.50USD、合計1億1千万USD(約107億円)で合意したそうです。

    2009年7月31日

    某所さん終了

    残念なことにRANさんの某所/某所(避難所)さんが終了されるとのことです。
    これまでおつかれさまでした。役に立つコンテンツも多いので、できれば更新終了後もblogはそのままにしておいていただけると嬉しいのですが…。

    2010/11/15追記: RANさん某所 - その後の某所によると某所@so-netのコンテンツはfc2に統合したとのことです。

    2009年7月29日

    Microsoft OOB Update 2009/07

    Microsoftの定例外のセキュリティアップデートがリリースされています。
    MS09-034
    MS09-035

    2009年7月27日

    Weaverプレビュー会開催

    ちょっと前の情報ですが、Weaver (Delphi/C++Builder 2010)のプレビュー会が2009/08/06に行われるそうです。

    Delphi/C++Builder次期バージョンプレビュー会のお知らせ

    WeaverのFTには入れてもらえなかったので、どうするかなぁ…。もっとも人数制限もあるし、どうしよう以前に相手にしてもらえない可能性もあるわけですが。

    2009/07/29追記: 上記リンク先にQ&Aが追加されています。別に当日PCを持っていかなくてもいいらしいです。

    2009/08/05追記: 駆け込みですが出席することにしました。

    2009年7月24日

    Delphi Live! 2009/プレゼンテーション資料ダウンロード

    2009/05に行われたDelphi Live! 2009のプレゼンテーション資料がダウンロードできるようになっています。

    Presentation Download | Delphi Live ! - The Delphi Developer Conference!

    元ねたはDelphi.orgのDelphiLive! Presentation Downloads

    2009年7月23日

    Delphi 7以降で追加された機能について

    第13回エンバカデロ・デベロッパーキャンプの「Delphiコーディングスタイル バトルトーク」(A5)セッションのトークの中で、スピーカの方々を含め会場内は意外にDelphi 7以降に追加された機能をあまり知らないような雰囲気でしたが、そのあたりをわかりやすくまとめてあるアーティクルを4つ。

    34361: Delphi 7以降の IDEの新機能
    34409: Delphi 7以降の言語およびコンパイラの新機能
    34342: Delphi 7以降のVCLの新機能
    37433: あなたの環境でもきっと役に立つDelphi 7以降の新機能トップ10 - by Pawel Glowacki

    Delphiアルゴリズムトレーニング

    同じくはやしさん@ITのCoding Edgeフォーラムで連載していた"Delphiアルゴリズムトレーニング"も完結しています。

    (1) TListの実装と性能
    (2) 単純なキューと循環キュー
    (3) AVL木で木構造を学ぼう
    (4) もっとAVL木で木構造を学ぼう
    (5) RDBMSで使われるB木を学ぼう
    (6) B木から要素を削除する方法を学ぼう

    Yet another OSS DB:Firebird

    Firebird日本ユーザ会はやしさん@ITのDatabase Expertフォーラムで連載していた"Yet another OSS DB:Firebird"が完結しました。

    (1) Firebirdのアーキテクチャと特性、歴史
    (2) データベースファイルの内部構造を探ってみた
    (3) 仕組みを「見える化」してみた
    (4) Firebirdの標準関数を極める
    (5) 内部関数が足りない? それならUDFだ!
    (6) ユーザー定義関数で日付時刻やBLOBを扱う

    InterBase/FirebirdのユーザやDelphi/C++Builderでデータベースを扱うプログラマはひととおり読んでおくといいと思います。

    C++Builder 2009 ファーストガイド

    C++Builder 2009 ファーストガイドが10回に分割されて公開されるようです。

    第一回 「C++Builder 2009のインストールと使用許諾」
    第二回 「C++Builder2009の起動と終了」
    第三回「総合開発環境(IDE)の説明」
    第四回「プログラミング手順(前編)」
    第五回「プログラミング手順(後編)」
    第六回「C++基礎知識(前編)」
    第七回「C++基礎知識(後編)」
    第八回 「コンポーネント」
    第九回「コンポーネントの作成」
    第十回「データベースアプリケーションの作成」

    第一回で気になった点を2つばかり。
    1. "1.3 インストールに必要なソフトウェア"にあるとおり、Dephi 2009/C++Builder 2009では必要に応じてMicrosoft .NET Framework 2.0、Microsoft JSharp Runtime 2.0、Microsoft .NET 2.0 Japanese Language Pack、Microsoft Data Access Components(MDAC) 2.8、Microsoft Core XML Service(MSXML) 6.0、Microsoft Document Explorer 2008、Microsoft Document Explorer 2008 Language Packがインストールされますが、少なくとも.NET Framework 2.0、MDAC 2.8、MSXML 6.0についてはセキュリティ更新プログラムが存在するはずです。これらのソフトウェアが新規にインストールされたときにはWindowsUpdateMBSAでセキュリティ更新プログラムの適用の必要性を確認するよう、注意を促しておくべきではないでしょうか。

    2. アップデートの確認や適用方法は第二回以降に出てくるのでしょうか…?

    2009/07/31追記: 第二回のリンクを追加しました。
    2009/08/12追記: 第三回のリンクを追加しました。
    2009/08/21追記: 第四回のリンクを追加しました。
    2009/09/02追記: 第五回のリンクを追加しました。
    2009/09/11追記: 第六回のリンクを追加しました。
    2009/09/22追記: 第七回のリンクを追加しました。
    2009/10/02追記: 第八回のリンクを追加しました。
    2009/10/11追記: 第九回のリンクを追加しました。
    2009/10/22追記: 第十回のリンクを追加しました。やっと完結です。

    2009年7月16日

    第14回エンバカデロ・デベロッパーキャンプ

    先日の第13回の懇親会のときの藤井さんの予告のとおり、次回のデベロッパーキャンプは2009年09月02日に大阪で開催です(出張でも重なれば行けるかもしれませんが…)。今回はG2セッションのWeaver (Delphi/C++Builder/RAD Stdio 2010)のプレビュー(by高橋さん)が注目です。

    2009年7月15日

    1st anniversary

    気が付いたら1年経っていました(1週間も気付かなかったのかい)。2008/07/08から2009/07/07までの1年間で168エントリ、平均するとだいたい2日で1エントリといったところですが、最近ちょっとペースが悪いような。

    totonica on EDN

    totonicaさんによるEDNのTechnical Articleが順次公開中です。

    39691: RawByteStringの使い方
    39692: 文字列とエレメント
    39696: ライブテンプレートの作り方
    39697: 暗黙の文字列変換
    39698: Quality Centralでのバグレポートのコツ
    39699: DCC警告W1050の回避方法
    39701: 無名メソッドとスレッド
    39704: Delphi 2009におけるグラフィック機能の強化点
    39706: 文字列型とオーバーロード

    2009/07/21追記: 39691/39692/39697のアーティクルへのリンクを追加しました。
    2009/07/22追記: 39701のアーティクルへのリンクを追加しました。
    2009/07/24追記: 39704/39706のアーティクルへのリンクを追加しました。
    2009/07/28追記: totonicaさんによれば、これで今回は打ち止めだそうです。おつかれさまでした。

    Microsoft Monthly Update 2009/07

    今日はMicrosoftのセキュリティアップデートの日です。
    MS09-028
    MS09-029
    MS09-030
    MS09-031
    MS09-032
    MS09-033

    2009年7月12日

    Blogger Syntax Highlighter 1.5.2

    Heisencoder: Adding Syntax Highlighting to Bloggerを参考にSyntax Highlighterを組み込みなおしてみました。

    2009年7月11日

    Delphi 2009/C++Builder 2009 Help Update 3

    Delphi 2009/C++Builder 2009のHelp Update 3がリリースされています。英語版についてはHelp Update 2の不具合修正、ドイツ語、フランス語、日本語については英語版Help Update 2の翻訳となっています。

    Readme: Help Update 3 for Delphi and C++Builder 2009

    元ねたはNick HodgesさんのRandom Thoughts on the Passing Scene #115

    2009年7月9日

    ファイルをごみ箱経由で削除

    ファイルをごみ箱に送る(ごみ箱経由で削除する)にはSHFileOperationSHFILEOPSTRUCTのwFuncにFO_DELETEを指定します。またファイル名はNUL文字で区切って最後にNUL文字を2つ重ねる("double-null terminated string")必要があります。
    uses
      Windows, SysUtils, Classes, ShellAPI;
    
    function SHDeleteFiles(const Filename: String; WindowHandle: HWND;
                           AllowUndo: Boolean; FilesOnly: Boolean;
                           NoErrorUI: Boolean; Silent: Boolean): Boolean; overload;
    function SHDeleteFiles(Filenames: TStrings; WindowHandle: HWND;
                           AllowUndo: Boolean; FilesOnly: Boolean;
                           NoErrorUI: Boolean; Silent: Boolean): Boolean; overload;
    
    function InternalDeleteFiles(const Filenames: String;
                                 WindowHandle: HWND;
                                 AllowUndo: Boolean;
                                 FilesOnly: Boolean; 
                                 NoErrorUI: Boolean;
                                 Silent: Boolean): Boolean; forward;
    
    function SHDeleteFiles(const Filename: String; WindowHandle: HWND;
                           AllowUndo: Boolean; FilesOnly: Boolean;
                           NoErrorUI: Boolean; Silent: Boolean): Boolean;
    var
      FilenameArray: String;
    begin
    
      FilenameArray := ExpandFileName(Filename) + #0;
      Result := InternalDeleteFiles(FilenameArray,WindowHandle,
                                    AllowUndo,FilesOnly,NoErrorUI,Silent);
    
    end;
    
    function SHDeleteFiles(Filenames: TStrings; WindowHandle: HWND;
                           AllowUndo: Boolean; FilesOnly: Boolean; 
                           NoErrorUI: Boolean; Silent: Boolean): Boolean;
    var
      Index: Integer;
      FilenameArray: String;
    begin
    
      FilenameArray := '';
      for Index := 0 to Filenames.Count - 1 do
      begin
        FilenameArray := FilenameArray + ExpandFileName(Filenames.Strings[Index]) + #0;
      end;
      FilenameArray := FilenameArray + #0;
    
      Result := InternalDeleteFiles(FilenameArray,WindowHandle,
                                    AllowUndo,FilesOnly,NoErrorUI,Silent);
    
    end;
    
    function InternalDeleteFiles(const Filenames: String;
                                 WindowHandle: HWND;
                                 AllowUndo: Boolean;
                                 FilesOnly: Boolean;
                                 NoErrorUI: Boolean; 
                                 Silent: Boolean): Boolean;
    var
      SHOP: TSHFileOpStruct;
    begin
    
      with SHOP do
      begin
        Wnd := WindowHandle;
        wFunc := FO_DELETE;
        pFrom := PChar(Filenames);
        pTo := nil;
        fFlags := FOF_NOCONFIRMATION;
        if AllowUndo = True then
        begin
          fFlags := fFlags or FOF_ALLOWUNDO;
        end;
        if FilesOnly = True then
        begin
          fFlags := fFlags or FOF_FILESONLY;
        end;
        if NoErrorUI = True then
        begin
          fFlags := fFlags or FOF_NOERRORUI;
        end;
        if Silent = True then
        begin
          fFlags := fFlags or FOF_SILENT;
        end;
        fAnyOperationsAborted := False;
        hNameMappings := nil;
        lpszProgressTitle := nil;
      end;
    
      Result := (SHFileOperation(SHOP) = 0) and (SHOP.fAnyOperationsAborted = False);
    
    end;
    

    元ねたはDelete files with the ability to UNDO他多数。

    2009年7月2日

    第13回エンバカデロ・デベロッパーキャンプ終了

    スピーカの皆さん、関係者の皆さん、懇親会に参加したみなさん、おつかれさまでした。
    今日は山本さん神が降臨した瞬間を見られてよかったです(それが感想かい)。あとペンケースが当たりました。

    2009/07/13追記: セッション資料がダウンロードできるようになっています。

    2009年6月29日

    JVCL 3.37リリース

    JVCL(JEDI Visual Component Library)がアップデートされてVersion 3.37(JCL Version 1.105)になっています。

    SourceForge.net: JEDI VCL for Delphi: Files

    元ねたはNick HodgesさんのRandom Thoughts on the Passing Scene #114

    2009年6月19日

    PowerPDF for Delphi 2009 日本語版

    PDFを生成するTakeshi KannoさんのPowerPdf 0.9(開発停止/LGPL)をDelphi 2009で使用できるようにMamさんが改造したコンポーネント。

    PowerPDF for Delphi 2009 Japanese
    MAM'S WEBSITE 無料フリーソフトダウンロード(PCツール)

    数式計算コンポーネント

    数式を与えて値を計算するという、簡単なようにみえて実際には結構面倒なことをやってくれるというコンポーネント。作者のYura Pisarevさんはロシアの方でしょうか。

    High-speed mathematics parser
    TMathParser

    ライセンス条件はどうなっているのでしょう…?

    2009年6月16日

    ローカライズリソースDLLの選択

    国際化対応のためのメカニズムとしてDelphi/C++Builder(Ver3以降)にはローカライズリソースDLL(localized resource DLL)があります。これは拡張子".EXE"、".DLL"、"BPL"のファイルについて、実行時にこれらのファイルからのリソース(フォームデータ、リソース文字列、その他の埋め込みリソース)のロードをローカライズリソースDLLからのものに置き換えてしまう、というものです。
    この動作はSystem.pasのLoadResourceModule関数で処理されますが、ここではまず"HKCU\Software\CodeGear\Locales"(Delphi 2009 or later)、"HKLM\Software\CodeGear\Locales"(Delphi 2009 or later)、"HKCU\Software\Borland\Locales"(Delphi 4 or later)、"HKLM\Software\Borland\Locales"(Delphi 6-2007)、"HKCU\Software\Borland\Delphi\Locales"(Delphi 3 or later)の順にレジストリキーの存在を確認し、いずれかが存在したら次に実行ファイルのフルパス名の登録があるかどうかを見て、登録されていたら代替ロケール識別子として取得します。次に実行プログラムのロケール識別子を実行ロケール識別子として取得します。その上で実行ファイルのフルパス名の拡張子を代替ロケール識別子(登録されていれば)、実行ロケール識別子、実行ロケール識別子の先頭2文字だけ、の順で置き換えてWin32APIのLoadLibraryExを呼び出し、成功したらそのモジュールハンドルを以後のリソースの取得に使用します。いずれも失敗した場合はもともとの実行ファイルのモジュールハンドルからリソースを取得することになります。

    ここでロケール識別子はGetLocaleInfoのLCTYPEにLOCALE_SABBREVLANGNAMEを指定して取得される3文字の英字で、最初の2文字が言語簡略名(ISO 639)を、3文字目がサブ言語タイプ(主に地域)を示します。詳細なリストはMSDNのNational Language Support (NLS) API Referenceにあります。

    ということは、実行ロケールがJPN(ロケールID=0x0411/日本語版Windows)かつ実行ファイルのロケールがJPN以外(例えばENU=0x0409)の状況でローカライズリソースDLLとして.JPNファイルが存在する場合、実行ファイルのリソースを使用する方法がない(.JPNファイルを削除するしかない)わけです。どーりでレジストリに何を指定しても駄目なわけだ…。

    元ねたは"Source\RTL\SYS\System.pas"。

    2009/09/06追記: 新井さんによるとDelphi 2010ではこの選択メカニズムに一部変更があったとのことです。
    Embarcadero Discussion Forums: Delphi2010 国際化対応について ...
    Delphi 2010を入手したら検証してみたいと思います。

    2011/05/04追記: forums.codegear.comのリンクをforums.embarcadero.comのものに差し替え。

    2009年6月10日

    Microsoft Monthly Update 2009/06

    今日はMicrosoftのセキュリティアップデートの日です。
    MS09-018
    MS09-019
    MS09-020
    MS09-021
    MS09-022
    MS09-023
    MS09-024
    MS09-025
    MS09-026
    MS09-027
    KB969898 (Cumulative Security Update of ActiveX Kill Bits)

    2009年6月4日

    Borlandの買収に競合出現

    2009/05/06にBorlandがMicro Focusに買収されるというニュースが流れましたが、ここにきて1株1.20USDで買収したいという競合相手(BorlandによればNDAで相手を明かすことはできないが、"E社"(Company E)と呼んでいる)が出現した模様です。

    Tech Trader Daily - Barron’s Online : Borland Shrs Spikes; Second Bidder Offers $1.20/Shr

    Borlandはどうもこっちになびいているようで、Micro Focusによる買収は不透明な情勢のようです。

    元ねたは公式フォーラムのEmbarcadero Discussion Forums: Is "Company E" Embaracadero...? ...あたり。

    2009年6月3日

    DelphiのASLR/DEP(NX)サポート

    ASLR(Address Space Layout Randomization)とは、実行ファイルからリンクされるDLLをユーザメモリ空間上に配置するときにその位置をランダムにすることにより特定のアドレスに既知のDLLがロードされていることを前提とした攻撃を防ぐもので、Windows Vistaで導入されました。
    一方DEP/NX(Data Execution Prevention/Non-eXecutable)とはNXであるとマークしたメモリ空間上の領域でコードを実行することを禁止することによりバッファオーバランなどを利用した攻撃を防ぐもので、Windows XP SP2で導入されました。

    Delphiでは2007以降でASLRおよびDEP/NXをサポートするようになりました。またDelphiのデバッガも2007以降でDEP/NXに対応した(DEP/NXが有効なWindows上でもエラーにならないようにした)とのことです。

    ASLRを有効にするにはソースコード上で

    {$DYNAMICBASE ON}
    または

    {$SETPEOPTFLAGS $40}
    とします(コマンドライン版では"–dynamicbase"スイッチを使用します)。

    DEP/NXを有効にするにはソースコード上で

    {$SETPEOPTFLAGS $100}
    とします。

    ASLRとDEP/NXを同時に有効したい場合はソースコード上で

    {$SETPEOPTFLAGS $140}
    とすれば1回の指定で済みます。

    コンパイラ指令$SETPEFLAGS/$SETPEOPTFLAGSはDelphiのヘルプのPE ヘッダーフラグ(Delphi)(英語ヘルプ)にあるように、PEファイルヘッダのCharacteristicsフィールドとPEファイルオプションヘッダのDLLCharacteristicsフィールド上のフラグをセットする(指定は累積されます)ためのもので、これらのコンパイラ指令はプロジェクトソース(*.dpr/*.dpk)に記述するのが望ましいとのことです。PEファイルヘッダのCharacteristicsフィールドとPEファイルオプションヘッダのDLLCharacteristicsフィールドの詳細はIMAGE_FILE_HEADER Structure (Windows)(PEファイルヘッダ)およびIMAGE_OPTIONAL_HEADER Structure (Windows)(PEファイルオプションヘッダ)を参照してください。

    元ねたはMichael Howard's Web Log : CodeGear’s new Delphi 2007 supports ASLR and NXMike Devery » Delphi 2007 supports ASLR and NXChris’ CodeGear Debugger Blog » The Delphi 2007 Debugger and DEP/NX (Internet Archive)あたり。

    2011/05/05追記: Chris Hesikさんの"Chris’ CodeGear Debugger Blog"のInternet Archiveのリンクを追加。

    2009年5月31日

    IDE Fix Pack 2.6/VCLFixPack 1.3リリース

    Andreas HausladenさんIDE Fix Pack 2009がVersion 2.6に、VCLFixPackがVersion 1.3にそれぞれアップデートされています。IDE Fix Pack 2009 Version 2.6はDelphi 2009 Update 3適用済の環境でのみ動作するとのことです。

    Andy’s Blog and Tools » IDE Fix Pack 2.6 for 2009 Update 3 / VCL Fix Pack 1.3

    2009年5月29日

    リリースは月火水のみ

    公式フォーラムでNick Hodgesさんが以下のように発言しています。
    Embarcadero Discussion Forums: When the heck is Update 3 going to be ...
    Actually, we now only ship on a Monday, Tuesday, or Wednesday. We've set that as an official policy.

    要は公式な方針として(PST/PDTで)月曜日、火曜日、水曜日にのみリリースを行う、ということのようです(JSTだと概ね火曜日~木曜日になりますね)。