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.


A lire aussi

Modification corrective de l'assistant split() sur les chaînes de caractères sous Delphi 10.3 Rio (23/01/2019)
Les variables inline, quoi qu'est-ce ? (09/11/2018)
On a enfin eu la peau de l'ARC sur les objets !!! (29/10/2018)
Jouons un peu avec les types énumérés et leurs valeurs (05/12/2017)
Simplifier le passage de listes en paramètres et leur création (24/07/2017)

Membre du programme MVP.
Membre du programme MVP