Вверх ↑
Этот топик читают: Гость
Ответов: 24
Рейтинг: 0
#1: 2015-05-11 09:16:15 ЛС | профиль | цитата
Подскажите пожалуйста, как можно убрать пустые строки из текстового файла, (вариант с копированием в новый файл без пустых строк не подходит, изменить нужно именно исходный файл).

Исходный вариант:

xxx

yyy

zzz

А нужно так:

xxx
yyy
zzz
карма: 0

0
Ответов: 1926
Рейтинг: 172
#2: 2015-05-11 09:21:44 ЛС | профиль | цитата

Add(Button,4334181,140,378)
{
Left=15
Top=20
link(onClick,8651297:doEvent1,[])
}
Add(StrList,7395295,315,287)
{
Strings=#3:xxx|0:|0:|3:yyy|0:|3:zzz|
}
Add(Hub,8651297,210,378)
{
OutCount=3
link(onEvent1,7395295:doLoad,[(270,384)(270,321)])
link(onEvent2,8605088:doEnum,[])
link(onEvent3,7395295:doSave,[(277,398)(277,328)])
}
Add(ArrayEnum,8605088,329,385)
{
link(onItem,11457390:doCase,[])
link(onEndEnum,12239233:doEvent1,[(383,398)(383,454)])
link(Array,7395295:Array,[])
}
Add(Case,11457390,399,385)
{
Value=String()
link(onNextCase,6092327:doAdd,[])
}
Add(StrList,6092327,476,385)
{
}
Add(DoData,8065096,476,448)
{
link(onEventData,7395295:doText,[(520,454)(520,264)(303,264)(303,314)])
link(Data,6092327:Text,[])
}
Add(Hub,12239233,406,448)
{
link(onEvent1,8065096:doData,[])
link(onEvent2,6092327:doClear,[(448,461)(448,398)])
}

карма: 9
0
Ответов: 24
Рейтинг: 0
#3: 2015-05-11 09:58:40 ЛС | профиль | цитата
Работает, спасибо!
карма: 0

0
Ответов: 1343
Рейтинг: 31
#4: 2015-05-11 12:21:59 ЛС | профиль | цитата
можно ещё так:

Add(MainForm,2953706,21,105)
{
}
Add(Button,4334181,21,161)
{
Left=15
Top=20
link(onClick,8651297:doEvent1,[])
}
Add(StrList,7395295,329,133)
{
FileName="4.txt"
}
Add(Hub,8651297,98,161)
{
link(onEvent1,7395295:doLoad,[])
link(onEvent2,8605088:doEnum,[])
}
Add(ArrayEnum,8605088,154,168)
{
link(onItem,12283360:doCompare,[])
link(onEndEnum,7395295:doSave,[(292,181)(292,174)])
link(Array,7395295:Array,[(160,156)(131,156)(131,219)(349,219)])
}
Add(If_else,12283360,217,168)
{
link(onTrue,16391799:doData,[])
}
Add(DoData,16391799,266,168)
{
link(onEventData,7395295:doDelete,[(313,174)(313,153)])
link(Data,8605088:Index,[(272,156)(195,156)(195,212)(167,212)])
}
карма: 2

0
Ответов: 2265
Рейтинг: 676
#5: 2015-05-11 12:32:56 ЛС | профиль | цитата
Еще вариант: code_35613.txt
карма: 11

0
файлы: 1code_35613.txt [534B] [325]
Ответов: 1343
Рейтинг: 31
#6: 2015-05-11 12:52:16 ЛС | профиль | цитата
[flood]ну щас IC пойдёт [/flood]
карма: 2

0
Ответов: 2265
Рейтинг: 676
#7: 2015-05-11 12:55:18 ЛС | профиль | цитата
[flood]
Rysik писал(а):
ну щас IC пойдёт
А потом таблицы быстродействия всех вариантов [/flood]
карма: 11

0
Ответов: 1343
Рейтинг: 31
#8: 2015-05-11 12:56:08 ЛС | профиль | цитата
[flood]
sla8a писал(а):
А потом таблицы быстродействия всех вариантов


ага))
[/flood]
карма: 2

0
Разработчик
Ответов: 26151
Рейтинг: 2127
#9: 2015-05-11 13:07:17 ЛС | профиль | цитата
[flood]
Rysik писал(а):
ну щас IC пойдёт

Как только Tad заглянет на огонек, так точно пойдет [/flood]
карма: 22

0
Ответов: 24
Рейтинг: 0
#10: 2015-05-11 17:13:18 ЛС | профиль | цитата
[flood]Нет ничего неподвластного Hiasmу, Hiasm бесценен [/flood]
карма: 0

0
Ответов: 1926
Рейтинг: 172
#11: 2015-05-11 21:22:20 ЛС | профиль | цитата
Rysik писал(а):
можно ещё так:

Не-а
Попробуй-ка:

code_35617.txt
Просто когда пустая строка с индексом 1 удаляется, на её место встаёт строка с индексом 2 и принимает индекс 1, т.е. происходит смещение индексов. А перебор массива переходит к индексу 2, т.е. не затрагивает эту строку, которая тем не менее не проверена.
------------ Дoбавленo в 21.22:
Rysik писал(а):
Еще вариант: code_35613.txt

То же самое:

Add(Button,4334181,224,315)
{
Left=15
Top=20
link(onClick,963765:doEvent1,[])
}
Add(StrList,7395295,350,245)
{
FileName="4.txt"
Strings=#1:а|0:|0:|1:б|1:в|
}
Add(Replace,14423291,350,322)
{
SubStr="13101310"
DestStr="1310"
link(onReplace,7395295:doText,[(402,328)(402,234)(338,234)(338,272)])
link(Str,9430138:Var2,[])
}
Add(Hub,963765,266,315)
{
OutCount=3
link(onEvent2,14423291:doReplace,[])
link(onEvent3,677794:doMessage,[(290,335)(290,363)])
}
Add(Message,677794,301,357)
{
link(Message,9430138:Var1,[(307,306)])
}
Add(GetDataEx,9430138,350,301)
{
link(Data,7395295:Text,[])
}
P.S. Не принимайте близко к сердцу, но я сам, когда делал свои программы, так лажанулся на этих вариантах со смещением индексов и несколькими подряд пустыми строками.
карма: 9
0
файлы: 1code_35617.txt [714B] [304]
Разработчик
Ответов: 26151
Рейтинг: 2127
#12: 2015-05-11 22:32:47 ЛС | профиль | цитата
3042 писал(а):
Просто когда пустая строка с индексом 1 удаляется, на её место встаёт строка с индексом 2 и принимает индекс 1

Для таких случаев применяют декрементарный перебор индексов массива, когда направление перебора идет не сверху вниз, а снизу вверх
карма: 22

0
Ответов: 16884
Рейтинг: 1239
#13: 2015-05-11 22:47:22 ЛС | профиль | цитата
IC не будет. Т.к.
Erik писал(а):
вариант с копированием в новый файл без пустых строк не подходит

Вполне достаточно компонента SearchInFile, чтобы отсеять пустые строки.
карма: 25
Немного терпения! Дежурный экстрасенс скоро свяжется с Вами!
0
Ответов: 1328
Рейтинг: 69
#14: 2015-05-11 23:07:35 ЛС | профиль | цитата
Tad,
Erik писал(а):
изменить нужно именно исходный файл


Add(MainForm,2953706,322,224)
{
Width=786
Height=523
link(onCreate,19306:doExecute,[])
}
Add(SearchInFile,15290829,476,238)
{
Point(onEnd)
link(onSearch,13301288:doCase,[])
link(onEnd,1730464:doSave,[(534,258)(534,286)])
}
Add(ODialog,19306,399,238)
{
link(onExecute,15290829:doSearch,[])
}
Add(Case,13301288,546,245)
{
Value=String()
link(onNextCase,1730464:doAdd,[])
}
Add(StrList,1730464,616,245)
{
}


карма: 2

0
файлы: 1code_35619.txt [414B] [206]
Ответов: 2265
Рейтинг: 676
#15: 2015-05-11 23:42:48 ЛС | профиль | цитата
3042 писал(а):
То же самое:
3042 писал(а):
несколькими подряд пустыми строками.
Пардонсе, но где у ТС несколько подряд идущих пустых строк? В примере отчетливо показано чередование Так что перестаньте фантазировать и уберите свой камень с моего огорода
1nd1g0, [flood]вад вас видеть! Давненько вас тут не было.[/flood]
карма: 11

0
Сообщение
...
Прикрепленные файлы
(файлы не залиты)