Vous devez définir s1.StrictDelimiter := True
pour que les espaces ne soient pas considérés comme des délimiteurs, plus d'infos ici .
Comme vous travaillez dans une version qui ne prend pas en charge ce qui précède (comme cela a été précisé après la soumission de la réponse), vous avez deux options :
- Trouvez un caractère dont vous savez qu'il ne sera pas utilisé dans le texte d'origine (par exemple, un trait de soulignement), convertissez tous les espaces en ce caractère avant le fractionnement, et reconvertissez-le après le fractionnement. Ceci est robosoft La suggestion de la Commission.
- Si vous n'avez pas de guillemets et d'espaces dans le texte, vous pouvez utiliser Alexander et envelopper le texte entre les délimiteurs en commande inversée, de sorte que
'hello hello^bye bye'
se tourne vers '"hello hello"^"bye bye"'
. Si vous choisissez cette voie et que cela fonctionne pour vous, veuillez accepter la réponse d'Alexander et non la mienne, il fournit également le code pour la mettre en œuvre.
Les deux solutions de contournement n'utilisant pas StrictDelimiter
ont des limites : la première exige un caractère inutilisé, et la seconde exige l'absence de guillemets et d'espaces dans le texte d'origine.
Il est peut-être temps de passer à une version plus récente de Delphi :)