zvepb
@zvepb

Почему неправильно парсится файл на микротик?

После парсинга в адрес листе следующая картина
646c6a6984ef0768305692.png

Думаю что ошибка при парсинге последней строки, он записывает только первый символ, и перескакивает в начало файла записывая заново 1 строку. Ранее не работал со криптами на микроте. Пытался найти ошибку методом тыка ) Пока безуспешно.

Буду благодарен вашей помощи.
  • Вопрос задан
  • 127 просмотров
Пригласить эксперта
Ответы на вопрос 2
@MaxKozlov
Как-то вы очень уж сложно парсите.

скрипт как функция. в отдельном файлике
########## 
#  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={
Ответ написан
Maxlinus
@Maxlinus
вот может так удобнее будет
https://youtu.be/CdqLcYE-jq0
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы