Delphi 11.3 備忘録

Ansi文字列関数が改善された
AnsiStrings.ReplaceStr, AnsiStrings.StringReplace, AnsiStrings.AnsiReplaceStr 関数で
文字#0以降の文字の置換が可能になった。

AnsiStrings.AnsiPos はまだ #0 を超える部分を検出できない (AnsiStrings.PosEX を使用すること)。
例)
  aStr := AnsiString('123'#0'567'); としたとき
  AnsiStrings.AnsiPos('6', aStr) = 0
  AnsiStrings.PosEX('6', aStr, 1) = 6

これらの関数の実行速度はDelphi 10.4より8~10倍程度高速になっている。
半角Ansi文字列に対するByteLength関数の戻り値
ByteLength(AnsiString('漢字'))の戻り値は4でDelphi 10.4以前と同じだが、
ByteLength(AnsiString('123'))の戻り値は3でDelphi 10.4以前の6と異なる。
システム変数 EraInfo
Var EraInfo: array of TEraInfo; //System.SysUtils.TFormatSettings.TEraInfo
インデックスの順序がDelphi 10.4以前と逆順になった。
Delphi 11.3以降: EraInfo[0].EraName = '明治' .. EraName[4] = '令和'
Delphi 10.4以前: EraInfo[0].EraName = '令和' .. EraName[4] = '明治'
Indy FTP.Get について
IdFTP1.Get の前に IdFTP1.Passive := true を実行しないとエラーを生じる。
例)
  IdFTP1.Passive := true; //追加が必要
  IdFTP1.TransferType := ftBinary;
  IdFTP1.Get(Fname, MemStream, False);
条件コンパイルによる無効部分のソースコードを表示色で判別できる
$IFDEF などで無視されるソースコード部分が淡色表示されるのでわかりやすくなった。
コンパイルした実行ファイルが Windows XP上で起動できなくなった
Windows Vista以降で実行できる。
コンパイルされた実行ファイルにパッチを当てて Windows XP で実行可能にする場合
  Addr=0x0140 の 0x06 を 0x05 に変更
  Addr=0x0148 の 0x06 を 0x05 に変更

詳しい解説記事が有りました