Delphi 10/Seattleでは、ネストされたStringテストを実行しようとしています...私は製品名である文字列を持っています。その商品名に基づいて商品カテゴリを見つける必要があります。これは大文字と小文字を区別せず、各製品は1つのカテゴリにのみ含まれます。私がカテゴリを見つけたら、私はチェックを止めることができます...私の最初のアプローチは、CASE文の中でAnsiContainsTextを使ってこれを行うことですが、CASE文には共通の機能がないので、これは許されません...Delphi - CASE文の関数を使用
私はうまくいくはずのアプローチを持っていますが、もう少しエレガントなものがありますか?私はそのカテゴリについて約40種類のテストを行い、約6000種類の製品でこのテストを実行していますので、可能な限りパフォーマンスを上げたいと思います。
// Determine new value...
Category := '';
if ((Category = '') and (AnsiContainsText(ProductText, 'PaaS')) then Category := 'PaaS';
if ((Category = '') and (AnsiContainsText(ProductText, 'IaaS')) then Category := 'IaaS';
if ((Category = '') and (AnsiContainsText(ProductText, 'SaaS')) then Category := 'SaaS';
...
機能は、一致が見つかった場合、カテゴリのアイテムを返すように期待しています。 –
したがってStrutils.AnsiIndexStr()関数を使用する場合はこちらをご覧ください。 –