2022年8月12日

2022年7月15日

RAD Studio/C++Builder 11 Alexandria C++Builder Code Insight Update (11.1.5)

RAD Studio/Delphi/C++Builder 11 AlexandriaのC++Builder Code Insight Update (11.1.5)がリリースされています。IDEのC++Builder関係の機能の品質改善が行われています。Delphiのみを使用しているユーザにはインストールは推奨されていません。インストールには有効なUpdate Subscriptionが必要です。Registered Products Portalからダウンロードできます。

RAD Studio, C++Builder 11.1.5 ISO
RAD Studio, C++Builder 11.1.5 Web Install

What's New in 11.1.5 - RAD Studio

RAD Studio/C++Builder 11.1.5 Alexandria リリースのお知らせ (en)

2022年7月4日

[書籍]現代暗号技術入門

紀伊國屋書店新宿本店Real-World Cryptography (Amazn US)の翻訳である

現代暗号技術入門 (Amazon)/David Wong著/高橋聡訳/日経BP/ISBN 9784296080199/3,740円

を購入。

2022年6月21日

[書籍][ebook]Delphi Thread Safety Patterns

Luluで注文した

Delphi Thread Safety Patterns/Dalija Prasnikar、Neven Prasnikar Jr.著/FastSpring/64.50USD(printed+ebook)

が配送されてきました(今回の配送はFedEx/日本郵政で、アメリカ合衆国のニューヨーク市ジャマイカからの発送でした)。2022/06/02に注文して19日目の到着、ebookとのセットで書籍の分が50.00USDのところ25.00USD+7.94USD(shipping)=32.94USD、書籍とebookの合計で65.39USD=8,691JPY(1USD=132.934JPY)でした。現時点(2022/06/21)ではまだAmazonなどでの扱いはなく、書籍で入手したい場合はebookとのセットのみになります。

2022/10/18追記: 各国のAmazonでの扱いが始まったとのことです。日本のAmazonでも購入可能(8,084JPY)になっています。なおAmazon USでは49.95USDです。円安め…。

2022年6月15日

現在実行している環境(プロセッサアーキテクチャ)を調べる

Windowsの実行環境としては、現時点(2022年06月)でx86(32bit)版、x64(64bit)版、ARM版があります。一方でDelphiがサポートするターゲットプラットフォームにはWindows 32ビット(x86)、Windows 64ビット(x64)があります。組み合わせとして、x86のプログラムはx86、x64、ARMのいずれでも、またx64のプログラムはx64、ARM(Windows 11のみ)で動作します。逆に動作しない組み合わせはx64のプログラムとx86、ARM(Windows 10)ということになります(Delphiではいまのところ作れませんが、ARMのプログラムはx86/x64では動作せず、ARM版でのみ動作します)。これはWindowsのWOW64(エミュレータ)やDynamic Binary Translator(JIT)によるもので、後方互換性を極めて重視するMicrosoftらしいよくできた仕組みです。これによりWindows上で動作するプログラムは実行環境のことをあまり気にしなくてもよいのですが、まれに(ターゲットプラットフォームではなく)実行環境によって動作を変えたい、ということがあります。
実行環境を調べるにはいくつかの方法がありますが、IsWow64Process2() を使わずにWowA64を検出する · GitHubによると、Windows 10 Version 1511以降であればWin32APIのIsWow64Process2を、それ以前(Windows XP/Vista/7/8/8.1/10 Version 1507(RTM))であればWin32APIのGetNativeSystemInfoを使うのがよいようです(Windows 2000ではGetSystemInfo)。それでは実装してみましょう。
type
{$SCOPEDENUMS ON}
  TProcessorArchitecture = (x86,   // Intel x86
                            x64,   // AMD64/Intel 64
                            ARM);  // ARM

  TIsWow64Process2Func = function (hProcess: THandle; var ProcessMachine: USHORT; var NativeMachine: USHORT): BOOL; stdcall;
  TGetSystemInfoFunc = procedure (var lpSystemInfo: TSystemInfo); stdcall;

const
  IMAGE_FILE_MACHINE_ARM64 = $AA64;

function GetProcessorArchitecture: TProcessorArchitecture;
var
  IsWow64Process2Func: TIsWow64Process2Func;
  ProcessMachine: USHORT;
  NativeMachine: USHORT;
  GetSystemInfoFunc: TGetSystemInfoFunc;
  SI: TSystemInfo;
begin

  { Use IsWow64Process2 on Windows 10 Version 1511 or later }
  @IsWow64Process2Func := GetProcAddress(GetModuleHandle(kernel32),'IsWow64Process2');
  if Assigned(IsWow64Process2Func) = True then
  begin
    if IsWow64Process2Func(GetCurrentProcess,ProcessMachine,NativeMachine) = True then
    begin
      case NativeMachine of
        IMAGE_FILE_MACHINE_I386:
        begin
          Result := TProcessorArchitecture.x86;
          Exit;
        end;

        IMAGE_FILE_MACHINE_AMD64:
        begin
          Result := TProcessorArchitecture.x64;
          Exit;
        end;

        IMAGE_FILE_MACHINE_ARM64:
        begin
          Result := TProcessorArchitecture.ARM;
          Exit;
        end;
      end;
    end;
  end;

  { Use GetNativeSystemInfo (Windows XP or later) or GetSystemInfo (Windows 2000) }
  FillChar(SI,SizeOf(SI),0);
  @GetSystemInfoFunc := GetProcAddress(GetModuleHandle(kernel32),'GetNativeSystemInfo');
  if Assigned(GetSystemInfoFunc) = True then
  begin
    GetSystemInfoFunc(SI);
  end
  else
  begin
    GetSystemInfo(SI);
  end;

  if SI.wProcessorArchitecture = PROCESSOR_ARCHITECTURE_AMD64 then
  begin
    Result := TProcessorArchitecture.x64;
  end
  else
  begin
    Result := TProcessorArchitecture.x86;
  end;

end;
IsWow64Process2、GetNativeSystemInfo、GetSystemInfoの順にフォールバックして情報を取得するようになっています。

Microsoft Monthly Update 2022/06

今日はMicrosoftのセキュリティアップデートの日です。
June 2022 Security Updates - リリース ノート - セキュリティ更新プログラム ガイド - Microsoft
2022 年 6 月のセキュリティ更新プログラム (月例) – Microsoft Security Response Center

2022年6月9日

2022年5月27日

RAD Studio/Delphi/C++Builder 11.1 Alexandria Windows 11 Win32 Debugging Patch

RAD Studio/Delphi/C++Builder 11.1 AlexandriaのWindows 11 Win32 Debugging Patchがリリースされています。Windows 11上でWin32アプリケーションをデバッグしているときにスレッド待機チェーンの問題で1分程度のフリーズが発生することがある問題に対応します。リモートデバッグを使用している場合はPAServerを更新する必要があります。現時点(2022/05/27)でGetIt経由でインストールすることができます。

RAD Studio 11.1向け 「Windows 11 Win32 Debugging Patch」のリリース (en)

また長らくリリースが遅れていたRAD Studio 11/11.1 Alexandria用のIDE pluginの(Parnassus) BookmarksとNavigatorもGetItからインストールできるようになっています(有効なサブスクリプションが必要)。

RAD Studio 11向けプラグイン「 BookmarksならびにNavigator」の リリースのお知らせ (en)

2022年4月28日

RAD Studio/Delphi/C++Builder 11.1 Alexandria Patch 1

RAD Studio/Delphi/C++Builder 11.1 AlexandriaのPatch 1がリリースされています。macOSのPAServerではPython 2.7が必要になります。GetItまたはポータルサイトからダウンロード、インストールすることができます。

RAD Studio 11.1 Patch 1

RAD Studio 11.1 Alexandria Patch 1 のリリース (en)