Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 22.09.2013, 03:05   #1
-Jack-
Форумчанин
 
Регистрация: 19.04.2009
Сообщений: 368
По умолчанию Работа с TStringList

Всем доброго времени суток. Есть некий список из строчек (TStringList).

При заполнении это списка используется разделитель - символ '$'. Но я обратил внимание, что если в строчке есть пробел, то автоматически строчка делится на 2.

Можно ли этого как-то избежать ?
-Jack- вне форума Ответить с цитированием
Старый 22.09.2013, 03:22   #2
grominfo
Форумчанин
 
Аватар для grominfo
 
Регистрация: 30.05.2011
Сообщений: 651
По умолчанию

Код:
var
st:tstrings;
begin
st:=tstringlist.create;
st.add('Ехал Грека через реку');
st.add('Видит Грека в реке рак');
st.add('Сунул Грека руку в реку');
st.add('Рак за руку Греку цап');
showmessage(inttostr(st.count));
st.free;
end;
В результате получим 4 строки
Создание, программирование и сопровождение сайтов любой сложности.
Изготовление программ на заказ.
Список услуг и портфолио на сайте www.andreygrom.ru
grominfo вне форума Ответить с цитированием
Старый 22.09.2013, 03:59   #3
-Jack-
Форумчанин
 
Регистрация: 19.04.2009
Сообщений: 368
По умолчанию

Мой пример:
Код:
     S := TStringList.Create;
     S.Delimiter := '$';
     S.DelimitedText := MyString;
-Jack- вне форума Ответить с цитированием
Старый 22.09.2013, 10:38   #4
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Строки с пробелами должны быть обрамлены символом, заданным в QuoteChar. По умолчанию кажись ". Зачем так сделали не понятно
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 22.09.2013, 11:05   #5
phomm
personality
Старожил
 
Аватар для phomm
 
Регистрация: 28.04.2009
Сообщений: 2,899
По умолчанию

У стринглиста это болезнь. Как уже указал Аватар из-за QuoteChar. Лечится примерно так:
Код:
// space symbol treated as delimiter in TStringList
// use '/' as space-replacer or use any other not existent char in text
sl.DelimitedText := StringReplace(InputString, ' ', '/', [rfReplaceAll]); 
sl.Text := StringReplace(sl.Text, '/', ' ', [rfReplaceAll]);
phomm вне форума Ответить с цитированием
Старый 22.09.2013, 11:30   #6
Vapaamies
Просветитель
Участник клуба
 
Аватар для Vapaamies
 
Регистрация: 26.12.2012
Сообщений: 1,844
По умолчанию

На самом деле этому QuoteChar нужно присвоить #0, и все должно быть пучком.
В разработке: воспроизводственный контур ИТ
Vapaamies вне форума Ответить с цитированием
Старый 22.09.2013, 16:28   #7
-Jack-
Форумчанин
 
Регистрация: 19.04.2009
Сообщений: 368
По умолчанию

Всем большое спасибо, воспользовался кодом от phomm
-Jack- вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Работа со TstringList в Delphi MaryJaneAlise Помощь студентам 4 02.12.2012 18:23
TStringList vasyaRyzhyi Общие вопросы Delphi 0 07.03.2011 11:01
Работа с TStringList. Разъясните природу ошибки! Izum Помощь студентам 1 18.05.2010 19:09
работа с TStringList в потоке OPF_Nik Помощь студентам 6 01.02.2010 15:15
Работа с TStringList через указатель. Mixasik Общие вопросы Delphi 2 08.01.2009 12:51