RAD Studio 10 Seattle Update 1のHotfixがリリースされています。RAD Studio/Delphi/C++Builder 10 SeattleのUpdate 1適用後のVCL AppAnalyticsアプリケーションでサーバとの接続の問題を修正するものです。
30457 10 Seattle Update 1 VCL AppAnalytics Hotfix
2016/02/17追記: 2016/02/16付で更新されています。Pro SKU適用時の問題を解決することのことです。
10 Seattle アップデートサブスクリプション加入ユーザー向け「10 Seattle Update 1 VCL AppAnalytics Hotfix」の更新
2015年12月30日
2015年12月16日
RAD Studio/C++Builder 10 Seattle Hotfix for iOS 9.2
RAD Studio 10 SeattleのHotfixがリリースされています。RAD Studio/C++Builder 10 SeattleでターゲットがiOS 9.2のときにコンパイルエラーが発生する不具合を修正するものです。
30456 10 Seattle iOS 9.2 C++ Hotfix - December 2015
Team Japan » 10 Seattle 向け「10 Seattle iOS 9.2 C++ Hotfix - December 2015」
明示はされていませんが、RTM、Update 1のどちらにも適用可能と思われます。またアップデートサブスクリプションの加入とは関係なくダウンロードできます。
30456 10 Seattle iOS 9.2 C++ Hotfix - December 2015
Team Japan » 10 Seattle 向け「10 Seattle iOS 9.2 C++ Hotfix - December 2015」
明示はされていませんが、RTM、Update 1のどちらにも適用可能と思われます。またアップデートサブスクリプションの加入とは関係なくダウンロードできます。
2015年12月14日
要素数が256を超える集合型を作る
このアーティクルはDelphi Advent Calendar 2015の14日目の記事です(3年ぶり3回目)。
Delphiの特徴的な型として集合型というものがあります。これは基底型となる列挙型、部分範囲型の組み合わせを保持できるというもので、C言語のビットフィールドに相当するものですが、各種演算子などが用意されており、非常に便利な言語機能です。しかし集合型にはその基底型の要素数が256以下、正確には順序値として0から255まで、という制約があります。しかし状況によっては256要素を超えるような、あるいは基底型で負値となるものを含むような集合型が欲しいということがあります。そこで既存の集合型になるべく近い形で実装してみることにします。ただしDelphiのジェネリックスはC++のテンプレートとは実装が異なり文法的制約が厳しい(というか値型にはほぼ使えない)ため、ジェネリックスによる汎用の実装ではなく個別の実装になってしまいます。また本来の集合型と同様に使えるよう、参照型(クラスによる実装)ではなく値型である高度なレコード型による実装とします。
まず基底型となる列挙型を定義します。
次に基底型に対応する要素を追加、削除するメソッド(Include、Exclude)です。単独の要素、複数の要素(array of)のどちらにも対応します。
次は基底型の要素が含まれているかどうかを調べるInメソッドです。Inは予約語のため"&"で修飾します。
あとは何らかの形で文字列化できないと不便なので、16進文字列化するToStringと16進文字列からレコード型に値を入れるParseを用意します。
必要な処理はこれで概ね揃いましたが、まだ既存の集合型と同じように使う、というわけにはいきません。そこで演算子オーバロードを用意します。集合型に対応する演算子には"+"(和集合)、"-"(差集合)、"*"(積集合)、"<="(サブセット)。">="(スーパーセット)、"="(等しい)、"<>"(等しくない)、"in"(メンバかどうか)の8つがあります。まず基底型の配列からの暗黙的な型キャストを行うImplicitと、"+"(class operator Add)、"-"(class operator Subtract)、"*"(class operator Multiply)の3つの演算子オーバロードです。
次に"<="(class operator LessThanOrEqual)。">="(class operator GreaterThanOrEqual)、"="(class operator Equal)、"<>"(class operator NotEqual)、"in"(class operator In)です。
これでTFooSetに対する演算子も一通り揃いました。残るはfor-inループ構造への対応です。必要なものはfor 文を使用するコンテナの繰り返しにあるように、Booleanを返し次の値を指し示すMoveNextメソッドとコレクションに含まれる値を返すCurrentプロパティとを持つようなクラス、インタフェース、レコードのいずれかを返すGetEnumeratorメソッド、ということになります。ここではネストした形でクラスを定義します。
Delphiの特徴的な型として集合型というものがあります。これは基底型となる列挙型、部分範囲型の組み合わせを保持できるというもので、C言語のビットフィールドに相当するものですが、各種演算子などが用意されており、非常に便利な言語機能です。しかし集合型にはその基底型の要素数が256以下、正確には順序値として0から255まで、という制約があります。しかし状況によっては256要素を超えるような、あるいは基底型で負値となるものを含むような集合型が欲しいということがあります。そこで既存の集合型になるべく近い形で実装してみることにします。ただしDelphiのジェネリックスはC++のテンプレートとは実装が異なり文法的制約が厳しい(というか値型にはほぼ使えない)ため、ジェネリックスによる汎用の実装ではなく個別の実装になってしまいます。また本来の集合型と同様に使えるよう、参照型(クラスによる実装)ではなく値型である高度なレコード型による実装とします。
まず基底型となる列挙型を定義します。
type
TFoo = (Foo0 = -1,
Foo1,
Foo2,
Foo3,
Foo4,
Foo5,
FooMax = 256);
順序値が-1から256なのでこれを基底型とする集合型を定義するとtype
TFooSet = set of TFoo; // Error: E2028 Sets may have at most 256 elements
(当然ですが)エラーになります。では代替となる高度なレコード型を定義していきます。const
BYTE_BIT = 8; // Number of bits in byte
type
TFooSet = record
private
FData: array [0..((Ord(High(TFoo)) - Ord(Low(TFoo)) + 1 + (BYTE_BIT - 1)) div BYTE_BIT) - 1] of Byte;
public
procedure Empty;
function IsEmpty: Boolean;
end;
procedure TFooSet.Empty;
begin
FillChar(FData[0],SizeOf(FData),0);
end;
function TFooSet.IsEmpty: Boolean;
var
Offset: Integer;
begin
Result := False;
for Offset := Low(FData) to High(FData) do
begin
if FData[Offset] <> 0 then
begin
Result := True;
Exit;
end;
end;
end;
FDataは基底型に対応したビット列を実際に格納する領域で、Emptyはその領域を0クリアするメソッド、IsEmptyはビット列が全て0となっているかどうかをチェックするメソッドです。次に基底型に対応する要素を追加、削除するメソッド(Include、Exclude)です。単独の要素、複数の要素(array of)のどちらにも対応します。
type
TFooSet = record
private
...
class procedure CalcOffsets(Value: TFoo; var AOffset: Integer; var ABit: Byte); static;
public
...
procedure Include(Value: TFoo); overload;
procedure Include(const Values: array of TFoo); overload;
procedure Exclude(Value: TFoo); overload;
procedure Exclude(const Values: array of TFoo); overload;
end;
procedure TFooSet.Include(Value: TFoo);
var
Offset: Integer;
Bit: Byte;
begin
CalcOffsets(Value,Offset,Bit);
FData[Offset] := FData[Offset] or Bit;
end;
procedure TFooSet.Include(const Values: array of TFoo);
var
Value: TFoo;
begin
if Length(Values) > 0 then
begin
for Value in Values do
begin
Include(Value);
end;
end;
end;
procedure TFooSet.Exclude(Value: TFoo);
var
Offset: Integer;
Bit: Byte;
begin
CalcOffsets(Value,Offset,Bit);
FData[Offset] := FData[Offset] and (not Bit);
end;
procedure TFooSet.Exclude(const Values: array of TFoo);
var
Value: TFoo;
begin
for Value in Values do
begin
Exclude(Value);
end;
end;
class procedure TFooSet.CalcOffsets(Value: TFoo; var AOffset: Integer; var ABit: Byte);
var
RelPos: Integer;
begin
RelPos := Ord(Value) - Ord(Low(TFoo));
AOffset := RelPos div BYTE_BIT;
ABit := 1 shl (RelPos mod BYTE_BIT);
end;
CalcOffsetsは基底型の要素がどのビット位置に割り当てられているのかを計算します。次は基底型の要素が含まれているかどうかを調べるInメソッドです。Inは予約語のため"&"で修飾します。
type
TFooSet = record
...
public
...
function &In(Value: TFoo): Boolean;
end;
function TFooSet.&In(Value: TFoo): Boolean;
var
Offset: Integer;
Bit: Byte;
begin
CalcOffsets(Value,Offset,Bit);
Result := (FData[Offset] and Bit) <> 0;
end;
あとは何らかの形で文字列化できないと不便なので、16進文字列化するToStringと16進文字列からレコード型に値を入れるParseを用意します。
type
TFooSet = record
...
public
...
function ToString(ZeroSuppression: Boolean = True): String;
class function Parse(const Value: String): TFooSet; static;
end;
function TFooSet.ToString(ZeroSuppression: Boolean): String;
var
Index: Integer;
Len: Integer;
Offset: Integer;
begin
Result := '';
for Offset := Low(FData) to High(FData) do
begin
Result := IntToHex(FData[Offset],2) + Result;
end;
if ZeroSuppression = True then
begin
Index := 1;
Len := Length(Result);
while (Index < Len) and (Result[Index] = '0') do
begin
Index := Index + 1;
end;
if Index > 1 then
begin
Delete(Result,1,Index - 1);
end;
end;
end;
class function TFooSet.Parse(const Value: String): TFooSet;
var
Offset: Integer;
S: String;
begin
Result.Clear;
S := StringOfChar('0',(SizeOf(Result.FData) * 2) - Length(Value)) + Value;
for Offset := Low(Result.FData) to High(Result.FData) do
begin
Result.FData[Offset] := StrToInt('$' + Copy(S,(SizeOf(Result.FData) * 2) - (Offset * 2) - 1,2));
end;
end;
必要な処理はこれで概ね揃いましたが、まだ既存の集合型と同じように使う、というわけにはいきません。そこで演算子オーバロードを用意します。集合型に対応する演算子には"+"(和集合)、"-"(差集合)、"*"(積集合)、"<="(サブセット)。">="(スーパーセット)、"="(等しい)、"<>"(等しくない)、"in"(メンバかどうか)の8つがあります。まず基底型の配列からの暗黙的な型キャストを行うImplicitと、"+"(class operator Add)、"-"(class operator Subtract)、"*"(class operator Multiply)の3つの演算子オーバロードです。
type
TFooSet = record
...
public
...
{$IF CompilerVersion>=24.00}
class operator Implicit(const Values: array of TFoo): TFooSet;
{$IFEND}
class operator Add(const lvalue: TFooSet; const rvalue: TFooSet): TFooSet; overload;
{$IF CompilerVersion>=28.00}
class operator Add(const lvalue: TFooSet; const rvalue: array of TFoo): TFooSet; overload;
{$IFEND}
class operator Subtract(const lvalue: TFooSet; const rvalue: TFooSet): TFooSet; overload;
{$IF CompilerVersion>=28.00}
class operator Subtract(const lvalue: TFooSet; const rvalue: array of TFoo): TFooSet; overload;
{$IFEND}
class operator Multiply(const lvalue: TFooSet; const rvalue: TFooSet): TFooSet; overload;
{$IF CompilerVersion>=28.00}
class operator Multiply(const lvalue: TFooSet; const rvalue: array of TFoo): TFooSet; overload;
{$IFEND}
end;
{$IF CompilerVersion>=24.00}
class operator TFooSet.Implicit(const Values: array of TFoo): TFooSet;
begin
Result.Clear;
Result.Include(Values);
end;
{$IFEND}
class operator TFooSet.Add(const lvalue: TFooSet; const rvalue: TFooSet): TFooSet;
var
Offset: Integer;
begin
Result.Clear;
for Offset := Low(Result.FData) to High(Result.FData) do
begin
Result.FData[Offset] := lvalue.FData[Offset] or rvalue.FData[Offset];
end;
end;
{$IF CompilerVersion>=28.00}
class operator TFooSet.Add(const lvalue: TFooSet; const rvalue: array of TFoo): TFooSet;
var
Value: TFoo;
begin
Result := lvalue;
for Value in rvalue do
begin
Result.Include(Value);
end;
end;
{$IFEND}
class operator TFooSet.Subtract(const lvalue: TFooSet; const rvalue: TFooSet): TFooSet;
var
Offset: Integer;
begin
Result.Clear;
for Offset := Low(Result.FData) to High(Result.FData) do
begin
Result.FData[Offset] := lvalue.FData[Offset] and (not rvalue.FData[Offset]);
end;
end;
{$IF CompilerVersion>=28.00}
class operator TFooSet.Subtract(const lvalue: TFooSet; const rvalue: array of TFoo): TFooSet;
var
Value: TFoo;
begin
Result := lvalue;
for Value in rvalue do
begin
Result.Exclude(Value);
end;
end;
{$IFEND}
class operator TFooSet.Multiply(const lvalue: TFooSet; const rvalue: TFooSet): TFooSet;
var
Offset: Integer;
begin
Result.Clear;
for Offset := Low(Result.FData) to High(Result.FData) do
begin
Result.FData[Offset] := lvalue.FData[Offset] and rvalue.FData[Offset];
end;
end;
{$IF CompilerVersion>=28.00}
class operator TFooSet.Multiply(const lvalue: TFooSet; const rvalue: array of TFoo): TFooSet;
begin
Result := lvalue * TFooSet(rvalue);
end;
{$IFEND}
ここで明示的な型キャストを行うExplicitを用意しなかったのは、"TFooSet([Foo0,Foo2])"の"[Foo0,Foo2]"の部分がarray of TFooではなくset of TFooと解釈されてしまいコンパイルエラー(E1012)となる問題を解決できなかったためです。また同様の理由からImplicitはXE3以降、Add/Subtract/Multiplyの2番目のoverload(右項がarray of TFoo)はXE7以降のみ有効です。次に"<="(class operator LessThanOrEqual)。">="(class operator GreaterThanOrEqual)、"="(class operator Equal)、"<>"(class operator NotEqual)、"in"(class operator In)です。
type
TFooSet = record
...
public
...
class operator LessThanOrEqual(const lvalue: TFooSet; const rvalue: TFooSet): Boolean; overload;
class operator GreaterThanOrEqual(const lvalue: TFooSet; const rvalue: TFooSet): Boolean; overload;
class operator Equal(const lvalue: TFooSet; const rvalue: TFooSet): Boolean; overload;
class operator NotEqual(const lvalue: TFooSet; const rvalue: TFooSet): Boolean; overload;
class operator In(lvalue: TFoo; const rvalue: TFooSet): Boolean;
end;
class operator TFooSet.LessThanOrEqual(const lvalue: TFooSet; const rvalue: TFooSet): Boolean;
var
Offset: Integer;
begin
for Offset := Low(lvalue.FData) to High(lvalue.FData) do
begin
if (lvalue.FData[Offset] and rvalue.FData[Offset]) <> lvalue.FData[Offset] then
begin
Result := False;
Exit;
end;
end;
Result := True;
end;
class operator TFooSet.GreaterThanOrEqual(const lvalue: TFooSet; const rvalue: TFooSet): Boolean;
var
Offset: Integer;
begin
for Offset := Low(lvalue.FData) to High(lvalue.FData) do
begin
if (lvalue.FData[Offset] and rvalue.FData[Offset]) <> rvalue.FData[Offset] then
begin
Result := False;
Exit;
end;
end;
Result := True;
end;
class operator TFooSet.Equal(const lvalue: TFooSet; const rvalue: TFooSet): Boolean;
var
Offset: Integer;
begin
for Offset := Low(lvalue.FData) to High(lvalue.FData) do
begin
if (lvalue.FData[Offset] xor rvalue.FData[Offset]) <> 0 then
begin
Result := False;
Exit;
end;
end;
Result := True;
end;
class operator TFooSet.NotEqual(const lvalue: TFooSet; const rvalue: TFooSet): Boolean;
begin
Result := not (lvalue = rvalue);
end;
class operator TFooSet.In(lvalue: TFoo; const rvalue: TFooSet): Boolean;
begin
Result := rvalue.&In(lvalue);
end;
ここでclass operator LessThanOrEqual/GreaterThanOrEqual/Equal/NotEqualにAdd/Subtract/Multiplyのようにarray of TFooを第2パラメータ(右項)とするものを用意しなかったのもExplicitと同様の理由です。これでTFooSetに対する演算子も一通り揃いました。残るはfor-inループ構造への対応です。必要なものはfor 文を使用するコンテナの繰り返しにあるように、Booleanを返し次の値を指し示すMoveNextメソッドとコレクションに含まれる値を返すCurrentプロパティとを持つようなクラス、インタフェース、レコードのいずれかを返すGetEnumeratorメソッド、ということになります。ここではネストした形でクラスを定義します。
type
PFooSet = ^TFooSet;
TFooSet = record
private
type
TEnumerator = class(TObject)
private
FContainer: PFooSet;
FIndex: Integer;
function GetCurrent: TFoo;
public
constructor Create(Container: PFooSet);
function MoveNext: Boolean;
property Current: TFoo
read GetCurrent;
end;
public
...
function GetEnumerator: TEnumerator;
end;
function TFooSet.GetEnumerator: TEnumerator;
begin
Result := TEnumerator.Create(@Self);
end;
constructor TFooSet.TEnumerator.Create(Container: PFooSet);
begin
inherited Create;
FIndex := Ord(Low(TFoo)) - 1;
FContainer := Container;
end;
function TFooSet.TEnumerator.MoveNext: Boolean;
begin
while (FIndex < Ord(High(TFoo))) do
begin
FIndex := FIndex + 1;
if TFoo(FIndex) in FContainer^ then
begin
Result := True;
Exit;
end;
end;
Result := False;
end;
function TFooSet.TEnumerator.GetCurrent: TFoo;
begin
Result := TFoo(FIndex);
end;
これでTFooSetに対して通常の集合型のように"+"、"-"、"*"のような演算や"="、"<>"のような比較、for..inによる要素の取り出しを行うことができるようになりました。
同様にすることで部分範囲型で値が0..255に収まらないようなものを基底型とするような集合型も実装することができます。
→要素数が256を超える列挙型の集合型(Gist)
→値範囲が0..255に収まらない部分範囲型の集合型(Gist)
2015年12月10日
第31回エンバカデロ・デベロッパーキャンプ
本日10:00から第31回エンバカデロ・デベロッパーキャンプが新宿NSビルのスカイカンファレンスで行われます。セッション資料は
ダウンロード | デベロッパーキャンプ
からダウンロードできます。またUStreamで全セッションのライブ中継も行われます。
ダウンロード | デベロッパーキャンプ
からダウンロードできます。またUStreamで全セッションのライブ中継も行われます。
- 【T1】テクニカルセッション「VCL ユーザーのためのFireMonkey入門」
- 【G2】ジェネラルセッション「Bigger、Stronger、Focused - エンバカデロ+アイデラで推進される開発者へのコミットメント」
- 【G3】プロダクトショーケース「エンバカデロの開発ツール最前線」
- 【T4】テクニカルケーススタディ「『カラオケの鉄人』店舗で、クーポン作成 - DTP並みの印刷システム実現の手法」
- 【T5】Delphi/C++テクニカルセッション「リモートクライアントから帳票出力 - FastReportサーバーアプリ実装法」
- 【T6】テクニカルケーススタディ「iPod Touchによる工場内のモバイル化 - 鋼材品質証明と基幹システム連携」
- 【G7】ライトニングトーク「共有!みんなの開発事例、開発経験、テクニック」
2015年12月9日
2015年12月4日
RAD Studio 10 Seattle Update 1 Hotfix
RAD Studio 10 Seattle Update 1のHotfixが2件リリースされています。1件目はIDEが使っているModernThemeのメモリ/GDIリソースリーク(RSP-13023)を修正するものです
30453 10 Seattle Update 1 ModernTheme Hotfix - December 2015
2件目はC++/Clangのローカライズ時の不具合(詳細不明)を修正するものです。
30454 10 Seattle Update 1 C++ Clang FR/DE/JA Hotfix
Team Japan » 10 Seattle アップデートサブスクリプション加入ユーザー向け「10 Seattle Update 1 C++ Clang FR/DE/JA Hotfix」
2 Hot-Fixes for 10 Seattle Update 1
30453 10 Seattle Update 1 ModernTheme Hotfix - December 2015
2件目はC++/Clangのローカライズ時の不具合(詳細不明)を修正するものです。
30454 10 Seattle Update 1 C++ Clang FR/DE/JA Hotfix
Team Japan » 10 Seattle アップデートサブスクリプション加入ユーザー向け「10 Seattle Update 1 C++ Clang FR/DE/JA Hotfix」
2 Hot-Fixes for 10 Seattle Update 1
2015年12月1日
2015/12開催のセミナー
- Web Seminar
- Live Seminar
- 2015/12/09 19:00-21:00(JST) MEET IDERA TOKYO 2015
- 2015/12/10 10:00-18:00(JST) 第31回 エンバカデロ・デベロッパーキャンプ
- 2015/12/16 15:30-17:00(JST) 技術研修セミナー「旧Delphi/C++アプリケーションを最新に!移行のテクニック」
2015年11月29日
2015年11月20日
第31回エンバカデロ・デベロッパーキャンプ開催決定
IderaによるEmbarcadero Technologiesの買収があった影響からか開催が延びていた第31回エンバカデロ・デベロッパーキャンプですが、Ideraから送り込まれた新しいジェネラルマネージャのAtanas Popovさんの来日にあわせて2015年12月10日に開催されることになりました。
第31回 エンバカデロ・デベロッパーキャンプ
第31回 エンバカデロ・デベロッパーキャンプ
InterBase XE7 Update 5
InterBase XE7 Update 5がリリースされています。バージョンは12.0.5.366となっています。
30433 InterBase XE7 Update 5 (12.0.5.366) for Windows
30434 InterBase XE7 Update 5 (12.0.5.366) for Linux
InterBase XE7 Update 5 Readme - InterBase (en)
Team Japan » InterBase XE7 Update 5 が公開されました
30433 InterBase XE7 Update 5 (12.0.5.366) for Windows
30434 InterBase XE7 Update 5 (12.0.5.366) for Linux
InterBase XE7 Update 5 Readme - InterBase (en)
Team Japan » InterBase XE7 Update 5 が公開されました
2015年11月19日
RAD Studio/Delphi/C++Builder 10 Seattle Update 1
RAD Studio/Delphi/C++Builder 10 SeattleのSubcription Update 1がリリースされています。
30445 Delphi and C++Builder 10 Seattle ISO (includes Update 1)
Subscription Update 1 - RAD Studio
RAD Studio 10 Seattle における不具合修正リスト (en)
RAD Studio 10 Seattle Update 1 公開
Team Japan » サブスクリプション加入ユーザー向け「10 Seattle Subscription Update 1」
Update 1の適用は(上書きではなく)アンインストール後の再インストールとなります。またUpdate Subscription加入者限定となります。
30445 Delphi and C++Builder 10 Seattle ISO (includes Update 1)
Subscription Update 1 - RAD Studio
RAD Studio 10 Seattle における不具合修正リスト (en)
RAD Studio 10 Seattle Update 1 公開
Team Japan » サブスクリプション加入ユーザー向け「10 Seattle Subscription Update 1」
Update 1の適用は(上書きではなく)アンインストール後の再インストールとなります。またUpdate Subscription加入者限定となります。
2015年11月11日
2015年11月10日
Firebird 3.0 Release Candidate 1
Firebird 3.0 Release Candidate 1がリリースされています。
Firebird: Firebird 3.0 Release Candidate 1
Firebird 3.0 Release Notes
Firebird: Firebird 3.0 Release Candidate 1
Firebird 3.0 Release Notes
2015年11月1日
IDE Fix Pack 5.94
Andreas HausladenさんのIDE Fix PackがアップデートされてVersion 5.94となっています。RAD Studio/Delphi/C++Builder 10 Seattle対応といくつかの新しいパッチが追加されています。
IDE Fix Pack 5.94 released – RAD Studio 10 Seattle support | Andy's Blog and Tools
2015/11/02追記: SSE4.2非サポートのCPUの対応に不具合があり差し替えになっています。ご注意ください。
IDE Fix Pack 5.94 released – RAD Studio 10 Seattle support | Andy's Blog and Tools
2015/11/02追記: SSE4.2非サポートのCPUの対応に不具合があり差し替えになっています。ご注意ください。
Category:
Add-ons,
Delphi 10 Seattle,
Delphi 2009,
Delphi 2010,
Delphi XE,
Delphi XE2,
Delphi XE3,
Delphi XE4,
Delphi XE5,
Delphi XE6,
Delphi XE7,
Delphi XE8,
Updates
at
20:24:00
0
Comments
2015/11開催のセミナー
- Web Seminar
- 2015/11/06 10:30-11:10(JST) 「最新デバイス技術を活かすソフトウェア構築のキモ」第1回「多様なシステム形態を包含するアーキテクチャ」
- 2015/11/11 10:30-11:10(JST) 「最新デバイス技術を活かすソフトウェア構築のキモ」第2回「変化するデータ構造を捉え一貫性を維持する」
- 2015/11/13 10:30-11:10(JST) 「最新デバイス技術を活かすソフトウェア構築のキモ」第3回「マルチデバイスの多様性に立ち向かう効率化と最適化」
- 2015/11/25 17:00-18:00(JST) デベロッパーTV「エンバカデロ・デベロッパーキャンプ緊急開催!」
- Live Seminar
- 2015/11/18 15:30-17:00(JST) 「RAD Studioで始めるマルチデバイス開発ワークショップ」
- 2015/11/26 15:30-17:00(JST) 技術研修セミナー「旧Delphi/C++アプリケーションを最新に!移行のテクニック」
2015年10月29日
RAD Studio/Delphi/C++Builder XE6 October 2015 Update
アップデートサブスクリプションの"継続的なメンテナンス"第2弾、RAD Studio XE6のOctober 2015 Updateがリリースされています。Readme.txtにあるように、あらかじめXE6のライセンスマネージャでXE8のライセンスを登録してからインストールする必要があります。またCC上でサイズが0バイトと表示されていますが、実際は366MB(384,811,496bytes)あります。
30430 October 2015 XE6 Update Subscription Update
以下の修正がバックポートされているとのことです。
30430 October 2015 XE6 Update Subscription Update
以下の修正がバックポートされているとのことです。
- 126004: Delphi and C++ Builder VCL library Buffer Overflow
- 122930: TOSVersion.Build from System.SysUtils returns 0 with Windows 8.1
- 124387: DataSnap lightweight callbacks cause memory leaks on server
- 119779: TJSONString is not JSON compliant. All TJSONObject produce not parsable JSON
- 116567: TOpenDialog does not respects Filter property
- 127152: [FireDAC] Memory leak of TMemoryStream with TFDMemTable
- 126728: [FireDAC] AccessViolation If removed a TFDTableAdapter component that is connected to TFDMemTable at Design time
- 124397: Various memory leaks in TTextLayout
- 124593: Memory leak in FireMonkey SelectDirectory function
2015年10月23日
RAD Studio/Delphi 10 Seattle Windows/x64 Compiler Hotfix (Beta)
RAD Studio/Delphi 10 SeattleのDelphi/Windows/x64コンパイラのコンパイル結果が決定論的ではない([RSP-12512] DCC64 codegen isn't deterministic (regression))という不具合が報告されており、これを修正するHotfix(Beta)がリリースされています。
30428 Delphi Win64 Compiler hotfix for 10 Seattle Professional (Beta)
30429 Delphi Win64 Compiler hotfix for 10 Seattle Enterprise (Beta)
10 Seattle向けDelphi Win64コンパイラホットフィックス
最終的な修正は次のアップデート(Update 1)に含まれる予定とのことです。
30428 Delphi Win64 Compiler hotfix for 10 Seattle Professional (Beta)
30429 Delphi Win64 Compiler hotfix for 10 Seattle Enterprise (Beta)
10 Seattle向けDelphi Win64コンパイラホットフィックス
最終的な修正は次のアップデート(Update 1)に含まれる予定とのことです。
2015年10月21日
InterBase XE3 Update 4 Hotfix 4
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)で修正された不具合について
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月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=
2015年8月12日
2015年8月5日
IDE Fix Pack 4.4 for Delphi 2007 Windows 10 Edition
Andreas HausladenさんのIDE Fix Pack for Delphi 2007のWindows 10対応版がリリースされています。Windows 7およびそれ以前では4.4を、Windows 8/8.1では4.3を、Windows 10では4.4 Windows 10 Editionを、というようにWindowsのバージョンによって対応が分かれているので注意が必要です。
IDE Fix Pack 4.4 for Delphi 2007 – Windows 10 Edition | Andy's Blog and Tools
IDE Fix Pack 4.4 for Delphi 2007 – Windows 10 Edition | Andy's Blog and Tools
2015年8月4日
IDE Fix Pack 5.93
Andreas HausladenさんのIDE Fix PackがアップデートされてVersion 5.93となっています。今回はWindows 10対応(Windows 10が関数アライメントのパディングにNOPではなくINT3を使うことに対応)だけとのことです。
IDE Fix Pack 5.93 – Windows 10 support | Andy's Blog and Tools
IDE Fix Pack 5.93 – Windows 10 support | Andy's Blog and Tools
Category:
Add-ons,
Delphi 2009,
Delphi 2010,
Delphi XE,
Delphi XE2,
Delphi XE3,
Delphi XE4,
Delphi XE5,
Delphi XE6,
Delphi XE7,
Delphi XE8,
Updates
at
6:25:00
0
Comments
2015年8月1日
2015/08開催のセミナー
- Web Seminar
- 2015/08/04 16:30-17:00(JST) FireDAC Webセミナー 第2回 FireDACプログラミング基礎
- 2015/08/06 15:00-15:30(JST) BeaconFence ファーストインプレッションWebセミナー
- 2015/08/11 16:30-17:00(JST) FireDAC Webセミナー 第3回 応用FireDAC
- Live Seminar
- 2015/08/05 15:30-17:00(JST) 技術研修セミナー「旧Delphi/C++アプリケーションを最新に!移行のテクニック」
- 2015/08/07 13:30-17:00(JST) 「スマホアプリ作成体験サマーキャンプ」ゲーム編
- 2015/08/20 13:30-17:00(JST) 「スマホアプリ作成体験サマーキャンプ」デバイス活用編
- 2015/08/21 15:30-17:00(JST) 「RAD Studioで始めるマルチデバイス開発ワークショップ」
2015年7月27日
2015年7月21日
InterBase XE7 Update 4
InterBase XE7 Update 4(12.0.4.357)がリリースされています。
30311 InterBase XE7 Update 4 (12.0.4.357) for Windows for English, Japanese
30316 InterBase XE7 Update 4 (12.0.4.357) for Linux for English, Japanese
30312 InterBase XE7 Server Ed., Windows/Linux (12.0.4.357, English)
30321 InterBase XE7 Server Ed., Windows/Linux (12.0.4.357, Japanese)
30066 InterBase XE7 (12.0.4.357) Developer Edition, English
30090 InterBase XE7 (12.0.4.357) Developer Edition, Japanese
30319 InterBase XE7 ToGo Edition (12.0.4.357), Win/OSX/iOS/Android
InterBase XE7 Update 4 Readme (en)
30311 InterBase XE7 Update 4 (12.0.4.357) for Windows for English, Japanese
30316 InterBase XE7 Update 4 (12.0.4.357) for Linux for English, Japanese
30312 InterBase XE7 Server Ed., Windows/Linux (12.0.4.357, English)
30321 InterBase XE7 Server Ed., Windows/Linux (12.0.4.357, Japanese)
30066 InterBase XE7 (12.0.4.357) Developer Edition, English
30090 InterBase XE7 (12.0.4.357) Developer Edition, Japanese
30319 InterBase XE7 ToGo Edition (12.0.4.357), Win/OSX/iOS/Android
InterBase XE7 Update 4 Readme (en)
2015年7月15日
2015年7月8日
7th anniversary
この1年間(2014/07/08-2015/07/07)のエントリは71で、週平均1.4弱でした。相変わらずお知らせばっかりでしたね。続いてアクセス解析の統計情報から月別ページビュー(PV)を。
2014/07: 4,460
2014/08: 4,002
2014/09: 4,259
2014/10: 4,087
2014/11: 3,752
2014/12: 3,876
2015/01: 3,500
2015/02: 3,431
2015/03: 4,314
2015/04: 4,882
2015/05: 4,209
2015/06: 4,434
2014/07-2015/06合計: 49,206
ついに50,000PV/yearを切ってしまいましたが、最近だと書籍関係のまとめが好評のようです。
最近のDelphi関係の話題といえばやはりアップデートサブスクリプションの導入でしょう。開発ツールに(売り切りではなく)いわゆるサブスクリプションモデルは適合しにくいと思うんですけれども、そのあたりは(いかにもアメリカンにアバウトな感じで)修正しながら、ということになるようです。現状のアップデートサブスクリプションモデルのもとでは、アップデートサブスクリプションに入るか、入らないのであれば使いたいバージョンの次のバージョンが出たところでアップグレードする(買ったバージョンではなく直前のバージョンを使う)、ということになるでしょうか。歪んでますねぇ。
ここのところ仕事もオーバフロー寸前のところで動いていてなかなか記事も書けないのですが、直近では久しぶりに新規の案件が入ってXE8にアップグレードしましたし、新たにDataSnapを本格的に使うので、このあたりでまたアウトプットを出していければと思っています。あとは名古屋でやるという勉強会的なイベントに行ければいいなぁ。また1年間お付き合いください。
2014/07: 4,460
2014/08: 4,002
2014/09: 4,259
2014/10: 4,087
2014/11: 3,752
2014/12: 3,876
2015/01: 3,500
2015/02: 3,431
2015/03: 4,314
2015/04: 4,882
2015/05: 4,209
2015/06: 4,434
2014/07-2015/06合計: 49,206
ついに50,000PV/yearを切ってしまいましたが、最近だと書籍関係のまとめが好評のようです。
最近のDelphi関係の話題といえばやはりアップデートサブスクリプションの導入でしょう。開発ツールに(売り切りではなく)いわゆるサブスクリプションモデルは適合しにくいと思うんですけれども、そのあたりは(いかにもアメリカンにアバウトな感じで)修正しながら、ということになるようです。現状のアップデートサブスクリプションモデルのもとでは、アップデートサブスクリプションに入るか、入らないのであれば使いたいバージョンの次のバージョンが出たところでアップグレードする(買ったバージョンではなく直前のバージョンを使う)、ということになるでしょうか。歪んでますねぇ。
ここのところ仕事もオーバフロー寸前のところで動いていてなかなか記事も書けないのですが、直近では久しぶりに新規の案件が入ってXE8にアップグレードしましたし、新たにDataSnapを本格的に使うので、このあたりでまたアウトプットを出していければと思っています。あとは名古屋でやるという勉強会的なイベントに行ければいいなぁ。また1年間お付き合いください。
2015年7月1日
2015/07開催のセミナー
- Web Seminar
- 2015/07/22 17:00-18:00(JST) デベロッパーTV「RAD Studio XE8 新機能」
- 2015/07/23 16:30-17:00(JST) FireDAC Webセミナー 第1回 はじめてのFireDAC
- Live Seminar
- 2015/07/08 15:30-17:00(JST) 「RAD Studioで始めるマルチデバイス開発ワークショップ」
- 2015/07/16 15:30-17:00(JST) 技術研修セミナー「旧Delphi/C++アプリケーションを最新に!移行のテクニック」
2015年6月28日
2015年6月24日
DataSnapサーバまとめ
DataSnapサーバを作るにあたって、ヘルプのDataSnap アプリケーションの開発あたりに載っていなかったり、載っていても気をつけたほうがいいと個人的に思ったことをまとめました(ユニットやクラス、あるいはそのリンクはDelphi XE8のものです)。
サーバメソッドでサポートされているデータ型
- DataSnapの公開サーバメソッドでデータの受け渡しに使うことができるデータ型は以下のとおり(*がついているものはドキュメントにないもの)。
- 組込型
- Boolean
- SmallInt
- LongInt *
- Integer
- Int64
- Single
- Double
- TDateTime *
- Currency *
- AnsiString
- WideString *
- String
- OleVariant *
- System.JSONユニットで定義されている型
- TJSONValueから派生した全てのクラス
- Data.DBXCommonユニットで定義されている型
- TDBXTime
- TDBXDate
- TDBXStringValue *
- TDBXWideStringValue
- TDBXAnsiStringValue
- TDBXWideCharsValue *
- TDBXAnsiCharsValue *
- TDBXUInt8Value
- TDBXInt8Value
- TDBXInt16Value
- TDBXInt32Value
- TDBXInt64Value
- TDBXSingleValue
- TDBXDoubleValue
- TDBXBcdValue
- TDBXTimeValue
- TDBXDateValue
- TDBXTimeStampValue
- TDBXBooleanValue
- TDBXReaderValue
- TDBXStreamValue
- コレクション
- TDBXReader *
- TDataSet *
- TParams *
- TStream *
- コネクション
- 組込型
- これ以外の型が含まれるメソッドはクライアント側のTSQLConnection上で"DataSnap クライアント クラスの生成"を実行してもサーバメソッドプロキシに含まれなくなるので注意が必要です。そのような型の値やクラスインスタンスをDataSnapで扱うときは組込型に置き換えたり(たとえば列挙型ならOrdで序数にしたりGetEnumNameで文字列化する、など)、マーシャリング、アンマーシャリングという仕組みを使ってJSONオブジェクト経由で受け渡す必要があります。詳細はDataSnap サーバー メソッドの公開を参照。
- DataSnapの公開サーバメソッドでデータの受け渡しに使うことができるデータ型は以下のとおり(*がついているものはドキュメントにないもの)。
クラスインスタンスのマーシャリング/アンマーシャリング
- Delphiのオブジェクト(クラスインスタンス)は、基本的に送信側でTJSONMarshalのMarshalメソッドでTJSONValueにマーシャリング(変換)したものを送信し、受信側では受信したTJSONValueをTJSONUnMarshalのUnmarshalメソッドでアンマーシャリング(逆変換)して元のクラスのインスタンスに戻します(アンマーシャリングの結果の型はTObjectなのでasで本来のクラスにキャストします)。
- クラスインスタンスのリスト(TObjectListやTObjectList<T>)はそのままではマーシャリング/アンマーシャリングできないため、
のようにそれぞれの要素をマーシャリングしたものをTJSONArrayにAddElementメソッドで追加していって、そのTJSONArrayを受け渡して、var Values: TJSONArray; Item: TFoo; List: TObjectList<TFoo>; begin ... for Item in List do begin Values.AddElement(Marshal.Marshal(Item)); end;
TJSONArrayのItems[]プロパティ(またはenumerator)で取り出したJSONValueをアンマーシャリングする、という方法が考えられます。var Values: TJSONArray; Item: TJSONValue; List: TObjectList<TFoo>; begin ... for Item in Values do begin List.Add(UnMarshal.Unmarshal(Item) as TFoo); end;
- RTL経由で適切にシリアライズできないようなクラスのメンバを扱う場合は、マーシャラ(TJSONMarshal)およびアンマーシャラ(TJSONUnMarshal)に特定の型またはメンバに対応する変換/逆変換処理をRegisterConverter、RegisterReverterで登録して処理させる、ということになります。詳細はユーザー オブジェクトのシリアル化を参照。
TJSONValueとその派生クラスについて
- DelphiでJSON形式の値を扱うときにはTJSONValueの派生クラスを使用します。
- TJSONNullはJSONのnull値に対応します。
- TJSONFalse/TJSONTrueはJSONの真偽値(false/true)に対応します。
- TJSONStringはJSONの文字列値に対応します。
- TJSONNumberはJSONの数値(整数、浮動小数点数)に対応します。
- TJSONArrayはJSONの配列("JSON形式の値"の配列)に対応します。
- TJSONObjectはJSONのオブジェクト("文字列のキーと値のペア"の順序付けされていない集合)に対応します。"文字列のキーと値のペア"はTJSONPairとして実装されています。ペアはAddPairメソッドで追加し、逆に文字列のキーからペアを取り出すにはGetメソッドを使用します。
- DelphiでJSON形式の値を扱うときにはTJSONValueの派生クラスを使用します。
サーバクラスのインスタンスのライフサイクルについて
- サーバクラスのライフサイクルは、RESTサーバではSessionかInvocation、それ以外ではSessionとするのが普通でしょう。詳細はサーバー クラス インスタンスのライフサイクルを参照。
セッションの管理について
- サーバメソッド内でセッションを取得するときはTDSSessionManager.GetThreadSessionメソッドを使用します。またセッションに関する操作にはSessionIdが必要になります。詳細はサーバー側セッション管理を参照。
- 全てのセッションに対して処理を行いたいときはTDSSessionManagerのForEachSessionメソッドを使用して、
とします。TDSSessionManager.Instance.ForEachSession( procedure (const Session: TDSSession) begin // end);
- セッションごとにデータを保持させたいときは、TDSSessionのPutObject、GetObject、HasObject、RemoveObjectの各メソッドで特定のキー(文字列)と結びつける形でTObjectのインスタンスの保持、取得、問い合わせ、削除ができます。保持させたデータはセッションが所有しており、セッションが破棄されるときに解放されます。
- セッションが生成、破棄されるごとに処理を行いたい場合はTDSSessionManagerのシングルトンインスタンスであるInstanceのAddSessionEventでイベント(イベントハンドラや無名メソッド)を登録します(RemoveSessionEventで登録を削除することもできます)。
TDSSessionManager.Instance.AddSessionEvent( procedure(Sender: TObject; const EventType: TDSSessionEventType; const Session: TDSSession) begin case EventType of SessionCreate: begin // Session is created end; SessionClose: begin // Session is closed end; end end);
重量コールバック(クライアントコールバック)の管理
- TDSCallbackTunnelManagerのAddTunnelEvent、RemoveTunnelEventメソッドでトンネルおよびコールバックの登録、解除を通知するコールバック関数を登録、解除できます。
TDSCallbackTunnelManager.Instance.AddTunnelEvent( procedure(Sender: TObject; const EventItem: TDSCallbackTunnelEventItem) begin case EventItem.EventType of TunnelCreate: begin // Tunnel is created end; TunnelClose: begin // Tunnel is closed end; TunnelClosedByServer: begin // Tunnel is closed by user end; CallbackAdded: begin // Callback is added end; CallbackRemoved: begin // Callback is removed end; end; end);
- TDSCallbackTunnelManagerのAddTunnelEvent、RemoveTunnelEventメソッドでトンネルおよびコールバックの登録、解除を通知するコールバック関数を登録、解除できます。
TCP/IP接続を監視
- TDSTCPServerTransportのOnConnect、OnDisconnectイベントでTCP/IP接続の確立と切断を監視することができます。詳細はDataSnap 用 TCP/IP 接続の監視と制御を参照。
2015年6月19日
RAD Studio/Delphi/C++Builder XE8 Update 1
RAD Studio/Delphi/C++Builder XE8のUpdate 1がリリースされています。
30278 General Update 1 for RAD Studio, Delphi, and C++Builder XE8
30282 Subscription Update 1 for RAD Studio, Delphi, and C++Builder XE8
30284 Delphi and C++Builder XE8 ISO (includes Subscription Update 1)
30304 Boost for RAD Studio & C++Builder XE8 Subscription Update 1
XE8 Update 1 のリリース ノート - RAD Studio (en)
RAD Studio XE8, Delphi XE8, C++Builder XE8 の Subscription Update 1における不具合修正リスト
Subscription Update 1 Fix List for RAD Studio XE8, Delphi XE8, and C++ Builder XE8
XE8からはUpdate Subscriptionに加入しているかどうかで受け取れるバグフィックス、アップデートが異なる、ということになりましたが、XE8 Update 1もGeneral Update 1とSubscription Update 1で内容に差があります。General Update 1には" Community toolbar"、"iOS 8 simulator fix"、"Several files missing from the initial XE8 delivery"のみが含まれ、"Favorites in welcome page"、"Fast search of Bluetooth LE devices"、"Improved robustness of IDE productivity features"、"Improvements in multi-device previews"はSubscription Update 1のみ、となっています。
2015/07/08追記: C++Builder XE8のBoost 1.39用のヘッダファイルの更新(30304)が追加されています。
30278 General Update 1 for RAD Studio, Delphi, and C++Builder XE8
30282 Subscription Update 1 for RAD Studio, Delphi, and C++Builder XE8
30284 Delphi and C++Builder XE8 ISO (includes Subscription Update 1)
30304 Boost for RAD Studio & C++Builder XE8 Subscription Update 1
XE8 Update 1 のリリース ノート - RAD Studio (en)
RAD Studio XE8, Delphi XE8, C++Builder XE8 の Subscription Update 1における不具合修正リスト
Subscription Update 1 Fix List for RAD Studio XE8, Delphi XE8, and C++ Builder XE8
XE8からはUpdate Subscriptionに加入しているかどうかで受け取れるバグフィックス、アップデートが異なる、ということになりましたが、XE8 Update 1もGeneral Update 1とSubscription Update 1で内容に差があります。General Update 1には" Community toolbar"、"iOS 8 simulator fix"、"Several files missing from the initial XE8 delivery"のみが含まれ、"Favorites in welcome page"、"Fast search of Bluetooth LE devices"、"Improved robustness of IDE productivity features"、"Improvements in multi-device previews"はSubscription Update 1のみ、となっています。
2015/07/08追記: C++Builder XE8のBoost 1.39用のヘッダファイルの更新(30304)が追加されています。
2015年6月16日
InterBase XE7 Update 3
InterBase XE7 Update 3(12.0.3.337)がリリースされています。いくつかの不具合が修正されています。またDeveloper EditionはUpdate 3適用済のものに置き換えられています。
30271 InterBase XE7 Update 3 (12.0.3.337) for Windows
30272 InterBase XE7 Update 3 (12.0.3.337) for Linux
30275 InterBase XE7 Server Ed., Windows/Linux (12.0.3.337, English)
30274 InterBase XE7 Server Ed., Windows/Linux (12.0.3.337, Japanese)
30273 InterBase XE7 ToGo Edition (12.0.3.337), Win/OSX/iOS/Android
30066 InterBase XE7 (12.0.3.337) Developer Edition, English
30090 InterBase XE7 (12.0.3.337) Developer Edition, Japanese
InterBase XE7 Update 3 Readme - InterBase (en)
30271 InterBase XE7 Update 3 (12.0.3.337) for Windows
30272 InterBase XE7 Update 3 (12.0.3.337) for Linux
30275 InterBase XE7 Server Ed., Windows/Linux (12.0.3.337, English)
30274 InterBase XE7 Server Ed., Windows/Linux (12.0.3.337, Japanese)
30273 InterBase XE7 ToGo Edition (12.0.3.337), Win/OSX/iOS/Android
30066 InterBase XE7 (12.0.3.337) Developer Edition, English
30090 InterBase XE7 (12.0.3.337) Developer Edition, Japanese
InterBase XE7 Update 3 Readme - InterBase (en)
2015年6月10日
2015年6月7日
[書籍]C#実践開発手法
紀伊國屋書店新宿本店でAdaptive Code via C# (amazon.com)の翻訳である
C#実践開発手法 (amazon)/Gary McLean Hall著/クイープ訳/日経BP/ISBN 978-4-82229-847-0/5,400円
を購入。
C#実践開発手法 (amazon)/Gary McLean Hall著/クイープ訳/日経BP/ISBN 978-4-82229-847-0/5,400円
を購入。
[書籍]改訂新版 C++ポケットリファレンス
紀伊國屋書店新宿本店でC++ポケットリファレンスのC++14対応改訂版の
改訂新版 C++ポケットリファレンス (amazon)/高橋晶、安藤敏彦、一戸優介、楠田真矢、道化師、湯朝剛介著/技術評論社/ISBN978-4-7741-7408-2/3,218円
を購入。
改訂新版 C++ポケットリファレンス (amazon)/高橋晶、安藤敏彦、一戸優介、楠田真矢、道化師、湯朝剛介著/技術評論社/ISBN978-4-7741-7408-2/3,218円
を購入。
2015年6月1日
2015/06開催のセミナー
- Web Seminar
- 2015/06/10 17:00-18:00(JST) デベロッパーTV 「第30回デベロッパーキャンプ開催レポート」
- Live Seminar
- 2015/06/09 15:30-17:00(JST) 「RAD Studioで始めるマルチデバイス開発ワークショップ」
- 2015/06/18 15:30-17:00(JST) 技術研修セミナー「旧Delphi/C++アプリケーションを最新に!移行のテクニック」
2015年5月21日
第30回エンバカデロ・デベロッパーキャンプ
本日10:00から第30回エンバカデロ・デベロッパーキャンプ・イン東京がベルサール新宿グランドコンファレンスセンターで行われます。セッション資料は
ダウンロード | デベロッパーキャンプ
からダウンロードできるようになる予定です(2015/05/21 10:00以降)。またUStreamで全セッションの中継が予定されています(CH1がG/Fセッション、CH2がEセッション)。
無事(?)終了しました。セッションスピーカのみなさん、関係者のみなさん、おつかれさまでした。
2015/05/25追記: 早くもセッションリプレイの公開が始まっています。
第30回 エンバカデロ・デベロッパーキャンプ資料ダウンロード
ダウンロード | デベロッパーキャンプ
からダウンロードできるようになる予定です(2015/05/21 10:00以降)。またUStreamで全セッションの中継が予定されています(CH1がG/Fセッション、CH2がEセッション)。
無事(?)終了しました。セッションスピーカのみなさん、関係者のみなさん、おつかれさまでした。
2015/05/25追記: 早くもセッションリプレイの公開が始まっています。
- 【G1】ケーススタディセッション ユーザーショーケース「C++Builderを用いたマルチOS対応一般コンシューマ向けスマートフォンアプリ開発事例」
- 【G2】ジェネラルセッション「IoT時代のマルチデバイス開発環境」
- 【F3】テクニカルセッション「業務システムにモバイルを!実践エンタープライズモバイル開発プロジェクト」
- 【E3】Delphi/C++テクニカルセッション「移行プロジェクトでもモバイル開発でも必須!今からでも間に合うデータモジュール活用法」
- 【F4】Delphi/C++テクニカルセッション「RAD Studio XE8 の新機能とその活用法」
- 【E4】Delphi/C++テクニカルセッション「今さら聞けない!? FireDAC入門 ~ オンメモリーデータベース編」
- 【F5】Delphi/C++テクニカルセッション「RAD Studioで始めるモバイル開発 ~ コンポーネントで簡単入門!勘所も押さえよう」
- 【E5】Delphiテクニカルセッション「DelphiによるEnterpriseアプリケーション開発 ~ 当社パッケージの内部構造、開発方法ご紹介」
- 【G6】ライトニングトーク「共有!みんなの開発事例、開発経験、テクニック」
第30回 エンバカデロ・デベロッパーキャンプ資料ダウンロード
2015年5月16日
IDE Fix Pack 5.92
Andreas HausladenさんのIDE Fix PackがアップデートされてVersion 5.92となっています。不具合を2点修正とのことです。
IDE Fix Pack 5.92 released | Andy's Blog and Tools
IDE Fix Pack 5.92 released | Andy's Blog and Tools
Category:
Add-ons,
Delphi 2009,
Delphi 2010,
Delphi XE,
Delphi XE2,
Delphi XE3,
Delphi XE4,
Delphi XE5,
Delphi XE6,
Delphi XE7,
Delphi XE8,
Updates
at
23:25:00
0
Comments
2015年5月13日
2015年5月6日
RAD Studio/Delphi XE8 iOS 8 Simulator Hotfix (Beta)
RAD Studio/Delphi XE8のiOS 8 Simulator Hotfix (Beta) for XE8がリリースされています。FireMonkeyマルチデバイスアプリケーションをiOS 8.xシミュレータ上で動作させられるようにするもののようです。
30221 iOS 8 Simulator Hotfix (Beta) for XE8
iOS 8 Simulator Hotfix (Beta) for Delphi and RAD Studio XE8 is available in Registered User Downloads - Blogs
iOS8シュミレータへアプリを配置すると「No such file or directory」エラーが出る件について
Updates, hot fixes, and patches are provided exclusively to customers with an active Update Subscription, however, this particular critical patch is being provided to all XE8 customers.とのことで、Update Subscriptionとは関係なくダウンロードできます。
30221 iOS 8 Simulator Hotfix (Beta) for XE8
iOS 8 Simulator Hotfix (Beta) for Delphi and RAD Studio XE8 is available in Registered User Downloads - Blogs
iOS8シュミレータへアプリを配置すると「No such file or directory」エラーが出る件について
2015年5月1日
2015/05開催のセミナー
- Web Seminar
- 2015/05/13 16:00-16:30(JST) 「RAD Studio XE8 新機能紹介セミナー - IoT & クラウド編」
- 2015/05/13 17:00-18:00(JST) デベロッパーTV 「第30回デベロッパーキャンプ直前情報!」
- Live Seminar
- 2015/05/19 10:00-17:40(JST) 第30回 エンバカデロ・デベロッパーキャンプ・イン大阪
- 2015/05/21 10:00-18:00(JST) 第30回 エンバカデロ・デベロッパーキャンプ・イン東京
- 2015/05/26 15:30-17:00(JST) 「RAD Studioで始めるマルチデバイス開発ワークショップ」
- 2015/05/28 15:30-17:00(JST) 技術研修セミナー「旧Delphi/C++アプリケーションを最新に!移行のテクニック」
2015年4月24日
IDE Fix Pack 5.91
Andreas HausladenさんのIDE Fix PackがアップデートされてVersion 5.91となっています。
IDE Fix Pack 5.91 – Bugfix release | Andy's Blog and Tools
IDE Fix Pack 5.91 – Bugfix release | Andy's Blog and Tools
Category:
Add-ons,
Delphi 2009,
Delphi 2010,
Delphi XE,
Delphi XE2,
Delphi XE3,
Delphi XE4,
Delphi XE5,
Delphi XE6,
Delphi XE7,
Delphi XE8,
Updates
at
6:37:00
0
Comments
InterBase XE7 Update 2
InterBase XE7 Update 2(12.0.2.299)がリリースされています。
30198 InterBase XE7 Update 2 (12.0.2.299) for Windows
30199 InterBase XE7 Update 2 (12.0.2.299) for Linux
30165 InterBase XE7 Server Ed., Windows/Linux (12.0.2.299, English)
30164 InterBase XE7 Server Ed., Windows/Linux (12.0.2.299, Japanese)
30066 InterBase XE7 (12.0.2.299) Developer Edition, English
30090 InterBase XE7 (12.0.2.299) Developer Edition, Japanese
InterBase XE7 Update 2 Readme (en)
Resolved Defects
What's New in InterBase XE7 Update 2
30198 InterBase XE7 Update 2 (12.0.2.299) for Windows
30199 InterBase XE7 Update 2 (12.0.2.299) for Linux
30165 InterBase XE7 Server Ed., Windows/Linux (12.0.2.299, English)
30164 InterBase XE7 Server Ed., Windows/Linux (12.0.2.299, Japanese)
30066 InterBase XE7 (12.0.2.299) Developer Edition, English
30090 InterBase XE7 (12.0.2.299) Developer Edition, Japanese
InterBase XE7 Update 2 Readme (en)
Resolved Defects
What's New in InterBase XE7 Update 2
2015年4月22日
DDevExtensions 2.83/IDE Fix Pack 5.9
Andreas HausladenさんのDDevExtensionsとIDE Fix PackがRAD Studio XE8に対応しました。
DDevExtensions 2.83 for XE8 released | Andy's Blog and Tools
IDE Fix Pack 5.9 for RAD Studio 2009-XE8 | Andy's Blog and Tools
2015/09/20追記: DDevExtensionsがRAD Studio/Delphi/C++Builder 10 Seattleに対応して再リリースされています。内容に変更はないとのことで、バージョンも2.83のままとなっています。
DDevExtensions 2.83 for XE8 released | Andy's Blog and Tools
IDE Fix Pack 5.9 for RAD Studio 2009-XE8 | Andy's Blog and Tools
2015/09/20追記: DDevExtensionsがRAD Studio/Delphi/C++Builder 10 Seattleに対応して再リリースされています。内容に変更はないとのことで、バージョンも2.83のままとなっています。
Category:
Add-ons,
Delphi 2009,
Delphi 2010,
Delphi XE,
Delphi XE2,
Delphi XE3,
Delphi XE4,
Delphi XE5,
Delphi XE6,
Delphi XE7,
Delphi XE8,
Updates
at
6:26:00
0
Comments
2015年4月15日
2015年4月11日
RAD Studio/Delphi/C++Builder XE7 Update 1 iOS 8.1.3/8.2 Deployment Beta Hotfix
RAD Studio/Delphi/C++Builder XE7 Update 1のiOS 8.1.3/8.2 Deployment Beta Hotfix for XE7がリリースされています。Update subscriptionで提供されていたもの(の一部?)のようで、署名とプロビジョニングを変更してiOS 8.1.3および8.2での問題の回避策を自動化するもの、ということのようです。
30190 iOS 8.1.3/8.2 Deployment Beta Hotfix for XE7 Pro
30189 iOS 8.1.3/8.2 Deployment Beta Hotfix for XE7 Ent and above
2015/05/07追記: 30189、30190とも2015/05/06(たぶんPDT)付で更新されています。
2015/06/04追記: 30189、30190とも2015/06/03(たぶんPDT)付で再更新されています。
30190 iOS 8.1.3/8.2 Deployment Beta Hotfix for XE7 Pro
30189 iOS 8.1.3/8.2 Deployment Beta Hotfix for XE7 Ent and above
2015/05/07追記: 30189、30190とも2015/05/06(たぶんPDT)付で更新されています。
A rebuilt hotfix was posted on 5/6/2015 to address issues some customers were running into.とのこと。
2015/06/04追記: 30189、30190とも2015/06/03(たぶんPDT)付で再更新されています。
2015年4月10日
2015年4月7日
第30回エンバカデロ・デベロッパーキャンプ開催決定
第30回エンバカデロ・デベロッパーキャンプは恒例となった大阪と東京のダブル開催(キャンプ・ツアー)で、2015年05月19日(大阪)および2015年05月21日(東京)に開催されます。
デベロッパーキャンプ
今回は製品担当マネージャであり、Handbookシリーズの著者でもあるMarco Cantùさんの来日がついに実現します。
デベロッパーキャンプ
今回は製品担当マネージャであり、Handbookシリーズの著者でもあるMarco Cantùさんの来日がついに実現します。
RAD Studio/Delphi/C++Builder XE8リリース
RAD Studio/Delphi/C++Builder XE8が正式にリリースされました(販売開始は明日(2015/04/08)とのこと)。
RAD Studio XE8の新機能
Delphi® XE8 および C++Builder® XE8 オンライン ヘルプ (en)
XE8 のリリース ノート - RAD Studio (en)
Delphi XE8 および C++Builder XE8 の新機能 - RAD Studio (en)
RAD Studio XE8(Delphi XE8/C++Builder XE8) における不具合修正リスト (en)
30171 Delphi XE8 and C++Builder XE8 ISO
30185 BDE Installer for RAD Studio, Delphi, C++Builder XE8
30197 Missing SQL database files for Delphi XE8 (インストール時のオプションによりiOS用のlibファイルが不足する不具合のfix)
30326 Missing Java2Op files for RAD Studio, Delphi, and C++Builder XE8 (JavaOp2に必要なファイルが不足している不具合のfix)
30146 IP*Works for Delphi XE8
30147 IP*Works for C++Builder XE8
30148 AQtime Standard for RAD Studio, Delphi and C++Builder XE8
30186 FastReport VCL 5 for RAD Studio, Delphi and C++Builder XE8
30149 FastReport FMX for RAD Studio, Delphi and C++Builder XE8
30232 Mida Converter Basic for RAD Studio XE8
30179 VCL Premium Styles Pack for RAD Studio, Delphi & C++Builder XE8
30180 FireMonkey Premium Styles Pack for RAD Studio XE8
30183 RAD Studio XE8 FireMonkey Accessibility Pack
30233 Custom VCL Style for Windows 10
30258 Custom FireMonkey Style for Windows 10
2015/04/07注記: FastReprt VCLはまだリリースとなっていないようです。
2015/04/08追記: FastReprt VCLもリリースされました。
2015/04/11追記: 30148 AQtime Standard for RAD Studio, Delphi and C++Builder XE8が2015/04/10付で差し替えになっています。
2015/08/11追記: 必要なファイルが不足していてJava2Opが動作しない件のfix(30326)のリンクを追加しました。
RAD Studio XE8の新機能
Delphi® XE8 および C++Builder® XE8 オンライン ヘルプ (en)
XE8 のリリース ノート - RAD Studio (en)
Delphi XE8 および C++Builder XE8 の新機能 - RAD Studio (en)
RAD Studio XE8(Delphi XE8/C++Builder XE8) における不具合修正リスト (en)
30171 Delphi XE8 and C++Builder XE8 ISO
30185 BDE Installer for RAD Studio, Delphi, C++Builder XE8
30197 Missing SQL database files for Delphi XE8 (インストール時のオプションによりiOS用のlibファイルが不足する不具合のfix)
30326 Missing Java2Op files for RAD Studio, Delphi, and C++Builder XE8 (JavaOp2に必要なファイルが不足している不具合のfix)
30146 IP*Works for Delphi XE8
30147 IP*Works for C++Builder XE8
30148 AQtime Standard for RAD Studio, Delphi and C++Builder XE8
30186 FastReport VCL 5 for RAD Studio, Delphi and C++Builder XE8
30149 FastReport FMX for RAD Studio, Delphi and C++Builder XE8
30232 Mida Converter Basic for RAD Studio XE8
30179 VCL Premium Styles Pack for RAD Studio, Delphi & C++Builder XE8
30180 FireMonkey Premium Styles Pack for RAD Studio XE8
30183 RAD Studio XE8 FireMonkey Accessibility Pack
30233 Custom VCL Style for Windows 10
30258 Custom FireMonkey Style for Windows 10
2015/04/08追記: FastReprt VCLもリリースされました。
2015/04/11追記: 30148 AQtime Standard for RAD Studio, Delphi and C++Builder XE8が2015/04/10付で差し替えになっています。
2015/08/11追記: 必要なファイルが不足していてJava2Opが動作しない件のfix(30326)のリンクを追加しました。
2015年4月1日
Firebird 2.5.4
Firebird Ver2.5.4がリリースされています。
Firebird: Firebird 2.5.4
Firebird 2.5 リリースノート (PDF)
Firebird 2.5 Release Notes (PDF)
2015/10/10追記: 日本語版のリリースノートのリンクを追加しました。Firebird日本ユーザー会の翻訳によるものです。翻訳に関わった皆さん、ありがとうございます。
Firebird: Firebird 2.5.4
Firebird 2.5 リリースノート (PDF)
Firebird 2.5 Release Notes (PDF)
2015/10/10追記: 日本語版のリリースノートのリンクを追加しました。Firebird日本ユーザー会の翻訳によるものです。翻訳に関わった皆さん、ありがとうございます。
2015/04開催のセミナー
- Web Seminar
- 2015/04/08 16:00-18:30(JST) RAD Studio First Look Webinar「XE8発売記念!Webセミナー」
- 2015/04/09 11:30-12:15(JST) これで分かる!RAD Studio XE8製品紹介セミナー
- 2015/04/14 16:30-17:15(JST) これで分かる!RAD Studio XE8製品紹介セミナー
- 2015/04/15 17:00-18:00(JST) デベロッパーTV 「RAD Studio XE8 新機能速報」
- 2015/04/22 11:00-11:30(JST) 「RAD Studio XE8 新機能紹介セミナー - マルチデバイス対応編」
- Live Seminar
- 2015/04/06 15:30-17:00(JST) 技術研修セミナー「失敗させない業務システム向けモバイルアプリ開発」
- 2015/04/22 15:30-17:00(JST) 「RAD Studioで始めるマルチデバイス開発ワークショップ」
2015年3月11日
2015年3月10日
2015年3月7日
InterBase XE7 Update 1
InterBase XE7 Update 1(12.0.1.261)がリリースされています。
30157 InterBase XE7 Update 1 (12.0.1.261) for Windows
30159 InterBase XE7 Update 1 (12.0.1.261) for Linux
30165 InterBase XE7 Server Ed., Windows/Linux (12.0.1.261, English)
30164 InterBase XE7 Server Ed., Windows/Linux (12.0.1.261, Japanese)
30155 InterBase XE7 ToGo Edition (12.0.1.261), Win/OSX/iOS/Android
30066 InterBase XE7 (12.0.1.261) Developer Edition, English
30090 InterBase XE7 (12.0.1.261) Developer Edition, Japanese
InterBase XE7 Update 1 Readme - InterBase (en)
InterBase XE7 Update 1 Readme - InterBase
InterBase XE7 Update 1 の新機能 - InterBase (en)
30157 InterBase XE7 Update 1 (12.0.1.261) for Windows
30159 InterBase XE7 Update 1 (12.0.1.261) for Linux
30165 InterBase XE7 Server Ed., Windows/Linux (12.0.1.261, English)
30164 InterBase XE7 Server Ed., Windows/Linux (12.0.1.261, Japanese)
30155 InterBase XE7 ToGo Edition (12.0.1.261), Win/OSX/iOS/Android
30066 InterBase XE7 (12.0.1.261) Developer Edition, English
30090 InterBase XE7 (12.0.1.261) Developer Edition, Japanese
InterBase XE7 Update 1 Readme - InterBase (en)
InterBase XE7 Update 1 Readme - InterBase
InterBase XE7 Update 1 の新機能 - InterBase (en)
2015年3月3日
RAD Studio 2015 ロードマップ
またもや長らく更新されていなかったRAD Studioのロードマップが久しぶりに更新されています(2015年Q1版)。
RAD Studio 2015 Roadmap - Blogs
適当な要約:
2015/03/16追記: 日本語版のロードマップが公開されています。
RAD Studio 2015年ロードマップ
RAD Studio 2015 Roadmap - Blogs
適当な要約:
- 新しいプラットフォームとコンパイラ
- iOS
- C++/Object Pascalの両方でiOS 64ビットプラットフォーム用の新しいツールチェインを準備中
- Appleのユニバーサルバイナリをサポート
- Windows x86 C++
- x64と同様にC++11を含むLLVMベースのツールチェイン
- iOS
- 開発環境(IDE)
- Object Pascal/C++の両方で開発者の生産性を拡張
- 大規模メモリモデルによるIDEの安定性の向上
- IDEに統合されたライブラリマネージャテクノロジー
- 複数デバイスプレビューを含むFireUIマルチデバイスデザイナの拡張
- Windows 10サポート
- VCL/FMXの両方に
- 新しいコンポーネントとライブラリ
- Broad APIのカバー
- 新しいWindows 10のプラットフォームテクノロジとの統合
- VCL/RTL
- スタイル、フル4Kモニタサポート、大きいフォントなどの拡張によるVCLの改良
- アプリケーションの分析(VCL/FMXの両方)
- 全てのプラットフォームに対応するネイティブHTTP(S)クライアントライブラリ
- FireMonkey
- コントロールの拡張
- 地図のような新しいモバイル用コンポーネント
- WebBrowserのようにデスクトップに欠けていたコンポーネント
- さらなるiOSの制御とzオーダ管理
- パフォーマンスの最適化
- コントロールの拡張
- Internet of Things
- ビーコン技術のサポートによるモバイル近接統合
- 異種APIによる異なるデバイス/ガジェットとの接続のコンポーネントベースモデル
- データ収集/分析のためのリモートエンドポイント
- エンタープライズ/多層
- FireDAC:新しいエンタープライズ級のデータベースドライバ、パフォーマンスの向上
- InterBase XE7のチェンジビュー
- EMS(エンタープライズモビリティサービス)とのより緊密な統合
- NoSQLデータベースのサポート
- EMS:プッシュ通知といくつかの拡張
- DataSnapのコアwebテクノロジのクリーンアップと改善
- そのほかのプラットフォームに対する技術的な調査
- Android/iOSの2015年バージョン(現時点でGoogle/Appleからアナウンスされていないもの)
- WebBroker、DataSnap、EMSなどのLinuxのサーバ側のwebサービスアプリケーションのサポート
- AndroidのIntelプラットフォームのサポートの選択肢
- Mac OS Xの64ビット用ツールチェイン
- 2015年の最終的な検討事項
- 2015年において2回の製品リリース
- 最初のリリース後にロードマップを更新
- アップデートサブスクリプションに含まれるもの
- 過去のリリースを含む継続的なアップデート
- 他では入手できないコンテンツと機能
- 新しい挑戦と機会に取り組むための機能
- 2015年において2回の製品リリース
2015/03/16追記: 日本語版のロードマップが公開されています。
RAD Studio 2015年ロードマップ
2015年3月1日
2015/03開催のセミナー
- Web Seminar
- 2015/03/18 17:00-18:00(JST) デベロッパーTV 「Cloud Days Tokyo 2015春 出展レポート」
- Live Seminar
- 2015/03/05 15:30-17:00(JST) 技術研修セミナー「失敗させない業務システム向けモバイルアプリ開発」
- 2015/03/10 13:30-15:00(JST) 技術研修セミナー「Windows / Macを単一コードから!実践マルチデバイス開発」
- 2015/03/19 15:30-17:00(JST) 「RAD Studioで始めるマルチデバイス開発ワークショップ」
- 2015/03/24 15:30-17:00(JST) 技術研修セミナー「実践!エンタープライズモバイルアプリ構築術」
2015年2月28日
[書籍]プログラミング言語C++ 第4版
紀伊國屋書店新宿本店でThe C++ Programming Language (4th Edition) (amazon.com)の翻訳である
プログラミング言語C++ 第4版 (amazon)/Bjarne Stroustrup著/柴田望洋訳/SBクリエイティブ/ISBN 978-4-7973-7595-4/9,504円
を購入。
プログラミング言語C++ 第4版 (amazon)/Bjarne Stroustrup著/柴田望洋訳/SBクリエイティブ/ISBN 978-4-7973-7595-4/9,504円
を購入。
2015年2月16日
IDE Fix Pack 5.8
Andreas HausladenさんのIDE Fix PackがアップデートされてVersion 5.8になっています。このバージョンでは規模の大きなパッケージが別の大きなパッケージに依存しているときのパフォーマンスの改善などの新機能と、Windows 8.1環境下でのDelphi 2009起動時の問題や、一部の環境でIDE Fix Packをインストール/アンインストールしようとしたときにエラーが発生する問題などの修正が行われています、
IDE Fix Pack 5.8 for 2009-XE7 released | Andy's Blog and Tools
IDE Fix Pack 5.8 for 2009-XE7 released | Andy's Blog and Tools
Category:
Add-ons,
Delphi 2009,
Delphi 2010,
Delphi XE,
Delphi XE2,
Delphi XE3,
Delphi XE4,
Delphi XE5,
Delphi XE6,
Delphi XE7,
Updates
at
0:26:00
0
Comments
登録:
投稿 (Atom)