アプリをDelphi10.2 Unicode に移行してみた
カテゴリー: ぷろぐらみんぐ
2017-07-01
普段使っているアプリをDelphi10.2で再構築すると
3倍のサイズになりとても大きくなりました。少しの修正が必要でした。
©や🍮とか入力できるようになったのでいいとしましょう。
対応していない場合は c ?? となります
同じものを .netで作るとおそらく 20-30KBくらいではないかと思います
2時間あれば、.Netへ移植できそうなアプリなんですけど、困っていないし、面倒ですからね。
移行に関して、
URL
3倍のサイズになりとても大きくなりました。少しの修正が必要でした。
531KB | Delphi Win32 |
2555KB | Delphi 10.2 |
©や🍮とか入力できるようになったのでいいとしましょう。
対応していない場合は c ?? となります
同じものを .netで作るとおそらく 20-30KBくらいではないかと思います
2時間あれば、.Netへ移植できそうなアプリなんですけど、困っていないし、面倒ですからね。
移行に関して、
- RegExpr → RegularExpressions
- PAnsiChar → PWideChar
- 他数点
RegExpr → RegularExpressions
初期化 | RegExpr |
var Regex : TRegExpr; begin Regex := TRegExpr.Create; // コード Regex.free(); |
ユニット | |
RegExpr | uses RegExpr |
RegularExpressions | uses RegularExpressions |
URL
パターン | 大文字小文字区別なし |
RegExpr | Regex.ModifierStr := 'i'; |
RegularExpressions | (?i:パターン) (?ここ:パターン) |
置換 | |
RegExpr | Regex.Expression := APattern; Src := Regex.Replace(Src, ReplaceText, False); |
RegularExpressions | Src := TRegEx.Replace(Src, APattern, ReplaceText); |
置換コールバック | |
RegExpr | function TForm1.regexCallBack(ARegExpr : TRegExpr): String; begin Result := ARegExpr.Match[0]; end; procedure TForm1.Action1(Sender: TObject); var Regex : TRegExpr; begin Regex := ... 初期化コード; Regex.ModifierStr := AModifierStr; Regex.Expression := APattern; Edit2.txt := Regex.ReplaceEx(Edit1.txt, regexCallBack); end; |
RegularExpressions | function TForm1.regexCallBack(const AMatch: TMatch): String; begin Result := AMatch.Value; end; procedure TForm1.Action1(Sender: TObject); var AMatchEvaluator : TMatchEvaluator; begin AMatchEvaluator := regexCallBack; Edit2.txt := TRegEx.Replace(Edit1.txt, APattern, AMatchEvaluator); end; |
一致 | |
RegExpr | |
RegularExpressions | TRegEx.Match(Edit1.txt, APattern); |
RegExpr | |
RegularExpressions |
RegExpr | |
RegularExpressions |