InterBase XE3 Update 4 Hotfix 4がリリースされています。バージョンは11.0.4.828となっています。
30425 InterBase XE3 Update 4 Hotfix 4 (11.0.4.828) for Windows
InterBase XE3 Update 4 Hotfix 3(11.0.4.828)で修正された不具合について
2015年10月21日
2015年10月16日
[書籍]C++のエッセンス
MARUZEN&ジュンク堂書店 渋谷店でA Tour of C++ (amazon.com)の翻訳である
C++のエッセンス (amazon)/Bjarne Stroustrup著/柴田望洋訳/SBクリエイティブ/ISBN 978-4-7973-8477-2/2,376円
を購入。
C++のエッセンス (amazon)/Bjarne Stroustrup著/柴田望洋訳/SBクリエイティブ/ISBN 978-4-7973-8477-2/2,376円
を購入。
2015年10月14日
2015年10月8日
IDE Fix Pack 5.93 for Delphi XE7 Summer 2015 Update
Andreas HausladenさんのIDE Fix PackがDelphi XE7のSummer 2015 Updateに対応しました。この再リリース版ではDelphi XE7のUpdate 1またはSummer 2015 Updateが必要になります。
IDE Fix Pack 5.93 re-release for Summer 2015 XE7 Hotfix | Andy's Blog and Tools
IDE Fix Pack 5.93 re-release for Summer 2015 XE7 Hotfix | Andy's Blog and Tools
2015年10月6日
RAD Studio/Delphi/C++Builder XE7 Summer 2015 Update
アップデートサブスクリプション導入時に新たに追加された"継続的なメンテナンス"の第1弾としてとして、RAD Studio XE7のSummer 2015 Updateがリリースされています。インストーラ起動時に表示されるとおり、あらかじめXE7のライセンスマネージャでXE8のシリアル番号を登録する必要があるので注意してください。
30410 Summer 2015 XE7 Update Subscription Update
以下の修正がXE8からバックポートされているとのことです。
30410 Summer 2015 XE7 Update Subscription Update
以下の修正がXE8からバックポートされているとのことです。
- 126058: XML Data Binding Wizard - strings in xml ends as integers
- RSP-10071: TValue.GetTypeKind returns incorrect value
- RSP-9894: XE7, TMenuItem, Styles
- RSP-9643: Inputquery truncates the prompt
- RSP-9969: ISO8601ToDate does not handle fractional part of time with more than 3 digits
- 129319: "Access Violation" search on TListBox
- 116169: Slow opening forms in IDE XE3/XE4
- Inconsistent Formula used for font scaling
- 118708: Large Fonts: Incorrect DPI Scale Factor used
- TCustomComboBox does not display it's list correctly at DPI settings over the default of 96
- 128986: OnClick event of TComboBox is not fired
2015年10月5日
Spring4Dのマルチキャストイベントを使う
Delphi/VCLの大きな特徴のひとつである"PMEモデル(Properties, Methods and Events model)"の"E"、イベントハンドラは基本的に関数ポインタ(実際にはTMethod = データポインタ + 関数ポインタ)で実装されており、結果としてイベントはユニキャスト、つまりある事象の通知を受け取れるのは一つのイベントハンドラのみ、ということになっています。しかし状況によってはマルチキャスト、つまり複数のイベントハンドラに事象の通知を送りたい、ということがあります。デザインパターンでいうとオブザーバパターンとなるような状況です。デザインパターンの定石に従って、たとえばBranko StojakovicさんのGoF Patterns in DelphiのObserverやNick HodgesさんのMore Coding in Delphiにあるように、IObserverとISubjectを実装して…というやりかたも考えましたが、マルチキャストで通知したい事象が何種類もある状況だと、何らかの形でジェネリックス化されている実装でないと厳しそうです。そこで探してみると、Spring4DというDI(dependency injection)フレームワークでマルチキャストイベントが実装されているということだったので、これを試してみることにします。なおSpring4DのライセンスはApache License 2.0です(日本語参考訳)。またSpring4Dそのもの(DIコンテナとしてのSpring4D)については第28回エンバカデロ・デベロッパーキャンプのLTの岡野さんのプレゼンテーション資料が非常に参考になります。
まずSpring4Dのなかでマルチキャストを実現しているのはEvent<T>レコード型になります。これを使用するのに必要なユニットですが、Source\Baseフォルダにある
では実際にEvent<T>でマルチキャストを試してみます。今回はメインフォームからモードレスなサブフォームをいくつか表示して、フォーム上のボタンクリックの発生と、その累計回数を各フォームに通知します。
まず通知のためのイベントと、イベントを登録/削除するインタフェースを定義します。
Spring4DのEventがよくできていることもあってそれほど難しくはないと思います(気をつけなければならないのはclass function CreateによるEvent<T>の明示的な初期化くらい)。ただEvent<T>のTには通常のイベントハンドラ(procedure ... of object)だけでなく、無名メソッド(reference to ...)も入れられるのですが、この場合Event<T>で保持されるものが自動的に生成される無名メソッド値(TInterfacedObjectの派生クラスのインスタンス)であり、そのポインタをAddの呼び出し側(TForm2)では知ることができないためRemoveできない、という点には注意が必要です。
まずSpring4Dのなかでマルチキャストを実現しているのはEvent<T>レコード型になります。これを使用するのに必要なユニットですが、Source\Baseフォルダにある
- Spring.pas
- Spring.inc
- Spring.ResourceStrings.pas
- Spring.Events.Base.pas
- Spring.Events.pas
- jedi.inc
では実際にEvent<T>でマルチキャストを試してみます。今回はメインフォームからモードレスなサブフォームをいくつか表示して、フォーム上のボタンクリックの発生と、その累計回数を各フォームに通知します。
まず通知のためのイベントと、イベントを登録/削除するインタフェースを定義します。
type
TNotifyNumber = procedure (Sender: TObject; Number: Integer) of object;
ISubject = interface
procedure Add(AEvent: TNotifyNumber);
procedure Remove(AEvent: TNotifyNumber);
end;
TNotifyNumberが通知のためのイベントハンドラの型、ISubjectがそのイベントハンドラを登録/削除する機能を持たせたインタフェースです。メインフォーム、サブフォームの両方で使用するので別ユニットで定義しておきます。次はメインフォームです。uses
Spring, ...
type
TForm1 = class(TForm,ISubject)
...
procedure FormCreate(Sender: TObject);
procedure FormDestroy(Sender: TObject);
private
FEvent: Event<TNotifyNumber>
public
procedure Add(AEvent: TNotifyNumber);
procedure Remove(AEvent: TNotifyNumber);
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
FEvent := Event<TNotifyNumber>.Create;
end;
procedure TForm1.FormDestroy(Sender: TObject);
begin
FEvent.Clear;
end;
procedure TForm1.Add(AEvent: TNotifyNumber);
begin
FEvent.Add(AEvent);
end;
procedure TForm1.Remove(AEvent: TNotifyNumber);
begin
FEvent.Remove(AEvent);
end;
メインフォームはISubjectインタフェースを継承するようにして、AddとRemoveを実装します。Event<T>はレコード型ですが、内部の適切な初期化のためにclass function Createを呼び出しておく必要があります。AddとRemoveでは単にEvent<T>のAddとRemoveを呼び出すだけです。一方サブフォームではtype
TForm2 = class(TForm)
...
private
FSubject: ISubject;
public
property Subject: ISubject
read FSubject
write FSubject;
end;
メインフォームをISubjectとして保持するためのプロパティを用意します。これでメインフォームからサブフォームを生成、表示する処理はprocedure TForm1.Button1Click(Sender: TObject);
begin
with TForm2.Create(Self) do
begin
Subject := Self;
Show;
end;
end;
となります。サブフォーム側ではボタンクリックで任意にマルチキャストイベントを登録、削除できるようにしてみます、type
TForm2 = class(TForm)
Button1: TButton;
Button2: TButton;
Label1: TLabel;
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
private
...
procedure DoNotifyNumber(Sender: TObject; Number: Integer);
public
...
end;
procedure TForm2.FormClose(Sender: TObject; var Action: TCloseAction);
begin
Subject.Remove(DoNotifyNumber);
Action := caFree;
end;
procedure TForm2.Button1Click(Sender: TObject);
begin
Subject.Add(DoNotifyNumber);
end;
procedure TForm2.Button2Click(Sender: TObject);
begin
Subject.Remove(DoNotifyNumber);
end;
procedure TForm2.DoNotifyNumber(Sender: TObject; Number: Integer);
begin
Label1.Caption := 'Notified number is ' + IntToStr(Number);
end;
procedure DoNotifyNumberがマルチキャストイベントのイベントハンドラで、これをButton1/Button2のクリックイベントでSubjectにAdd/Removeすることで登録、削除します。最後にメインフォーム側からのマルチキャストイベントの呼び出しです。type
TForm1 = class(TForm,ISubject)
...
Label1: TLabel;
Button2: TButton;
procedure Button2Click(Sender: TObject);
private
FCount: Integer;
...
public
...
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
FCount := FCount + 1;
Label1.Caption := IntToSTr(FCount);
FEvent.Invoke(Self,FCount);
end;
Selfと1ずつ増える整数値(FCount)でEvent<T>のInvokeメソッドを呼び出すだけです(正確にはInvokeはイベントハンドラ型(<T> = <TNotifyNumber>)のプロパティで、Invoke(...)とすることでメソッドの呼び出しになる)。Spring4DのEventがよくできていることもあってそれほど難しくはないと思います(気をつけなければならないのはclass function CreateによるEvent<T>の明示的な初期化くらい)。ただEvent<T>のTには通常のイベントハンドラ(procedure ... of object)だけでなく、無名メソッド(reference to ...)も入れられるのですが、この場合Event<T>で保持されるものが自動的に生成される無名メソッド値(TInterfacedObjectの派生クラスのインスタンス)であり、そのポインタをAddの呼び出し側(TForm2)では知ることができないためRemoveできない、という点には注意が必要です。
2015年10月1日
RAD Studio/Delphi/C++Builder 10 Seattle PAServer Hotfix
RAD Studio/Delphi/C++Builder 10 SeattleのPAServer Hotfixがリリースされています。OS X 10.11対応とiOS 9 SDK対応とのことです。またUpdate Subscriptionとは関係なくダウンロードできます。
30398 PAServer Hotfix for Delphi, C++Builder and RAD Studio 10 Seattle
PAServer Hotfix for RAD Studio 10 Seattle - iOS 9 and OS X El Capitan
How to use custom Info.plist XML to support iOS 9's new App Transport Security feature
30398 PAServer Hotfix for Delphi, C++Builder and RAD Studio 10 Seattle
PAServer Hotfix for RAD Studio 10 Seattle - iOS 9 and OS X El Capitan
How to use custom Info.plist XML to support iOS 9's new App Transport Security feature
2015/10開催のセミナー
- Web Seminar
- 2015/10/28 17:00-18:00(JST) デベロッパーTV「エンバカデロの最新動向」
- Live Seminar
- 2015/10/15 15:30-17:00(JST) 「RAD Studioで始めるマルチデバイス開発ワークショップ」
- 2015/10/21 15:30-17:00(JST) 技術研修セミナー「旧Delphi/C++アプリケーションを最新に!移行のテクニック」
2015年9月24日
GetIt経由でインストールしたTurboPack LockBox 3.5がRAD Studio XE8と10 Seattleで干渉する問題とその暫定解決策
RAD Studio XE8で導入されたGetItパッケージマネージャは、簡単にコンポーネントなどのパッケージをIDEに登録することができる便利なツールです。ところがここに登録されているTurboPack LockBox 3.5のパッケージ名がXE8のものと10 Seattleのもので同一("LockBox3DR.bpl"、"LockBox3DD.bpl")となっており、パッケージは環境変数PATHに従って検索されるため、同一環境上のXE8と10 Seattleの両方にLockBoxを入れると先にインストールしたIDEが誤って別のバージョンのbplファイルを読み込んでしまいエラーになる、という現象があります(2015/09/24現在)。この問題、既にTurboPackのメンテナであるRomanさんのほうでは認識しており、GitHub上のリポジトリではXE8のほうのLIBサフィックスには220、10 Seattleのほうには230がつけられているのですが、GetItで配布されるものにはまだこれらの変更が反映されていないようです。
ということで暫定解決策ですが、次の3つが考えられます。
休日にもかかわらず鋭い指摘をいただいた、おに(@onimaro2010)さんに感謝いたします。とりあえずまとめました。
ということで暫定解決策ですが、次の3つが考えられます。
- GetItを使わずGitHubから最新のもの(XE8、10 Seattle)をチェックアウトしてインストールする。
- 誤動作するほうのバージョンのIDEのショートカットの作業フォルダにbplの保存先を明示的に指定する(XE8なら"C:\Users\Public\Documents\Embarcadero\Studio\16.0\Bpl"、10 Seattleなら"C:\Users\Public\Documents\Embarcadero\Studio\17.0\Bpl")。
- 自分でLIBサフィックスを指定しなおす。具体的には
- "ファイル"→"プロジェクトを開く"でXE8なら"C:\Users\<username>\Documents\Embarcadero\Studio\16.0\CatalogRepository\LockBox-3.5.0\packages\Delphi"、10 Seattleなら"C:\Users\<username>\Documents\Embarcadero\Studio\17.0\CatalogRepository\LockBox-3.5.0\packages\Delphi"にあるDelphi.groupprojを開く
- プロジェクトマネージャでLockBox3DD.bplを右クリック→アンインストール
- 当該バージョンのbplフォルダにある"LockBox3DR.bpl"と"LockBox3DD.bpl"を削除する
- LockBox3DD.bpl、LockBox3DR.bplのプロジェクトオプションでターゲットを"すべての構成 - すべてのプラットフォーム"にしておいて、"説明"のLIBサフィックスを220(XE8)または230(10 Seattle)に変更する
- "プロジェクト"→"すべてのプロジェクトをコンパイル"でコンパイルする(DEBUGビルドのみでいいようです)
- LockBox3DR220.bpl(XE8)またはLockBox3DR230.bpl(10 Seattle)を右クリック→インストール
休日にもかかわらず鋭い指摘をいただいた、おに(@onimaro2010)さんに感謝いたします。とりあえずまとめました。
2015年9月21日
[書籍]Effective Modern C++
紀伊國屋書店新宿本店でEffective Modern C++ (amazon.com)の翻訳である
Effective Modern C++ (amazon)/Scott Meyers著/千住治郎訳/オライリージャパン/ISBN 978-4-87311-736-2/4,104円
を購入。
Effective Modern C++ (amazon)/Scott Meyers著/千住治郎訳/オライリージャパン/ISBN 978-4-87311-736-2/4,104円
を購入。
2015年9月12日
RAD Studio/Delphi/C++Builder 10 Seattle DUnitX Update
RAD Studio/Delphi/C++Builder 10 SeattleのDUnitX Updateがリリースされています。DUnitX関係のファイルの更新のようです。
30368 DUnitX Update for RAD Studio, Delphi, and C++Builder 10 Seattle
30368 DUnitX Update for RAD Studio, Delphi, and C++Builder 10 Seattle
2015年9月9日
2015年9月3日
[書籍]Delphi in Depth: ClientDataSets 2nd Edition
同じくCreateSpaceで注文した
Delphi in Depth: ClientDataSets 2nd Edition (CreateSpace, Amazon US)/Cary Jensen Ph.D.著/CreateSpace/ISBN 978-1505840186/34.99USD
が配送されてきました。34.99USD("More Coding in Delphi"のついでなのでshippingは考えないことにして)=6,191JPY(暫定、1USD=124.41JPY)でした。
Delphi in Depth: ClientDataSets 2nd Edition (CreateSpace, Amazon US)/Cary Jensen Ph.D.著/CreateSpace/ISBN 978-1505840186/34.99USD
が配送されてきました。34.99USD("More Coding in Delphi"のついでなのでshippingは考えないことにして)=6,191JPY(暫定、1USD=124.41JPY)でした。
[書籍]More Coding in Delphi
CreateSpaceで注文した
More Coding in Delphi (CreateSpace, Amazon US)/Nick Hodges著/CreateSpace/ISBN 978-1941266106/39.99USD
が配送されてきました(今回の配送はi-parcel/佐川急便でした)。2015/08/18に注文して16日目の到着、39.99USDにShippingの9.77USD("Delphi in Depth: ClientDataSets 2nd Edition"の分も込み)で締めて49.76USD=6,721JPY(暫定、1USD=123.74JPY)でした。
More Coding in Delphi (CreateSpace, Amazon US)/Nick Hodges著/CreateSpace/ISBN 978-1941266106/39.99USD
が配送されてきました(今回の配送はi-parcel/佐川急便でした)。2015/08/18に注文して16日目の到着、39.99USDにShippingの9.77USD("Delphi in Depth: ClientDataSets 2nd Edition"の分も込み)で締めて49.76USD=6,721JPY(暫定、1USD=123.74JPY)でした。
2015年9月1日
2015/09開催のセミナー
- Web Seminar
- 2015/09/03 15:00-16:30(JST) RAD STUDIO FIRST LOOK Webセミナー
- 2015/09/08 15:00-18:30(JST) 10 Seattle新機能マラソンWebセミナー
- 2015/09/24 17:00-18:00(JST) デベロッパーTV「Konopkaとは何?」
- Live Seminar
- 2015/09/15 15:30-17:00(JST) 技術研修セミナー「旧Delphi/C++アプリケーションを最新に!移行のテクニック」
- 2015/09/18 15:30-17:00(JST) 「RAD Studioで始めるマルチデバイス開発ワークショップ」
2015年8月31日
RAD Studio/Delphi/C++Builder 10 Seattleリリース
RAD Studio/Delphi/C++Builder 10 Seattleがリリースされています(XEのブランディングは8で打ち止めのようで、今後は都市名になるのでしょうか"10.x 都市名"となるようです)。
エンバカデロ、Windows 10対応のマルチデバイスネイティブ開発環境の新バージョン「RAD Studio 10 Seattle」を発表 | Press Releases
RAD Studio Seattle ヘルプ (en)
リリース ノート (en)
インストール ノート (en)
新機能 (en)
Bug fix list for RAD Studio 10 Seattle
30353 Delphi and C++Builder 10 Seattle ISO
30355 VCL Premium Styles Pack for RAD Studio 10 Seattle
30354 FireMonkey Premium Styles Pack for RAD Studio 10 Seattle
30360 RAD Studio 10 Seattle FireMonkey Accessibility Pack
30359 BDE Installer for RAD Studio, Delphi, C++Builder 10 Seattle
30333 IP*Works for Delphi 10 Seattle
30332 IP*Works for C++Builder 10 Seattle
30357 FastReport VCL 5 for RAD Studio, Delphi, C++Builder 10 Seattle
30334 FastReport FMX for RAD Studio, Delphi, and C++Builder 10 Seattle
30401 MIDA Converter Basic for RAD Studio 10 Seattle
エンバカデロ、Windows 10対応のマルチデバイスネイティブ開発環境の新バージョン「RAD Studio 10 Seattle」を発表 | Press Releases
RAD Studio Seattle ヘルプ (en)
リリース ノート (en)
インストール ノート (en)
新機能 (en)
Bug fix list for RAD Studio 10 Seattle
30353 Delphi and C++Builder 10 Seattle ISO
30355 VCL Premium Styles Pack for RAD Studio 10 Seattle
30354 FireMonkey Premium Styles Pack for RAD Studio 10 Seattle
30360 RAD Studio 10 Seattle FireMonkey Accessibility Pack
30359 BDE Installer for RAD Studio, Delphi, C++Builder 10 Seattle
30333 IP*Works for Delphi 10 Seattle
30332 IP*Works for C++Builder 10 Seattle
30357 FastReport VCL 5 for RAD Studio, Delphi, C++Builder 10 Seattle
30334 FastReport FMX for RAD Studio, Delphi, and C++Builder 10 Seattle
30401 MIDA Converter Basic for RAD Studio 10 Seattle
2015年8月27日
2015年8月19日
[書籍]Object Pascal Handbook
CreateSpaceで注文した
Object Pascal Handbook (CreateSpace, Amazon US)/Marco Cantu著/CreateSpace/ISBN 978-1514349946/46.50USD
が配送されてきました(今回の配送はi-parcel/佐川急便でした)。2015/08/07に注文して13日目の到着、46.50USDにShippingの7.38USDで締めて53.88USD=6,721JPY(暫定、1USD=123.74JPY)6,823JPY(1USD=126.634JPY)でした。ちなみにかなり分厚いです(実測で31mmでした)。日本語版も期待してます。
Object Pascal Handbook (CreateSpace, Amazon US)/Marco Cantu著/CreateSpace/ISBN 978-1514349946/46.50USD
が配送されてきました(今回の配送はi-parcel/佐川急便でした)。2015/08/07に注文して13日目の到着、46.50USDにShippingの7.38USDで締めて53.88USD=
登録:
投稿 (Atom)