|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
05.07.2011, 14:40 | #1 |
Пользователь
Регистрация: 09.04.2011
Сообщений: 49
|
файловые потоки in
в упор не понимаю где собака порылась...
есть два файла, в которых нужно подсчитывать количество строк, делаю в потоке: Код:
Положение галочек харится в массиве config, а открытые потоки - в массиве streams: Код:
Код:
Проблема: если открывать и закрывать подряд один и тот же поток, он работает нормально. Когда включаю в работу функции CloseFiles и OpenFiles, после изменения галочек когда-то открытые потоки уже не считываются. С чем это может быть связано? Если ли у потоков какие-нибудь особенные хитрости? |
05.07.2011, 15:17 | #2 |
Пользователь
Регистрация: 12.06.2008
Сообщений: 76
|
Вы на все 100% уверены, что "когда-то открытые" потоки не закрывались? По описанию ничего не вижу. Может собака все-таки зарыта неподалеку от управляющих контролов? Попробуйте в определенных местах кода понатыкать ifstream::good() (прошу прощения - is_open() вернее), повторите действия, при которых возникает вопрос и посмотрите, соответствуют ли ваши ожидания действительности. Не знаю, в каких ситуациях потоки могут закрываться, но если существует такая завидная тенденция, то, может быть, это все-таки их закрывает один из обработчиков ваших контролов?
Последний раз редактировалось Dogmat; 05.07.2011 в 16:01. |
06.07.2011, 09:26 | #3 | |
Пользователь
Регистрация: 09.04.2011
Сообщений: 49
|
Цитата:
вот текст самого подсчета строк: Код:
--------------- как в реальности получается: например, поставить галочку на new, подсчитать, убрать галочку, подсчитать (должен быть 0 и поток закрыт), потом снова открыть и посчитать. config[0] == 1 streams[0] == 1 new_in.is_open() == 1 строки подсчитаны правильно config[0] == 0 streams[0] == 0 new_in.is_open() == 0 строки == 0 config[0] == 1 streams[0] == 1 new_in.is_open() == 1 но строки == 0 Последний раз редактировалось tiger(); 06.07.2011 в 09:42. |
|
06.07.2011, 10:23 | #4 |
Старожил
Регистрация: 20.04.2008
Сообщений: 5,528
|
-------------------------------------------
программа — запись алгоритма на языке понятном транслятору
Последний раз редактировалось evg_m; 06.07.2011 в 10:34. |
06.07.2011, 11:41 | #5 |
Пользователь
Регистрация: 09.04.2011
Сообщений: 49
|
В общем, максимально упростил все и задача сузилась до такого:
Код:
|
06.07.2011, 23:24 | #6 |
Пользователь
Регистрация: 12.06.2008
Сообщений: 76
|
Посмотрел я в чем дело. Но не понял по какой причине происходит. Не закрываются потоки почему-то. По скольку полный исходный код вы нам не продемонстрировали, составил сбственный с фрагментами вашего, но с некоторыми отличиями.
Шестой Builder: header Код:
Код:
|
06.07.2011, 23:24 | #7 |
Пользователь
Регистрация: 12.06.2008
Сообщений: 76
|
tiger(), обратите внимание, как я инициализирую массив streams
Код:
Для себя поэкспериментировал с совсем уж простыми примерами, потоки нормально открываются и закрываются в VisualStudio, затем в Builder - тоже. В чем здесь проблема сам понять не могу. Ребята, подскажите, по какой причине потоки могут не закрываться. Самому теперь интересно. Код рабочий, можете прям так копировать. Последний раз редактировалось Dogmat; 06.07.2011 в 23:33. |
06.07.2011, 23:28 | #8 |
Пользователь
Регистрация: 12.06.2008
Сообщений: 76
|
если вместо:
Код:
Код:
Последний раз редактировалось Dogmat; 06.07.2011 в 23:33. |
07.07.2011, 09:21 | #9 |
Пользователь
Регистрация: 09.04.2011
Сообщений: 49
|
Dogmat, с clear() действительно все заработало.
Похоже в процессе вызова разных функций ставятся какие-то флаги. Потоки на самом деле закрываются, я проверял is_open(). И открываются. Наврное, как Вы сказали, стоят на конце файла. Большое спасибо!! |
07.07.2011, 11:18 | #10 |
Пользователь
Регистрация: 12.06.2008
Сообщений: 76
|
Нашел у себя ошибку:
Вместо Код:
Код:
Код:
Код:
А у вас в первом сообщении: Код:
Последний раз редактировалось Dogmat; 07.07.2011 в 12:10. |
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Файловые системы с++ и с | _Art_ | Общие вопросы C/C++ | 4 | 28.02.2011 18:09 |
Файловые потоки | &&blad&& | Общие вопросы Delphi | 4 | 05.02.2011 18:22 |
Файловые потоки. | dixonich | Операционные системы общие вопросы | 6 | 06.01.2011 19:35 |
файловые потоки | Crab2 | Общие вопросы C/C++ | 6 | 22.06.2010 09:39 |
задача на файловые потоки в C++ | Klyan | Помощь студентам | 1 | 06.01.2008 01:49 |