powered by simpleCommunicator - 2.0.37     © 2025 Programmizd 02
Форумы / Caché, Ensemble, DeepSee, MiniM, IRIS, GT.M [игнор отключен] [закрыт для гостей] / Как удалять пустую строку
9 сообщений из 9, страница 1 из 1
Как удалять пустую строку
    #39304263
Valeriu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Добрый день.
Есть надобность записать .html (и не только)
в виде рутин под COS (GT.M).
При открытие таких файлов, нередко попадаются пустые строки.
Т.е. при записи такой рутины мы получим конец,
где встретится первая пустая строка ...
Как можно удалять пустую строку при открытие
текстового файла средствами COS ?
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
CatFile(cmd,Ret,i,Er)
 n io,line,p
 ;s Er="test"
 s io=$io
 s p=cmd
 o p:(COMMAND=cmd:READONLY)::"PIPE"
 k files
 u p
 For i=1:1 r files(i) s Ret(i)=files(i)_$c(13,10) q:$zeof
 c p
 u io
 q
 ;
Спасибо
...
Рейтинг: 0 / 0
Как удалять пустую строку
    #39304312
Alexey Maslov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Valeriu,

как вы, конечно, знаете, пустая строка не является концом программы GT.M. Не вижу, какие проблемы она может там вызывать.

Если вы формируете *.ro-файлы для Cache (для последующего импорта с помощью утилиты %RI или её аналогов), пустые строки надо заменить на строки, состоящие из одного символа "." (точка).
...
Рейтинг: 0 / 0
Как удалять пустую строку
    #39304355
Alexey Maslov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Чуть не забыл ответить на заданный вопрос :)

Отвечу вопросом: разве пустая строка, прочитанная из файла, открытого как обычный "STREAM", не будет иметь $length(строка)=0?
...
Рейтинг: 0 / 0
Как удалять пустую строку
    #39304365
Valeriu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alexey Maslov,
Вы правы, я неправильно делаю,
но мне нужно записать то что открыл.
А открываю я с пустыми строками.
Записываю так, используя в качестве разделителя перевод строки
Здесь нужно посмотреть, я же выхожу по пустой строки ! :
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
rtnpipe(array,filename,rtn,err)
 n p,j
 s p="file"
 o p:(shell="/bin/sh":command="cat >"_filename:writeonly)::"pipe"
 u p
 s string=$p(array,$c(13,10),1) ; Coment first string routine
 w string,!
 w " s %fcgi(""o"",""stdout"")=""""",!
 w " s %fcgi(""o"",""header"",""Content-Type"")=""text/html""",!
 s status=1
 f j=2:1 s string=$p(array,$c(13,10),j) q:string=""  d
 . i status=1,string="<?" s status=2 q
 . i status=2,string="?>" s status=1 q
 . i status=1 d
 . . f i=$L(string):-1:1 i $E(string,i)="""" s string=$E(string,1,i)_""""_$E(string,i+1,10000)
 . . s outline=" s %fcgi(""o"",""stdout"")=%fcgi(""o"",""stdout"")_"""_string_"""_$C(13,10)"
 . i status=2 s outline=string
 . w outline,!
 w " q",!
 w "out(txt) ;",!," s %fcgi(""o"",""stdout"")=%fcgi(""o"",""stdout"")_txt",!," q",!
 c p
 s ^FCGI("DOCUMENT_URI","/"_rtn)="^"_$p(rtn,".",1)
 q
...
Рейтинг: 0 / 0
Как удалять пустую строку
    #39304388
Alexey Maslov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Valeriu,

вы ведь сами заполняете массив, который потом выводите в pipe. Почему бы не сформировать собственный признак конца программы (например, $char(0))?
...
Рейтинг: 0 / 0
Как удалять пустую строку
    #39304413
Valeriu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alexey Maslov,
Спасибо. Попробую.
...
Рейтинг: 0 / 0
Как удалять пустую строку
    #39304999
servit
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ValeriuКак можно удалять пустую строку при открытие
текстового файла средствами COS ?Пример на COS
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
s f=##class(%Stream.FileCharacter).%New()
/*
; при необходимости можно подправить
s f.TranslateTable="CP1251"
s f.LineTerminator=$get(^%SYS("Stream","LineTerminator"),$select($$$isUNIX:$char(10),1:$char(13,10)))
*/
s f.Filename="c:\temp\test.txt"
while 'f.AtEnd {
  s line=f.ReadLine()
  w "$l(line) = ",$l(line),?15,"line = ",$$$quote(line),!
}
Working with Streams
...
Рейтинг: 0 / 0
Как удалять пустую строку
    #39305181
Valeriu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Спасибо всем. Получилось.
...
Рейтинг: 0 / 0
Как удалять пустую строку
    #39305250
Alexey Maslov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В Cache есть интересная особенность при чтении потоковых файлов, которая не встречалась мне в других M-системах.

А именно, даже если не использовать %Stream.FileCharacter, а ограничиться командами языка, Cache корректно читает файлы с "неродными" терминаторами строк: файлы из Windows можно не обрабатывать утилитой dos2unix перед чтением в Cache for UNIX/Linux, и наоборот. Если кому-то нужен доказательный пример, могу привести.
...
Рейтинг: 0 / 0
9 сообщений из 9, страница 1 из 1
Форумы / Caché, Ensemble, DeepSee, MiniM, IRIS, GT.M [игнор отключен] [закрыт для гостей] / Как удалять пустую строку
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]