FreeBasic
Главная
Вход
Регистрация
Суббота, 27.04.2024, 00:53Приветствую Вас Гость | RSS
[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 1 из 1
  • 1
Форум » Freebasic » Вопросы по языку FreeBasic » Странности (Чтение файла и запись в массив)
Странности
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
Подполковник
Группа: Друзья
Сообщений: 147
Репутация: 4
Статус: Offline
Очевидно, что строка Номер2 в первом варианте и строка Номер3  во втором варианте одинаковые, а это значит, что вы записываете строки не в том порядке, в каком они идут в файле.

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


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


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