Javascript-форум (https://javascript.ru/forum/)
-   Серверные языки и технологии (https://javascript.ru/forum/server/)
-   -   Помогите с решением простой задачи пожалуйста (https://javascript.ru/forum/server/51957-pomogite-s-resheniem-prostojj-zadachi-pozhalujjsta.html)

Maolis 27.11.2014 14:03

Помогите с решением простой задачи пожалуйста
 
Есть файл с разными блоками данных, нужно переписать в другой файл информацию из определенных блоков.

Помимо прочего в этом файле есть N количество блоков вида:

[1]
...
...
...

[2]
...
...
...

[n]
...
...
...

При чём идут они точно друг за другом и после последнего блока известна строка.

Другими словами у меня должен получится цикл типа:
while(!fr.AtEndOfstream)
{
try{
ReadLine = fr.ReadLine();
if(ReadLine == "")
{
continue;
}
}
catch(e)
{
break;
}
if(ReadLine = [1])
{
do
{
ReadLine = fr.ReadLine();
if(ReadLine == "")
{
continue;
}

f.WriteLine(ReadLine);
}
while(ReadLine != /\[2]/)
}
}

но понятно что получается полная хня. ) В общем нужна помощь пожалуйста ):help:

ksa 27.11.2014 15:04

Maolis, я сделал такой файл...

data.txt
[1]
 ...
 ...
 ...

[2]
 ...1
 ...2
 ...3

[3]
 ...
 ...
 ...

И такую программку...
tmp ;;;;[ 27.11.2014 15:00 ]
	n
	s file="d:\box\data.txt"
	s o=##class(%File).%New(file)
	d o.Open("RS")      
	s exit=0
	s find=0
	while 'o.AtEnd,'exit {     
		s str=o.ReadLine()
		if 'find {
			s find=$locate(str,"\[2\]")
			continue
		}
		s exit=$locate(str,"\[\d+\]")
		w:'exit !,str
	}
	k o
	q

Получился такой вывод информации
LVB>d ^tmp
 
 ...1
 ...2
 ...3

Maolis 27.11.2014 17:29

по-другому немного решил проблему. Спасибо, закрыт


Часовой пояс GMT +3, время: 08:07.