- Web Seminar
- 2021/06/10 23:00-24:00(JST) Delphi Low Code Wizard Webinar
- 2021/06/25 17:00-18:00(JST) エンバカデロ・デベロッパーTV
- Live Seminar
- Community Event
2021年6月1日
2021/06開催のセミナー
2021年5月12日
2021年5月5日
マイナーリリースを区別する新しい標準条件シンボル
Delphi Master Release List · ideasawakened/DelphiKB Wiki · GitHubを見ていて気が付いたのですが、いままで標準条件シンボルの定義やCONDITIONALEXPRESSIONSではできなかった、マイナーリリース間を区別する(たとえば10.4.1と10.4.2を見分ける)ための新しい標準条件シンボルがRAD Studio/Delphi/C++Builder 10.4.2 Sydneyで導入されたようです。
RAD Studio/Delphi/C++Builder 10.4.1 SydneyまではSystem.pasに
RAD Studio/Delphi/C++Builder 10.4.1 SydneyまではSystem.pasに
const
RTLVersion = 34.00;
{$HPPEMIT '#define RTLVersionC 3400'}
とRTLVersionが定義(34.0)されていたものが、10.4.2 Sydneyではconst
RTLVersion = 34.00; RTLVersion1041 = True; RTLVersion1042 = True;
{$HPPEMIT '#define RTLVersionC 3400'}
と、RTLVersion1041/RTLVersion1042(いずれもTrue)の定義が追加されています。10.4/10.4.1ではこれらの定義が存在せず、10.5でもどうなるのかがいまのところわかっていないので使用方法も判然としないのですが、とりあえず{$IF RTLVersion = 34.0}
{$IF RTLVersion1042}
Label1.Caption := 'Delphi 10.4.2.';
{$ELSE}
Label1.Caption := 'Delphi 10.4 or 10.4.1.';
{$ENDIF}
{$ELSE}
Label1.Caption := 'Not Delphi 10.4.x.';
{$IFEND}
こんな感じになるでしょうか。
2021年5月4日
RAD Studio/Delphi 10.4.2 RTL Patch
RAD Studio/Delphi 10.4.2 SydneyのRTL Patch 1.0がリリースされています。General Patch 1.0で不足していたRSP-33117の修正が行われます。
Delphi 10.4.2 RTL Patch
Delphi 10.4.2 RTL Patchのリリース
Delphi 10.4.2 RTL Patch
Delphi 10.4.2 RTL Patchのリリース
2021年5月1日
RAD Studio/Delphi/C++Builder 10.4.2 General/Delphi Compiler Patch
RAD Studio/Delphi/C++Builder 10.4.2 SydneyのGeneral Patch 1.0およびDelphi Compiler Patch 1.0がリリースされています。General Patch 1.0はデバッグおよびC++コンパイラ/リンカの問題(RSP-33406、RSP-33117、RSP-32951、RSP-32939、RSP-32043)を、Delphi Compiler Patch 1.0はDelphiのコンパイラおよびLSPの問題(RSP-33425、RSP-33232、RSP-32768)を修正します。
RAD Studio 10.4.2 General Patch
Delphi 10.4.2 Compiler Patch
RAD Studio 10.4.2のPatchのリリース: General PatchおよびDelphi Compiler Patch (en)
2021/05/02追記: General Patch 1.0にはRSP-33117が含まれておらず、この件に関しては別途パッチが再リリースされることになるとのことです。
2021/05/04追記: RSP-33117はRTL Patch 1.0で修正されました。
RAD Studio 10.4.2 General Patch
Delphi 10.4.2 Compiler Patch
RAD Studio 10.4.2のPatchのリリース: General PatchおよびDelphi Compiler Patch (en)
2021/05/02追記: General Patch 1.0にはRSP-33117が含まれておらず、この件に関しては別途パッチが再リリースされることになるとのことです。
2021/05/04追記: RSP-33117はRTL Patch 1.0で修正されました。
2021年4月29日
[書籍]Delphiで作るAndroidスマホアプリ
Amazon(JP)で注文した
Delphiで作るAndroidスマホアプリ (Amazon JP)/山菅昇一、山菅昇太郎著/インプレスR&D/ISBN 9784844379584/2,200円
が配送されてきました。
Delphiで作るAndroidスマホアプリ (Amazon JP)/山菅昇一、山菅昇太郎著/インプレスR&D/ISBN 9784844379584/2,200円
が配送されてきました。
2021年4月16日
[書籍]改訂第4版 C++ポケットリファレンス
紀伊國屋書店新宿本店でC++ポケットリファレンス、改訂新版 C++ポケットリファレンス、改訂第3版 C++ポケットリファレンスのC++20対応改訂版の
改訂第4版 C++ポケットリファレンス (amazon)/ 高橋晶、安藤敏彦、一戸優介、楠田真矢、湯朝剛介著/技術評論社/ISBN 978-4-297-11999-7/3,278円
を購入。
改訂第4版 C++ポケットリファレンス (amazon)/ 高橋晶、安藤敏彦、一戸優介、楠田真矢、湯朝剛介著/技術評論社/ISBN 978-4-297-11999-7/3,278円
を購入。
2021年4月14日
2021年4月1日
2021年3月16日
[書籍]Object Pascal Handbook Delphi 10.4 Sydney Edition
Amazon(JP)で注文した
Object Pascal Handbook Delphi 10.4 Sydney Edition (Amazon US, Amazon JP)/Marco Cantù著/ISBN 979-8554519963/5,606JPY(printed)
が配送されてきました。2021/03/14に注文して2日目の到着でした。
Object Pascal Handbook Delphi 10.4 Sydney Edition (Amazon US, Amazon JP)/Marco Cantù著/ISBN 979-8554519963/5,606JPY(printed)
が配送されてきました。2021/03/14に注文して2日目の到着でした。
2021年3月10日
2021年3月6日
const修飾されたインタフェース型の引数としてその場で生成したインスタンスをインタフェース型にキャストしないでそのまま渡すとリークする
Dalija PrasnikarさんのDelphi Event-based and Asynchronous Programmingをパラ見していて引っかかったのですが、タイトルを見ても何をいっているのかわからないと思うので、まずコードを。
これは、インタフェース型の引数がconst修飾されているとメソッド内部で仮引数が変更されないことが保証されているため、仮引数にコピーしたことによる参照カウントの管理を行わない最適化が行われるのに対して、前者のコードでは呼び出し元で生成したインスタンスが(インタフェース型ではなく)クラス型としてしか管理されていないため、やはり参照カウントの管理を受けずに、リークしてしまう、ということのようです。しかし後者ではas IFooとキャストしたことでIFoo型の暗黙のローカル変数が用意され、これによって参照カウントによって正常に解放されます。
メソッド内部で仮引数を別のインタフェース型の変数やフィールドにコピーすると参照カウントの管理が行われて適切に解放が行われますが、これは実装に依存しますし、また引数をconst修飾していなければ大丈夫ですが、既存の実装の変更が必要になる、ということが問題になります。
このためconst修飾されたインタフェース型の引数としてその場で生成したインスタンスを渡す場合はインタフェース型にキャストするか、あるいは
元ねたはもちろんDalija PrasnikarさんのDelphi Event-based and Asynchronous Programmingの"13.4 In-place construction in a const parameter"。
type
IFoo = interface
procedure FooBar;
end;
TFoo = class(TInterfacedObject,IFoo)
public
procedure FooBar;
end;
TBar = class(TObject)
public
procedure Baz(const AFoo: IFoo);
end;
procedure TFoo.FooBar;
begin
// Do something.
end;
procedure TBar.Baz(const AFoo: IFoo);
begin
AFoo.FooBar;
end;
インタフェースとしてIFooと、その実装としてクラスTFooを用意し、クラスTBarにはconst修飾されたIFooを渡すBazというメソッドがあります。ここでvar
Bar: TBar;
begin
Bar := TBar.Create;
Bar.Baz(TFoo.Create);
Bar.Free;
end;
とTBar.BazにTFoo.Createで生成したインスタンスを直接渡すと、TFooはIFooとしての参照カウントの制御を受けず、リークしてしまいます。一方でvar
Bar: TBar;
begin
Bar := TBar.Create;
Bar.Baz(TFoo.Create as IFoo);
Bar.Free;
end;
とIFooにキャストしたものを渡すとリークしなくなります。これは、インタフェース型の引数がconst修飾されているとメソッド内部で仮引数が変更されないことが保証されているため、仮引数にコピーしたことによる参照カウントの管理を行わない最適化が行われるのに対して、前者のコードでは呼び出し元で生成したインスタンスが(インタフェース型ではなく)クラス型としてしか管理されていないため、やはり参照カウントの管理を受けずに、リークしてしまう、ということのようです。しかし後者ではas IFooとキャストしたことでIFoo型の暗黙のローカル変数が用意され、これによって参照カウントによって正常に解放されます。
メソッド内部で仮引数を別のインタフェース型の変数やフィールドにコピーすると参照カウントの管理が行われて適切に解放が行われますが、これは実装に依存しますし、また引数をconst修飾していなければ大丈夫ですが、既存の実装の変更が必要になる、ということが問題になります。
このためconst修飾されたインタフェース型の引数としてその場で生成したインスタンスを渡す場合はインタフェース型にキャストするか、あるいは
type
TFoo = class(TInterfacedObject,IFoo)
public
class function CreateAsIntf: IFoo;
procedure FooBar;
end;
class function TFoo.CreateAsIntf: IFoo;
begin
Result := TFoo.Create;
end;
var
Bar: TBar;
begin
Bar := TBar.Create;
Bar.Baz(TFoo.CreateAsIntf);
Bar.Free;
end;
このように生成したインスタンスをインタフェースとして返すようなメソッドを用意して、そちらを経由するか、ということになります。元ねたはもちろんDalija PrasnikarさんのDelphi Event-based and Asynchronous Programmingの"13.4 In-place construction in a const parameter"。
2021年3月1日
2021/03開催のセミナー
- Web Seminar
- 2021/03/19 17:00-18:00(JST) エンバカデロ・デベロッパーTV「帰ってきたデベロッパーTV」
- Live Seminar
- Community Event
2021年2月26日
2021年2月25日
RAD Studio/Delphi/C++Builder 10.4 Sydney Release 2 (10.4.2)
RAD Studio/Delphi/C++Builder 10.4 SydneyのRelease 2 (10.4.2)がリリースされています。インストールには有効なUpdate Subscriptionが必要です。Registered Products Portalからダウンロードできます。
ISO for RAD Studio, Delphi, C++Builder 10.4.2
Web Installer for RAD Studio, Delphi, C++Builder 10.4.2
10.4 Sydney - Release 2 (en)
RAD Studio 10.4.2 における新機能と修正された顧客から報告された問題 (en)
List of publicly reported bugs fixed in 10.4.2
RAD Studio 10.4.2 Sydney Release 2の提供開始を発表 (en) RAD Studio 10.4の新機能 (en)
RAD Studio 10.4.2で提供される2つの新しいVCLコントロール RAD Studio 10.4.2で提供される2つの新しいVCLコントロール (en)
RAD Studio 10.4.2で新しく導入されたインストールプロセスの自動化を容易にするサイレントインストーラ (docwiki(ja), en)
RAD Studio 10.4.2の新機能: Windowsストアのパッケージングをより簡単にするMSIXのサポート (docwiki(ja))
C++Builder 10.4.2の改良点: Split DWARFによるリンカのメモリ使用量の削減 (docwiki(ja))
Delphi 10.4.2 コンパイラ速度の改善 (en)
RAD Studio 10.4.2: IDEの機能改善
C++Builder 10.4.2のオープンソースC++ライブラリ (en)
C++Builder 10.4.2での堅牢な例外処理 (en)
リンカの支援:C++Builder 10.4.2でのDWARFとリンカのメモリ使用量の分割 (docwiki(ja), en)
RAD Studio 10.4/10.4.1からGetItを利用して10.4.2をダウンロードし、インストールする方法 (en)
Delphi 10.4.2におけるCode Insightの改善 (en)
ISO for RAD Studio, Delphi, C++Builder 10.4.2
Web Installer for RAD Studio, Delphi, C++Builder 10.4.2
10.4 Sydney - Release 2 (en)
RAD Studio 10.4.2 における新機能と修正された顧客から報告された問題 (en)
List of publicly reported bugs fixed in 10.4.2
RAD Studio 10.4.2 Sydney Release 2の提供開始を発表 (en) RAD Studio 10.4の新機能 (en)
RAD Studio 10.4.2で提供される2つの新しいVCLコントロール RAD Studio 10.4.2で提供される2つの新しいVCLコントロール (en)
RAD Studio 10.4.2で新しく導入されたインストールプロセスの自動化を容易にするサイレントインストーラ (docwiki(ja), en)
RAD Studio 10.4.2の新機能: Windowsストアのパッケージングをより簡単にするMSIXのサポート (docwiki(ja))
C++Builder 10.4.2の改良点: Split DWARFによるリンカのメモリ使用量の削減 (docwiki(ja))
Delphi 10.4.2 コンパイラ速度の改善 (en)
RAD Studio 10.4.2: IDEの機能改善
C++Builder 10.4.2のオープンソースC++ライブラリ (en)
C++Builder 10.4.2での堅牢な例外処理 (en)
リンカの支援:C++Builder 10.4.2でのDWARFとリンカのメモリ使用量の分割 (docwiki(ja), en)
RAD Studio 10.4/10.4.1からGetItを利用して10.4.2をダウンロードし、インストールする方法 (en)
Delphi 10.4.2におけるCode Insightの改善 (en)
2021年2月23日
[書籍]Delphi Event-based and Asynchronous Programming
Amazon(JP)で注文した
Delphi Event-based and Asynchronous Programming (Amazon US, Amazon JP)/Dalija Prasnikar、Neven Prasnikar Jr.著/FastSpring/ISBN 979-8705971688/4,869JPY(printed)
が配送されてきました。2021/02/21に注文して2日目の到着でした(おそらく日本国内でのprint on demandだと思われます)。
Delphi Event-based and Asynchronous Programming (Amazon US, Amazon JP)/Dalija Prasnikar、Neven Prasnikar Jr.著/FastSpring/ISBN 979-8705971688/4,869JPY(printed)
が配送されてきました。2021/02/21に注文して2日目の到着でした(おそらく日本国内でのprint on demandだと思われます)。
2021年2月10日
2021年2月8日
DDevExtensions 2.87
Andreas HausladenさんのDDevExtensionsですが、GitHubでホストされています。オリジナルのリポジトリは
ahausladen/DDevExtensions: Delphi IDE Plugin
ですが、Delphi/C++Builder 10.4 Sydneyの対応は
DelphiPraxis/DDevExtensions: Delphi IDE Plugin
こちらのフォークからリリースされています。
Release DDevExtensions v2.87 Delphi 10.4 · DelphiPraxis/DDevExtensions
ahausladen/DDevExtensions: Delphi IDE Plugin
ですが、Delphi/C++Builder 10.4 Sydneyの対応は
DelphiPraxis/DDevExtensions: Delphi IDE Plugin
こちらのフォークからリリースされています。
Release DDevExtensions v2.87 Delphi 10.4 · DelphiPraxis/DDevExtensions
2021年2月1日
登録:
投稿 (Atom)