紀伊國屋書店新宿本店でThe C++ Programming Language (4th Edition) (amazon.com)の翻訳である
プログラミング言語C++ 第4版 (amazon)/Bjarne Stroustrup著/柴田望洋訳/SBクリエイティブ/ISBN 978-4-7973-7595-4/9,504円
を購入。
2015年2月28日
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
2015年2月11日
2015年2月1日
2015/02開催のセミナー
- Web Seminar
- 2015/02/25 17:00-18:00(JST) デベロッパーTV 「デブサミ参加レポート」
- Live Seminar
- 2015/02/05 15:30-17:00(JST) 技術研修セミナー「失敗させない業務システム向けモバイルアプリ開発」
- 2015/02/24 15:30-17:00(JST) 技術研修セミナー「実践!エンタープライズモバイルアプリ構築術」
- 2015/02/26 15:30-17:00(JST) 「RAD Studioで始めるマルチデバイス開発ワークショップ」
2015年1月14日
2015年1月9日
RAD Studio/Delphi/C++Builder XE7 Update 1 Beta hotfix for FireMonkey apps on Android 5.0 (Lollipop)
RAD Studio/Delphi/C++Builder XE7 Update 1のBeta hotfix for FireMonkey apps on Android 5.0 (Lollipop)がリリースされています。Marco CantuさんのLollipop Hotfix (Beta) for Delphi and C++ Builder XE7によると、Android 5 (Lollipop)でデフォルトとなったART KernelとのJNI Bridgeによる配列データの受け渡しの問題(RSP-9738など)に対応するとのことです。
30110 Beta hotfix for FireMonkey apps on Android 5.0 (Lollipop)
2015/01/14追記: RAD Studio XE7 Update 1とAndroid 5.0(Lollipop)との互換性の問題はQC上だとQC129208やQC129086が該当するものとのことです。高橋さん、いつも情報ありがとうございます。
30110 Beta hotfix for FireMonkey apps on Android 5.0 (Lollipop)
2015/01/14追記: RAD Studio XE7 Update 1とAndroid 5.0(Lollipop)との互換性の問題はQC上だとQC129208やQC129086が該当するものとのことです。高橋さん、いつも情報ありがとうございます。
InterBase XE3 Update 4 Hotfix 3
InterBase XE3 Update 4 Hotfix 3がリリースされています。バージョンは11.0.4.820となっています。
30112 InterBase XE3 Update 4 Hotfix 3 (11.0.4.820) for Windows
30112 InterBase XE3 Update 4 Hotfix 3 (11.0.4.820) for Windows
2015年1月6日
シリアルポートをフレンドリ名で列挙する
以前使用できるシリアルポートをレジストリから列挙する方法について書きましたが、今度はシリアルポートをそのフレンドリ名(デバイスマネージャ上で表示される表記)とともに列挙する方法です。
フレンドリ名の取得にはSetup APIを使用しますが、残念ながらDelphiにはSetup API関係の定義が含まれていない(C++Builderならsetupapi.hがあるのですが)ため、まずは必要なWin32APIと構造体を定義します。
→シリアルポートをフレンドリ名で列挙 (Gist)
フレンドリ名の取得にはSetup APIを使用しますが、残念ながらDelphiにはSetup API関係の定義が含まれていない(C++Builderならsetupapi.hがあるのですが)ため、まずは必要なWin32APIと構造体を定義します。
{ Setup APIs }
type
{ HDEVINFO }
HDEVINFO = THandle;
{$EXTERNALSYM HDEVINFO}
{ SP_DEVINFO_DATA }
SP_DEVINFO_DATA = packed record
cbSize: DWORD;
ClassGuid: TGUID;
DevInst: DWORD;
Reserved: ULONG_PTR;
end;
{$EXTERNALSYM SP_DEVINFO_DATA}
const
{ Flags for SetupDiGetClassDevs }
DIGCF_PRESENT = $00000002;
{$EXTERNALSYM DIGCF_PRESENT}
{ Property for SetupDiGetDeviceRegistryProperty }
SPDRP_DEVICEDESC = $00000000;
{$EXTERNALSYM SPDRP_DEVICEDESC}
SPDRP_FRIENDLYNAME = $0000000C;
{$EXTERNALSYM SPDRP_FRIENDLYNAME}
{ Scope for SetupDiOpenDevRegKey }
DICS_FLAG_GLOBAL = $00000001;
{$EXTERNALSYM DICS_FLAG_GLOBAL}
{ KeyType for SetupDiOpenDevRegKey }
DIREG_DEV = $00000001;
{$EXTERNALSYM DIREG_DEV}
{ SetupDiClassGuidsFromName }
function SetupDiClassGuidsFromName(const ClassName: PChar;
ClassGuidList: PGUID;
ClassGuidListSize: DWORD;
var RequiredSize: DWORD): BOOL; stdcall;
external 'SetupApi.dll' name
{$IFDEF UNICODE}
'SetupDiClassGuidsFromNameW';
{$ELSE}
'SetupDiClassGuidsFromNameA';
{$ENDIF}
{$EXTERNALSYM SetupDiClassGuidsFromName}
{ SetupDiGetClassDevs }
function SetupDiGetClassDevs(ClassGuid: PGUID;
const Enumerator: PChar;
hwndParent: HWND;
Flags: DWORD): HDEVINFO; stdcall;
external 'SetupApi.dll' name
{$IFDEF UNICODE}
'SetupDiGetClassDevsW';
{$ELSE}
'SetupDiGetClassDevsA';
{$ENDIF}
{$EXTERNALSYM SetupDiGetClassDevs}
{ SetupDiDestroyDeviceInfoList }
function SetupDiDestroyDeviceInfoList(DeviceInfoSet: HDEVINFO): BOOL; stdcall;
external 'SetupApi.dll' name 'SetupDiDestroyDeviceInfoList';
{$EXTERNALSYM SetupDiDestroyDeviceInfoList}
{ SetupDiEnumDeviceInfo }
function SetupDiEnumDeviceInfo(DeviceInfoSet: HDEVINFO;
MemberIndex: DWORD;
var DeviceInfoData: SP_DEVINFO_DATA): BOOL; stdcall;
external 'SetupApi.dll' name 'SetupDiEnumDeviceInfo';
{$EXTERNALSYM SetupDiEnumDeviceInfo}
{ SetupDiGetDeviceRegistryProperty }
function SetupDiGetDeviceRegistryProperty(DeviceInfoSet: HDEVINFO;
const DeviceInfoData: SP_DEVINFO_DATA;
Prop: DWORD;
PropertyRegDataType: PDWORD;
PropertyBuffer: Pointer;
PropertyBufferSize: DWORD;
var RequiredSize: DWORD): BOOL; stdcall;
external 'SetupApi.dll' name
{$IFDEF UNICODE}
'SetupDiGetDeviceRegistryPropertyW';
{$ELSE}
'SetupDiGetDeviceRegistryPropertyA';
{$ENDIF}
{$EXTERNALSYM SetupDiGetDeviceRegistryProperty}
{ SetupDiOpenDevRegKey }
function SetupDiOpenDevRegKey(DeviceInfoSet: HDEVINFO;
var DeviceInfoData: SP_DEVINFO_DATA;
Scope: DWORD;
HwProfile: DWORD;
KeyType: DWORD;
samDesired: REGSAM): HKEY; stdcall;
external 'SetupApi.dll' name 'SetupDiOpenDevRegKey';
{$EXTERNALSYM SetupDiOpenDevRegKey}
これらを使用してシリアルポートをそのフレンドリ名とともに取得します。function EnumSerialCommWithFriendlyName(const S: TStrings): Integer;
var
Guid: TGUID;
Size: DWORD;
hDevInf: HDEVINFO;
Index: DWORD;
DevInfoData: SP_DEVINFO_DATA;
S1: String;
hRegKey: HKEY;
S2: String;
RegType: DWORD;
PortNo: Integer;
begin
Result := 0;
Size := 0;
if SetupDiClassGuidsFromName('Ports',@Guid,1,Size) = False then
begin
RaiseLastOSError;
end;
hDevInf := SetupDiGetClassDevs(@Guid,nil,0,DIGCF_PRESENT);
if hDevInf = INVALID_HANDLE_VALUE then
begin
RaiseLastOSError;
end;
try
Index := 0;
while True do
begin
FillChar(DevInfoData,SizeOf(DevInfoData),0);
DevInfoData.cbSize := SizeOf(DevInfoData);
if SetupDiEnumDeviceInfo(hDevInf,Index,DevInfoData) = False then
begin
Break;
end;
SetupDiGetDeviceRegistryProperty(hDevInf,DevInfoData,SPDRP_FRIENDLYNAME,
nil,nil,0,Size);
SetLength(S1,(Size + SizeOf(Char)) div SizeOf(Char));
if SetupDiGetDeviceRegistryProperty(hDevInf,DevInfoData,SPDRP_FRIENDLYNAME,
nil,PChar(S1),Size,Size) = True then
begin
SetLength(S1,StrLen(PChar(S1)));
hRegKey := SetupDiOpenDevRegKey(hDevInf,DevInfoData,DICS_FLAG_GLOBAL,0,DIREG_DEV,KEY_READ);
if hRegKey <> INVALID_HANDLE_VALUE then
begin
try
if RegQueryInfoKey(hRegKey,nil,nil,nil,nil,nil,nil,nil,nil,
@Size,nil,nil) = ERROR_SUCCESS then
begin
SetLength(S2,(Size + SizeOf(Char)) div SizeOf(Char));
if (RegQueryValueEx(hRegKey,'PortName',nil,@RegType,Pointer(PChar(S2)),
@Size) = ERROR_SUCCESS) and
(RegType = REG_SZ) then
begin
SetLength(S2,StrLen(PChar(S2)));
if CompareText(Copy(S2,1,3),'COM') = 0 then
begin
if TryStrToInt(Copy(S2,4,Length(S2)),PortNo) = True then
begin
S.AddObject(S1,Pointer(PortNo));
if Result < PortNo then
begin
Result := PortNo;
end;
end;
end;
end;
end;
finally
RegCloseKey(hRegKey);
end;
end;
end;
Index := Index + 1;
end;
finally
SetupDiDestroyDeviceInfoList(hDevInf);
end;
end;
手順ですが、まずSetupDiClassGuidsFromNameでデバイスインタフェースクラスが'Ports'のGUIDを取得し、そのGUIDを使用してSetupDiGetClassDevsで現在システムに認識されているDevice Information Setsを取得し、SetupDiEnumDeviceInfoでDevice Information Set一つずつの情報をSP_DEVINFO_DATAに取り出して、SetupDiGetDeviceRegistryPropertyでフレンドリ名を取得します。さらにSetupDiOpenDevRegKeyでデバイス固有情報の含まれるレジストリキー('HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Enum'の下のデバイスごとのキーに含まれる'Device Parameters'キー)を開き、RegQueryValueExで'PortName'という名前でREG_SZの値のデータを文字列として取得し、'COM'で始まっていたらシリアルポートとしてフレンドリ名とともにパラメータ(S: TStrings)に格納します。全てのDevice Information Setをチェックし終わったらSetupDiDestroyDeviceInfoListでDevice Information Sets全体を解放します。
以前のものと同様に必ずしもポート番号順にはなっていないため、必要に応じて結果をソートしてください。→シリアルポートをフレンドリ名で列挙 (Gist)
2015年1月1日
2014年12月22日
[書籍]MariaDB & MySQL全機能バイブル
MARUZEN&ジュンク堂書店 渋谷店で
MariaDB & MySQL全機能バイブル (amazon)/鈴木啓修、山田奈緒子著/技術評論社/ISBN 978-4-7741-7020-6/3,780円
を購入。
MariaDB & MySQL全機能バイブル (amazon)/鈴木啓修、山田奈緒子著/技術評論社/ISBN 978-4-7741-7020-6/3,780円
を購入。
2014年12月12日
Firebird 2.5.3 Security Update 1/2.1.7
Firebird Ver2.5.3 Security Update 1(Build 26780)およびVer2.1.7(Build 18553)がリリースされています。
Firebird: Firebird 2.5.3 Security Update 1
Release Notes (PDF)
Firebird: Firebird 2.1.7
Release Notes (PDF)
認証されていないユーザから特別に加工されたパケットを送りつけることでリモートDoS攻撃を受けてしまうセキュリティホールが報告されており、これに対応するものです。信頼できないネットワークからのアクセスを受けるような状況ではアップデートを考慮すべきかと思われます。
Firebird: Firebird 2.5.3 Security Update 1
Release Notes (PDF)
Firebird: Firebird 2.1.7
Release Notes (PDF)
認証されていないユーザから特別に加工されたパケットを送りつけることでリモートDoS攻撃を受けてしまうセキュリティホールが報告されており、これに対応するものです。信頼できないネットワークからのアクセスを受けるような状況ではアップデートを考慮すべきかと思われます。
2014年12月10日
2014年12月8日
2014年12月4日
InterBase XE7リリース
InterBase XE7(12.0.0.191)がリリースされています。現時点(2014/12/04)でDeveloper EditionとServer Edition(トライアル版)の英語版のみダウンロード可能です。2014/12/12にDeveloper EditionとServer Edition(トライアル版)の日本語版もダウンロードできるようになりました。
エンバカデロ、マルチデバイス対応のハイパフォーマンスデータベースInterBaseの新バージョンを発表 | Press Releases
30090 InterBase XE7 (12.0.0.191) Developer Edition, Japanese
30066 InterBase XE7 (12.0.0.191) Developer Edition, English
InterBase XE7 Readme (en)
InterBase XE7 Readme - InterBase (en)
What's New in InterBase XE7
What's New in InterBase XE7 - InterBase
2014/12/09追記: InterBase XE7(開発コードネーム"DeltaForce")では次のような新機能が追加されたとのことです。
InterBase XE7 - Blogs
What's New in InterBase XE7 - InterBase
エンバカデロ、マルチデバイス対応のハイパフォーマンスデータベースInterBaseの新バージョンを発表 | Press Releases
30090 InterBase XE7 (12.0.0.191) Developer Edition, Japanese
30066 InterBase XE7 (12.0.0.191) Developer Edition, English
InterBase XE7 Readme (en)
InterBase XE7 Readme - InterBase (en)
What's New in InterBase XE7
What's New in InterBase XE7 - InterBase
2014/12/09追記: InterBase XE7(開発コードネーム"DeltaForce")では次のような新機能が追加されたとのことです。
- Change Views機能(テーブルの変更履歴を簡単に追跡する)
- 64ビット版LinuxとUbuntu Linuxのサポート(RHEL 6/7、SUSE 11、Ubuntu 14)
- パフォーマンスの向上(SMP環境でのパフォーマンスの向上、トランザクションの改善)
- トランザクションIDの64ビット化
- インクリメンタルデータダンプ(データダンプ時に変更があったページのみを対象に)
- APIの拡張(オンラインダンプ/インクリメンタルダンプ、ジャーナルアーカイブ関係APIの追加)
- パフォーマンス監視の更新(パフォーマンスモニタリングカウンタを64ビット化)
- 以前のバージョンのODSのサポート(ODS 13/14/15をそのまま使用可能に)
InterBase XE7 - Blogs
What's New in InterBase XE7 - InterBase
2014年12月3日
RAD Studio/Delphi/C++Builder XE7 Update 1 Hotfix for FMX Component
RAD Studio/Delphi/C++Builder XE7 Update1のHotfixがリリースされています。[RSP-9732] TViewport3D does not resize properly in Update 1 - Embarcadero Technologiesが修正されているとのことです。
30070 Hotfix for FMX component with custom size reverting to default
30070 Hotfix for FMX component with custom size reverting to default
2014年12月1日
2014/12開催のセミナー
- Web Seminar
- 2014/12/17 17:00-18:00(JST) デベロッパーTV 「2014年を振り返る」
- Live Seminar
- 2014/12/02 18:00-19:30(JST) 「RAD Studio XE7 - モバイル開発体験ワークショップ」
- 2014/12/11 14:00-17:30(JST) エンタープライズ・ルネッサンス2014「エンタープライズモバイル実現セミナー」
- 2014/12/11 18:00-19:30(JST) 技術研修セミナー「C++で始めるマルチデバイス開発入門」
2014年11月14日
RAD Studio/Delphi/C++Builder XE7 Update 1
RAD Studio/Delphi/C++Builder XE7のUpdate 1がリリースされています。
Update 1 for RAD Studio, Delphi and C++Builder XE7
30048 Delphi XE7 and C++Builder XE7 ISO (includes Update 1)
XE7 Update 1 のリリース ノート - RAD Studio (en)
Update 1 Fix List for RAD Studio XE7, Delphi XE7, and C++ Builder XE7
2014/11/19追記: XE7 Update 1でFMX/2DのフォームにTViewport3Dを配置すると、フォームデザイナで開きなおしたときにサイズが正しく反映されない、という問題([RSP-9732] TViewport3D does not resize properly in Update 1)が報告されています。FMXで3Dアプリケーションを開発している方はUpdate 1のインストールを見合わせたほうがよいかもしれません。
2014/12/03追記: XE7 Update 1の[RSP-9732] TViewport3D does not resize properly in Update 1を修正するHotfixがリリースされています。
30070 Hotfix for FMX component with custom size reverting to default
Update 1 for RAD Studio, Delphi and C++Builder XE7
30048 Delphi XE7 and C++Builder XE7 ISO (includes Update 1)
XE7 Update 1 のリリース ノート - RAD Studio (en)
Update 1 Fix List for RAD Studio XE7, Delphi XE7, and C++ Builder XE7
2014/11/19追記: XE7 Update 1でFMX/2DのフォームにTViewport3Dを配置すると、フォームデザイナで開きなおしたときにサイズが正しく反映されない、という問題([RSP-9732] TViewport3D does not resize properly in Update 1)が報告されています。
2014/12/03追記: XE7 Update 1の[RSP-9732] TViewport3D does not resize properly in Update 1を修正するHotfixがリリースされています。
30070 Hotfix for FMX component with custom size reverting to default
2014年11月12日
Microsoft Monthly Update 2014/11
今日はMicrosoftのセキュリティアップデートの日です。
MS14-064
MS14-065
MS14-066
MS14-067
MS14-068
MS14-069
MS14-070
MS14-071
MS14-072
MS14-073
MS14-074
MS14-075
MS14-076
MS14-077
MS14-078
MS14-079
なんだこのリリース日未定ってのは…?
2014/11/19追記: MS14-068がリリースされています。
2014/12/10追記: MS14-075は2014/12のアップデートに含まれる形でリリースされました。
MS14-064
MS14-065
MS14-066
MS14-067
MS14-068
MS14-069
MS14-070
MS14-071
MS14-072
MS14-073
MS14-074
MS14-076
MS14-077
MS14-078
MS14-079
なんだこのリリース日未定ってのは…?
2014/11/19追記: MS14-068がリリースされています。
2014/12/10追記: MS14-075は2014/12のアップデートに含まれる形でリリースされました。
2014年11月11日
第29回エンバカデロ・デベロッパーキャンプ
本日10:00から第29回エンバカデロ・デベロッパーキャンプ・イン東京がエビススバルビル EBiS303 カンファレンススペースで行われます。セッション資料は
ダウンロード | デベロッパーキャンプ
からダウンロードできるようになる予定です(2014/11/10 10:00以降)。またUStreamで全セッションの中継が予定されています(CH1がC/Gセッション、CH2がAセッション)。
無事に終了しました。セッションスピーカ/LT参加者の皆さん、参加者の皆さん、関係者の皆さん、おつかれさまでした。
2014/11/19追記: セッション資料がダウンロードできるようになっています。またセッションリプレイも順次公開されています。
第29回 エンバカデロ・デベロッパーキャンプ資料ダウンロード
ダウンロード | デベロッパーキャンプ
からダウンロードできるようになる予定です(2014/11/10 10:00以降)。またUStreamで全セッションの中継が予定されています(CH1がC/Gセッション、CH2がAセッション)。
無事に終了しました。セッションスピーカ/LT参加者の皆さん、参加者の皆さん、関係者の皆さん、おつかれさまでした。
2014/11/19追記: セッション資料がダウンロードできるようになっています。またセッションリプレイも順次公開されています。
第29回 エンバカデロ・デベロッパーキャンプ資料ダウンロード
- 【C1】Delphi/C++テクニカルセッション「ゲームUIから考えるこれからのエンタープライズUX」
- 【A1】Delphiテクニカルセッション「オンプレからクラウドに移行する中、新旧含め様々なデバイスと接続しないといけない要求にDelphiのクラウド接続で応えてみる」
- 【C2】テクニカルセッション「着飾らない IoT」
- 【A2】Delphiテクニカルセッション「Delphiで作るデータベースツール。その開発のポイントは・・」
- 【G3】ジェネラルセッション「エンバカデロのマルチデバイス開発環境の現在、そして将来」
- Replay (1/2)
- Replay (2/2)
- 【C4】テクニカルセッション「マルチデバイス向けアプリ開発・構築におけるデータハンドリングのいろいろ」
- 【A4】Delphi/C++テクニカルセッション「FireMonkeyの仕組み」
- 【C5】Delphi/C++テクニカルセッション「マルチデバイス対応アプリ開発の勘所」
- 【A5】C++テクニカルセッション「C++コンパイラアップデート」
- Replay (1/2)
- Replay (2/2)
- 【G6】ライトニングトーク「共有!みんなの開発事例、開発経験、テクニック」
- Replay (1/2)
- Replay (2/2)
2014年11月1日
2014/11開催のセミナー
- Web Seminar
- 2014/11/19 17:00-18:00(JST) デベロッパーTV 「デベロッパーキャンプ開催レポート」
- Live Seminar
- 2014/11/07 10:00-18:00(JST) 「第29回 エンバカデロ・デベロッパーキャンプ・イン・大阪」
- 2014/11/11 10:00-18:00(JST) 「第29回 エンバカデロ・デベロッパーキャンプ・イン・東京」
- 2014/11/27 14:00-16:30(JST) 技術研修セミナー「旧Delphi/C++アプリケーションを最新に!移行のテクニック」
登録:
投稿 (Atom)