Вы должны установить s1.StrictDelimiter := True
для пробелов, которые не считаются разделителями, подробнее здесь .
Поскольку вы работаете в версии, которая не поддерживает вышеуказанное (как выяснилось после отправки ответа), у вас есть два варианта:
- Найдите символ, который, как вы знаете, не будет использоваться в исходном тексте (например, подчеркивание), преобразуйте все пробелы в этот символ перед разделением и верните обратно после разделения. Это предложение robosoft .
- Если в тексте нет кавычек и пробелов, вы можете использовать трюк Alexander и обернуть текст между разделителями в инвертированной команде, чтобы
'hello hello^bye bye'
превратился в '"hello hello"^"bye bye"'
, Если вы выбрали этот путь, и он работает для вас, примите ответ Александра, а не мой, он также предоставляет код для его реализации.
Оба обходных пути, не использующие StrictDelimiter
, имеют ограничения: первый требует некоторого неиспользованного символа, а второй не требует кавычек и пробелов в исходном тексте.
Возможно, пришло время перейти на более новую версию Delphi:)