Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2007.04.29;
Скачать: [xml.tar.bz2];

Вниз

TStringList - нежелательная строка   Найти похожие ветки 

 
lo1   (2007-04-10 19:53) [0]

У меня есть заполненный TStringList, но при попытке вытащить из него текст (.Text) и сохранить его иным методом нежели (.SaveToFile) заметил наличие дополнительной пустой строки, которая записывается в файл. Почему так происходит и как это исправить?

var
 f5: textfile;
 ts: TStringList;
begin
 ts := TStringList.Create;
 ts.Add("test123456");
 ts.Add("test1234561323");
 ts.Add("test12334234456");
 ts.Add("test2222123456");
 ts.Add("test33331234561323");
 ts.Add("test4444412334234456");

 assignfile(f5, ExtractFilePath(ParamStr(0)) + "test.txt");
 {$i-}append(f5);{$i+}
 if IOResult <> 0  then rewrite(f5);
 writeln(f5, ts.Text);
 closefile(f5);


 
Loginov Dmitry ©   (2007-04-10 19:58) [1]

Trim(Text)


 
sniknik ©   (2007-04-10 20:01) [2]

символы перевода строки(/пустая строка) содержатся там изначально с создания по дефаулту...
попробуй первое присваивание сделать так ts.text:= "test123456"; чтобы убрать то что там есть.

то ?


 
sniknik ©   (2007-04-10 20:04) [3]

> Trim(Text)
это дольше, большому тексту "обрезание" делать, и потом а если пустые строки добавлены в конец/начало сознательно, дожны там быть...? не в этом, показанном, случае конечно, вообще.


 
default ©   (2007-04-10 20:24) [4]

да сделай ты
var
 i: Integer;
...
assignfile(f5, ExtractFilePath(ParamStr(0)) + "test.txt");
{$i-}append(f5);{$i+}
if IOResult <> 0  then rewrite(f5);
for i := 0 to ts.Count-2 do WriteLn(f5, ts(i));
Write(f5, ts(ts.Count-1)) ;
closefile(f5);
и не морочь голову более изощрёнными методами


 
default ©   (2007-04-10 20:53) [5]

блин, возможно, я туплю
попробуй заменить  writeln(f5, ts.Text);
на write(f5, ts.Text);
я не помню уже ставится при формировании строки свойства Text для последней строки в конце символ(ы) перевода строки
если не ставится, то только что указанная замена поможет
если ставится, можешь использовать способ в [4], он поможет


 
default ©   (2007-04-10 21:03) [6]

Lists the strings in the TStrings object as a single string with the individual strings delimited by carriage returns and line feeds.

property Text: string;

Description

Use Text to get or set all the strings in the TStrings object in a single string delimited by carriage return, line feed pairs.

When reading Text, the strings in the list will be separated by carriage return and line feed. If any of the strings in the list contain a carriage return and line feed, the resulting value of Text will appear to contain more strings than is indicated by the Count property.

When setting Text, the value will be parsed by separating into substrings whenever a carriage return or linefeed is encountered. (The two do not need to form pairs).

If the strings in the list contain carriage return or linefeed characters, a less ambiguous format for the strings is available through the CommaText or DelimitedText property.

так что должна помочь простая замена в [5]


 
MsGuns ©   (2007-04-10 21:35) [7]

>default ©

Бог мой, три поста, сотня слов - что сказать-то хотел, друже ?


 
default ©   (2007-04-10 21:42) [8]

MsGuns ©   (10.04.07 21:35) [7]
writeln(f5, ts.Text); поменять на write(f5, ts.Text);

понимаешь, когда я читаю вопрос я не всегда сразу знаю на него лучший ответ, ввиду памяти и других причин:)


 
MsGuns ©   (2007-04-10 21:47) [9]

>default ©   (10.04.07 21:42) [8]
>понимаешь, когда я читаю вопрос я не всегда сразу знаю на него лучший ответ, ввиду памяти и других причин:)

ааа..

Говорят, что аксакалы форума (те, что уже повымерли) рекомендовали в таких случаях сначала читать вопрос, затем набирать ответ и читать его, затем вытирать ответ и снова читать вопрос.. И так раз пять. Легенда гласит, что часто помогает ;))



Страницы: 1 вся ветка

Форум: "Начинающим";
Текущий архив: 2007.04.29;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.46 MB
Время: 0.055 c
2-1176190517
Катеринка
2007-04-10 11:35
2007.04.29
Обработка нажатий клавиш всех процессов


2-1176299333
BatonPolnii
2007-04-11 17:48
2007.04.29
Округление чисел


1-1173084497
Aleksandr.
2007-03-05 11:48
2007.04.29
Как строку даты/времени в формате ISO превратить в TDateTime?


15-1175527355
Mozart
2007-04-02 19:22
2007.04.29
проблемы с bde


1-1172838273
Юрий_К
2007-03-02 15:24
2007.04.29
Как дебагить процесс инициализации?





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский