Форум: "Начинающим";
Текущий архив: 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.47 MB
Время: 0.036 c