FreeBasic
Главная
Вход
Регистрация
Суббота, 21.12.2024, 15:17Приветствую Вас Гость | RSS
[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 1 из 1
  • 1
Странности
salexeiyДата: Воскресенье, 29.09.2019, 20:10 | Сообщение # 1
Лейтенант
Группа: Пользователи
Сообщений: 72
Репутация: 2
Статус: Offline
Извините за мои вопросы, но не спрашивал, если бы нашёл в интернете.

Наблюдаю странность (скорее всего, только для меня). И так. Открываю на чтение текстовый файл, проверяю на окончание циклом и чтением строки из файла:
Код
do until eof(f)
          line input #f,text


Обрабатываю каждую строку: если в строке что-то не нужное, продолжаю цикл:
Код
continue do


Если что-то нужное (три разных условия, в зависимости от того, что в строке), то помещаю данные из строки в массив с индексом index+=1.

Закрываю файл и теперь хочу посмотреть данные из массива циклом for i=0 to index. Но тут сама неожиданность - данные в массиве содержат жуткий рассинхрон с оригиналом из файла.

К примеру, помещаю в массив такие строки:
Номер1 56 78 100
Номер2 34 98 100
Номер3 23 98 101
Номер4 23 95 100

На выходе вижу несовпадение:
Номер1 56 78 100
Номер2 23 98 101
Номер3 34 98 100
Номер4 23 95 100

В файле 20 тысяч строк текста и проблема повторяется не в каждой строке, а где то через строк 20-30.

Однако, если вместо цикла do until eof(f) использовать цикл for с заранее заданным числом (к примеру строк в файле), то всё совпадает. Я уже целый день не могу понять, в чём тут загвоздка.

Можно догадаться о проблеме без публикации кода?
 
zamabuvaraeuДата: Воскресенье, 29.09.2019, 23:48 | Сообщение # 2
Подполковник
Группа: Друзья
Сообщений: 149
Репутация: 5
Статус: Offline
Очевидно, что строка Номер2 в первом варианте и строка Номер3  во втором варианте одинаковые, а это значит, что вы записываете строки не в том порядке, в каком они идут в файле.

Делать index+=1 — плохая практика, лучше его вообще не трогать.
 
haavДата: Понедельник, 30.09.2019, 07:39 | Сообщение # 3
Генералиссимус
Группа: Администраторы
Сообщений: 1373
Репутация: 50
Статус: Offline
Цитата salexeiy ()
В файле 20 тысяч строк текста и проблема повторяется не в каждой строке, а где то через строк 20-30.


Запускаешь под отладчиком , ставишь брекпоинт на нужную строку (где идет запись в массив) и мотаешь пока не случится странность. Сразу станет понятно , где нарушена логика в программе.


Вы сохраняете власть над людьми покуда оставляете им что-то…Отберите у человека все, и этот человек уже будет неподвластен вам…
 
  • Страница 1 из 1
  • 1
Поиск: