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 ユーザー エクスペリエンス ガイドライン