Как-то вы очень уж сложно парсите.
скрипт как функция. в отдельном файлике
##########
# Input: file name
:local fn $1
#:local fn "text.txt"
:local content [/file get $fn contents]
:local datalen [:len $content]
:local fi 0
:local idx 0
:local res [:toarray ""]
#:put $datalen
do {
:local cr [:find $content "\n" $fi]
if ([:typeof $cr] = "nil") do={
:set cr $datalen
}
# :put "fi: $fi, cr: $cr, idx: $idx"
:local line [:pick $content $fi $cr]
# :put $line
:set ($res->$idx) $line
:set fi ($cr + 1)
:set idx ($idx + 1)
} while ($fi <= $datalen)
:return $res
Использовать
:local file2array [:parse [/system script get func_file2array source]]; local lines [$file2array text.txt]; :foreach i in=$lines do={ :put $i }
Ну или всё в один скрипт запихнуть
p.s. а ошибка, наверное, где-то в районе :set lineEnd [:find $content "\n" $lastEnd ] ;
если ничего не нашлось, в переменную пишется nil, а тут никакой проверки на это и следующий поиск сначала начинается. зато есть странная проверка :if ( [ :len $content ] = 0 ) do={