Modification corrective de l'assistant split() sur les chaînes de caractères sous Delphi 10.3 Rio

Afin de coller au fonctionnement habituel de la fonction split(), un changement est intervenu dans les réponses qu'elle renvoit à partir de Delphi 10.3 Rio : quand la chaîne à découper se termine par le séparateur, une chaîne vide est ajoutée en dernier élément du tableau retourné.

WriteLn(Length('bonjour/hello/'.Split(['/'])));

Jusqu'à la version 10.2 Tokyo, le code précédent retournait la valeur 2.
Désormais il retourne la valeur 3.

Si vous vous en servez dans vos projets il est donc possible qu'un effet de bord vous touche dans certains cas.

Pour régler le problème vous avez deux solutions : soit tester systématiquement la dernière valeur du tableau retourné, soit passer un nouveau paramètre au split comme ici :

WriteLn(Length('bonjour/hello/'.Split(['/'],TStringSplitOptions.ExcludeLastEmpty)));

Bien sûr ça oblige à passer partout où on s'en sert. Pas génial, mais au moins le helper split() fonctionne désormais comme sa fonction de base et comme ça se fait sur la plupart des langages de développement.


Mug Chinese New Year 2023 : year of the rabbitMug Toucan DX dans la baie de Rio