RU/2: Форум. Общение пользователей и разработчиков OS/2 (eCS). : OORexxx Прочитать весь текстовый файл в массив


Список сообщений | Написать новое | Ответить на сообщение | Домой Поиск:
Предыдущее сообщение | Следующее сообщение
From : Алексей Тарасов, 2:5053/57
To : Improver
Subj : OORexxx Прочитать весь текстовый файл в массив

> > Так не пробовал?
> > Call Stream file,'c','open'
> > sf=Chars(file)
> > s=CharIn(file, 1, sf)

Как сказано ниже, нужно не в переменную, а в массив.

> Если файл текстовый, то для совместимости с SysFileSearch лучше читать строками через LineIn, например так:
> -----
> i = 0
> do while lines(inFile) > 0
> i = i + 1
> Str.i = linein(inFile)
> end
> Str.0 = i
> -----
> Не в одну строку, конечно, но можно это вынести в подпрограмму и вызывать одной строкой.

К такой схеме я так же пришёл. Жаль, что утерян такой удобный метод чтения.

Для очистки совести сварганил такой файл

inFile='SERVER.rexx'
say time('e')
i=0
do while lines(inFile) > 0
i=i+1
Str.i=linein(inFile)
end /* while */
Str.0=i
say time('e')
say 'Str.0='Str.0


say time('r')
EOL=x2c(0d0a)
call Stream inFile,'c','open'
FileLen=Chars(inFile)
FileStr=CharIn(inFile, 1, FileLen)
i=0
do while FileStr<>''
i=i+1
parse value FileStr with Str.i (EOL) FileStr
end /* while */
Str.0=i
say time('e')
say 'Str.0='Str.0

Он загружает файл длиной 7547 строк.
Так вот, метод через linein() выполняется у меня 0,042, метод через CharIn() 0,965.
Тут выбор очевиден :)

Метод SysFileSearch() забирает этот же файл, за 0,005
Более чем существенная просадка по скорости...

Попробую искать дальше

> > > Переписываю на OORexx свои скрипты.
> > > Нужно прочитать текстовый файл в массив одной командой. В Regina и OS/2 для этого использую SysFileSearch с шаблоном для поиска "0D".
> > > Target=x2c(0d)
> > > call SysFileSearch Target, File, 'Str.'
> > > А вот в OORexx такой фокус не прокатывает.
> > > Подскажите, чем можно заменить.


Fri 24 Jan 2025 21:31 Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36




Programmed by Dmitri Maximovich, Dmitry I. Platonoff, Eugen Kuleshov.
25.09.99 (c) 1999, RU/2. All rights reserved.
Rewritten by Dmitry Ban. All rights ignored.