Delphi: Разделитель StringList всегда является пробелом, даже если Разделитель установлен

Это создает функцию, называет ее и отбрасывает ее.

могло бы быть более ясно, смотрите ли Вы на него как это:

var throwaway = function(){
    // do cool stuff
};
throwaway();

Это сделано для создания частного пространства имен. Код в функции может иметь функции и переменные, не вызывая беспокойство о конфликте с другим кодом, загруженным на странице.

54
задан Blorgbeard 25 June 2013 в 11:43
поделиться

2 ответа

Вы должны установить s1.StrictDelimiter: = True , чтобы пробелы не считались разделителями, подробнее здесь .

Поскольку вы работаете в версия, которая не поддерживает вышеперечисленное (как выяснилось после отправки ответа), у вас есть два варианта:

  1. Найти символ, который, как вы знаете, не будет использоваться в исходном тексте (например, подчеркивание), преобразовать все пробелы в этот символ перед разделением и преобразовать обратно после разделения. Это предложение robosoft .
  2. Если у вас нет кавычек и пробелов в тексте, вы можете использовать уловку Александра и заключить текст между разделителями в инвертированная команда, так что 'hello hello ^ bye bye' превращается в '"hello hello" ^ "bye bye"' . Если вы выбрали этот путь, и он работает для вас, примите ответ Александра, а не мой, он также предоставляет код для его реализации.

Оба обходных пути, не использующие StrictDelimiter , имеют ограничения: первый требует некоторых неиспользуемый символ, а второй не требует кавычек и пробелов в исходном тексте.

Может пора перейти на более новую версию Delphi :)

84
ответ дан 7 November 2019 в 07:55
поделиться
sl.DelimitedText := '"' + StringReplace(S, sl.Delimiter, '"' + sl.Delimiter + '"', [rfReplaceAll]) + '"';
18
ответ дан 7 November 2019 в 07:55
поделиться
Другие вопросы по тегам:

Похожие вопросы: