日記帳
本ページはプロモーションが含まれています
カテゴリー
Links
blog(ブログ)マスター
アンドロイドの巣
ゼロから始めるベランダ菜園
タイトル
2024年11月
1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30

アプリをDelphi10.2 Unicode に移行してみた

カテゴリー: ぷろぐらみんぐ
2017-07-01
普段使っているアプリをDelphi10.2で再構築すると
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


PR

[PR]