![]() |
|
|
![]()
|
|
| EvgenyTS |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 61 Регистрация: 26.11.2008 Репутация: нет Всего: нет |
Можно ли очистить текстовый файл без удаления? MFC
|
|||
|
||||
| mrbrooks |
|
|||
![]() трололомен ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 4259 Регистрация: 4.10.2006 Где: Дол Гулдур Репутация: 2 Всего: 306 |
EvgenyTS, создать заново с таким же именем.
|
|||
|
||||
| voov |
|
|||
![]() Патамушта мы пилоты ![]() ![]() Профиль Группа: Участник Сообщений: 460 Регистрация: 29.11.2007 Репутация: 8 Всего: 8 |
Почему нет? Открой файл с флагом modeCreate.
|
|||
|
||||
| EvgenyTS |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 61 Регистрация: 26.11.2008 Репутация: нет Всего: нет |
А если этот файл постоянно считывает рабочий поток? Можно ли остановить поток из-вне? я так понимаю что ф-ция afxEndString завершает его при вызове в потоке.
Спасибо за идею. Но при попытке : A sharing violation occurred while accessing и путь написан к файлу Это сообщение отредактировал(а) EvgenyTS - 5.2.2009, 10:54 |
|||
|
||||
| mrbrooks |
|
|||
![]() трололомен ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 4259 Регистрация: 4.10.2006 Где: Дол Гулдур Репутация: 2 Всего: 306 |
||||
|
||||
| EvgenyTS |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 61 Регистрация: 26.11.2008 Репутация: нет Всего: нет |
||||
|
||||
| mrbrooks |
|
|||
![]() трололомен ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 4259 Регистрация: 4.10.2006 Где: Дол Гулдур Репутация: 2 Всего: 306 |
дык ты хочешь принудительно остановить поток или, что бы он до конца возложенных на него задач работал. Если первое - то тут надо юзать функции работы с потоком. Если второе - то тут уже, как вариант, можно создавать событие (Event) и отлавливать его через ожидание завершения(WaitForSingleObjects). По поводу примеров поищи по форуму - не раз обсуждалось. |
|||
|
||||
| voov |
|
|||
![]() Патамушта мы пилоты ![]() ![]() Профиль Группа: Участник Сообщений: 460 Регистрация: 29.11.2007 Репутация: 8 Всего: 8 |
EvgenyTS, ты бы лучше сразу описал всю картину и задал вопрос поконкретнее.
Я так понял, что когда ты пытаешься очистить файл, тебе не дают к нему доступа, так как он уже открыт из другого потока. Если так, то файл в потоке нужно открывать с флагом CFile::shareDenyNone. |
|||
|
||||
| EvgenyTS |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 61 Регистрация: 26.11.2008 Репутация: нет Всего: нет |
||||
|
||||
| voov |
|
|||
![]() Патамушта мы пилоты ![]() ![]() Профиль Группа: Участник Сообщений: 460 Регистрация: 29.11.2007 Репутация: 8 Всего: 8 |
Покажи код как ты его открываешь в потоке и там где хочешь стереть файл
|
|||
|
||||
| EvgenyTS |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 61 Регистрация: 26.11.2008 Репутация: нет Всего: нет |
CStdioFile File(Path,CFile::shareDenyNone|CFile::typeText); -открыл
CStdioFile File(Path,CFile::modeCreate|CFile::typeText); -удалил(создал новый) Это сообщение отредактировал(а) EvgenyTS - 5.2.2009, 15:06 |
|||
|
||||
| voov |
|
|||
![]() Патамушта мы пилоты ![]() ![]() Профиль Группа: Участник Сообщений: 460 Регистрация: 29.11.2007 Репутация: 8 Всего: 8 |
Попробуй затирать так
|
|||
|
||||
| EvgenyTS |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 61 Регистрация: 26.11.2008 Репутация: нет Всего: нет |
||||
|
||||
| voov |
|
|||
![]() Патамушта мы пилоты ![]() ![]() Профиль Группа: Участник Сообщений: 460 Регистрация: 29.11.2007 Репутация: 8 Всего: 8 |
Ничего странного. Сам подумай. В потоке ты открываешь файл, не запрещая никому получать доступ, читать или писать в этот файл. А там, где хочешь затереть его, пытаешься получить исключительные права на файл. Но! Файл уже открыт в другом месте и получить исключительные права на него не получается. Поэтому и не работало. А теперь смотри, что поменялось - CFile::shareDenyNone - открываешь файл, но при этом не возражаешь, чтобы ктото еще чтото с ним делал. Вот и все чудо ;) |
|||
|
||||
| EvgenyTS |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 61 Регистрация: 26.11.2008 Репутация: нет Всего: нет |
Спасиб, за объяснение. Дошло!
|
|||
|
||||
![]()
|
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Visual C++/MFC/WTL | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |