|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
03.06.2009, 15:57 | #1 |
Участник клуба
Регистрация: 09.11.2007
Сообщений: 1,762
|
Метод Add у TStringList
Собстенно проблема вот в чем:
При добавлении в TStringList.Add каких либо строк, метод автоматом переводит каретку на новую строку. В итоге когда я сохраняю TStringList.SaveToFile у меня в конце текстовика остается лишняя (ненужная) пустая строка. Как этого избежать? TStringList.Insert тоже не погает. Заранее благодарен. |
03.06.2009, 16:41 | #2 |
Белик Виталий :)
Старожил
Регистрация: 23.07.2007
Сообщений: 57,097
|
У этого класса есть метод Delete Укажи ему индексим Count...
Хотя с твоей проблемой я не сталкивался...
I'm learning to live...
|
03.06.2009, 18:30 | #3 |
Форумчанин
Регистрация: 12.05.2007
Сообщений: 373
|
либо перед сохранением удаляй последнюю (пустую) строчку,
либо добавление делай не так TStringList.Add(s), а так: TStringList.Text:=TStringList.Text+ #13#10+s s - это переменная типа string.
Перемен! - требуют наши сердца. Перемен! - требуют наши глаза.
В нашем смехе и в наших слезах, И в пульсации вен: "Перемен!Мы ждем перемен!" |
03.06.2009, 18:31 | #4 |
Форумчанин
Регистрация: 04.04.2009
Сообщений: 438
|
Добавление символов перевода каретки в конец StringList - особенность реализации и с этим ничего не поделаешь.
Приходится, если эти символы мешают, выкручиваться. Можно сделать копию строки, содержащейся в StringList без двух конечных символов [S := Copy(SL.Text, 1, Length(SL.Text)-2); где S : string], затем записывать эту строку в файл. Конечно, теряется преимущество работы с файлами StringList, но из двух "зол" выбирают то, которое больше по нраву. Если символы в конце действительно мешают (не помню случая чтобы это было), то можно перенести строку из StringList в MemoryStream. Этот класс записывает в файл ничего не добавляя в конец. Код:
Ntlegend, ни первый, ни второй совет не поможет, хмурый дядя Borland не даст. Последний раз редактировалось Скандербег; 03.06.2009 в 18:35. |
20.09.2014, 12:56 | #5 |
Пользователь
Регистрация: 14.03.2011
Сообщений: 11
|
Перед SaveToFile, делаем
StringList.Text:=trim(StringList.Te xt); //Удаляем "пустые" символы по краям Enjoy! |
20.09.2014, 13:24 | #6 | |
Старожил
Регистрация: 09.01.2008
Сообщений: 26,229
|
Цитата:
Метод SaveToFile ВСЕГДА добавляется пустую строку в конец. Вне зависимости от содержимого Text во-вторых, зачем писать в тему 5 (ПЯТИЛЕТНЕЙ) давности?! Хочем понекропостить?! |
|
20.09.2014, 18:56 | #7 |
Участник клуба
Регистрация: 09.11.2007
Сообщений: 1,762
|
Ещё 5 лет назад выкрутился просто через TFileStream удаляю последние два байта и всё
|
21.09.2014, 09:59 | #8 |
Старожил
Регистрация: 09.01.2008
Сообщений: 26,229
|
FaTaL, так в пост #4 Скандербег предложил решение чуть-чуть проще: писать Text в файл через TFileStream, тогда ничего лишнего не запишется и удалять ничего не потребуется!
Впрочем, что это я... Проблемы уже пять лет, как нет, а я туда же, в обсуждение... |
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
add project | lalilulelo | Помощь студентам | 3 | 26.05.2009 10:18 |
Класс TStringlist | vitamin.rulez | Помощь студентам | 1 | 09.02.2009 14:42 |
TStringstream VS Tstringlist | Lich | Работа с сетью в Delphi | 2 | 06.01.2009 10:54 |
TStringList | nimf | Общие вопросы Delphi | 5 | 15.11.2007 14:44 |
Класс TStringList | Pblog | Обсуждение статей | 0 | 27.05.2007 02:13 |