![]() |
|
|
![]()
|
|
| Usya |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 154 Регистрация: 7.6.2005 Репутация: нет Всего: нет |
Есть код
На выходе получаем "blu-blu-blu". Как это исправить? Заранее благодарен. --------------------
Я не волшебник, я только учусь... |
|||
|
||||
| NewDima |
|
||||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 922 Регистрация: 20.2.2006 Где: <?here?> Репутация: нет Всего: 12 |
может я чего-то не понимаю... но какой-то странный способ проверки
используй
если нужно проверить, открылось ли |
||||
|
|||||
| Usya |
|
||||||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 154 Регистрация: 7.6.2005 Репутация: нет Всего: нет |
В Архангельском, если не ошибаюсь, написано аналогично тому, что я привел.
"blu-blu-blu" не появляется, но проблема этим не решается. Запускаем код
Данные сохраненного файла выводятся только один раз. --------------------
Я не волшебник, я только учусь... |
||||||
|
|||||||
| NewDima |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 922 Регистрация: 20.2.2006 Где: <?here?> Репутация: нет Всего: 12 |
да, интересно, че то здесь с самим объектом не лады, если создать его динамически (fin = new ifstream), использовать, убить, пересоздать, использовать, то работает нормально.
очень интересно |
|||
|
||||
| xvr |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 7046 Регистрация: 28.8.2007 Где: Дублин, Ирландия Репутация: 48 Всего: 223 |
Между fin.close(); и fin.open(ddd); позови fin.clear();
|
|||
|
||||
| Usya |
|
||||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 154 Регистрация: 7.6.2005 Репутация: нет Всего: нет |
Но это лишние бревна на пустом месте (как вариант конечно подойдет). Кстати, есть и более простой способ, правда хуже - новый файл пихать в новый поток, но и это не выход - как минимум, может много быть потоков.
Заработало, но почему нельзя обойтись без него? И все равно не совсем понятно - в первом тестовом примере, чтобы не было дополнительных вопросов по поводу создания файла, я включил соответствующий код в пример. Но задача изначальна была такова (я еще не успел разобраться в причине) - ряд файлов на винте открывается и обрабатывается нормально даже и без fin.clear(), а ряд (в том числе создаваемый программно) - не хочет открываться повторно. Это сообщение отредактировал(а) Usya - 22.12.2008, 20:49 --------------------
Я не волшебник, я только учусь... |
||||
|
|||||
| xvr |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 7046 Регистрация: 28.8.2007 Где: Дублин, Ирландия Репутация: 48 Всего: 223 |
Все очень просто - если поток вошел в состояние ошибки (EOF в частности), то operator ! будет возвращать false. Метод close не очищает состояние ошибок для потока, поэтому после close() open() поток все равно находится в состоянии ошибки
|
|||
|
||||
| Dmi3ev |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1698 Регистрация: 28.11.2007 Репутация: 16 Всего: 41 |
добавлю, что if(!fin) можно записать, как if(!fin.good()) (для ясности...) good() - возвращает true, если bad() fail() eof() все возвращают false, а в данном случае eof() возвращает true, это даже можно проверить, сделав между первым и вторым открытием запись if(fin.eof()) {ShowMessage("blu-blu-blu");} -------------------- |
|||
|
||||
| NewDima |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 922 Регистрация: 20.2.2006 Где: <?here?> Репутация: нет Всего: 12 |
я не предлагал это как вариант, просто сказал, что это работает, значит что-то нужно еще с объектом делать. xvr сказал, что именно. |
|||
|
||||
| Usya |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 154 Регистрация: 7.6.2005 Репутация: нет Всего: нет |
Всем спасибо!
Хотел вчера ответить, да попал на перенос форума NewDima
Любая идея, позволяющая что-то решить, - это уже вариант. А почему бы и нет. Бывает, когда работаешь особенно с чужими модулями, не всегда есть возможность и время решить проблему "в лоб", но бывают варианты - как их можно обойти. И только они позволяют быстро накатать рабочий код xvr +1 За решение проблемы. Кстати, для тех, кто наткнется на эту тему вот еще, к примеру, ссылочка http://home.comcast.net/~shvets/Docs/Lectu...plus/part08.txt (в конце страницы) с дополнением по поводу good(), приведенным Dmi3ev. --------------------
Я не волшебник, я только учусь... |
|||
|
||||
![]()
|
| Правила форума "С++ Builder" | |
|
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Rrader. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C++ Builder | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |