Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Visual C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Закрытая тема
Ваша тема закрыта, почему это могло произойти? Возможно,
Нет наработок или кода, если нужно готовое решение - создайте тему в разделе Фриланс и оплатите работу.
Название темы включает слова - "Помогите", "Нужна помощь", "Срочно", "Пожалуйста".
Название темы слишком короткое или не отражает сути вашего вопроса.
Тема исчерпала себя, помните, один вопрос - одна тема
Прочитайте правила и заново правильно создайте тему.
 
Опции темы Поиск в этой теме
Старый 12.02.2010, 21:23   #1
nazavrik
Форумчанин
 
Аватар для nazavrik
 
Регистрация: 01.09.2008
Сообщений: 178
По умолчанию Перезапись файла в MFC

Здравствуйте!

Код:
CFile cFile;
cFile.Open("..\file.dat", CFile::modeCreate | CFile::modeNoTruncate | CFile::modeReadWrite, NULL);

...
cFile.Read(...);//работаю с файлом
...
                   //здесь мне нужно удалить старое содержимое
сFile.Write(...);//записываю новые данные
Вопрос: как стереть содержимое уже открытого файла?
Быть радикальным - значит понять вещь в её корне. К.Маркс

Последний раз редактировалось MaTBeu; 12.02.2010 в 22:07.
nazavrik вне форума
Старый 12.02.2010, 21:42   #2
pproger
C++ hater
СтарожилДжуниор
 
Аватар для pproger
 
Регистрация: 19.07.2009
Сообщений: 3,333
По умолчанию

есть подозрение не использовать флаг modeNoTruncate
I invented the term Object-Oriented, and I can tell you I did not have C++ in mind. (c)Alan Kay

My other car is cdr.

Q: Whats the object-oriented way to become wealthy?
A: Inheritance
pproger вне форума
Старый 12.02.2010, 22:08   #3
MaTBeu
Eclipse Foundation
Старожил
 
Аватар для MaTBeu
 
Регистрация: 19.09.2007
Сообщений: 2,604
По умолчанию

modeNoTruncate - это для того, чтобы при открытии файла не стирать все его содержимое. Человек спрашивает как стереть уже открытый файл.
MaTBeu вне форума
Старый 12.02.2010, 23:11   #4
pproger
C++ hater
СтарожилДжуниор
 
Аватар для pproger
 
Регистрация: 19.07.2009
Сообщений: 3,333
По умолчанию

2MaTBeu
закрыл, открыл без флага. profit?
если ты уж такой дотошный, то ftruncate, можно передать дескриптор и урезать (в мфц скорее всего есть какая нить функция-член, аля trunc, ftrunc, truncate и тп. винды проверить нет)

пс.
http://msdn.microsoft.com/en-us/libr...8VS.80%29.aspx
когда уже на этом форуме научатся гуглить то
I invented the term Object-Oriented, and I can tell you I did not have C++ in mind. (c)Alan Kay

My other car is cdr.

Q: Whats the object-oriented way to become wealthy?
A: Inheritance

Последний раз редактировалось pproger; 12.02.2010 в 23:16.
pproger вне форума
Старый 12.02.2010, 23:27   #5
nazavrik
Форумчанин
 
Аватар для nazavrik
 
Регистрация: 01.09.2008
Сообщений: 178
По умолчанию

Мне нужно, чтобы соблюдалось следующее:

1. Открыть файл без потери данных. Если файл не существует, создать.
2. Считать данные из файла.
3. При необходимости обновить содержимое файла.

Для первого я как раз и использую сочетание флагов CFile::modeCreate | CFile::modeNoTruncate. Второе стандартное. А с третьим проблема. Открыть и закрыть - очень корявый вариант. Но вариант.

Может быть есть более изящное решение? В msdn я ничего подходящего не нашел.
Быть радикальным - значит понять вещь в её корне. К.Маркс
nazavrik вне форума
Старый 12.02.2010, 23:30   #6
nazavrik
Форумчанин
 
Аватар для nazavrik
 
Регистрация: 01.09.2008
Сообщений: 178
По умолчанию

Цитата:
Сообщение от pproger Посмотреть сообщение
2MaTBeu

пс.
http://msdn.microsoft.com/en-us/libr...8VS.80%29.aspx
когда уже на этом форуме научатся гуглить то
Оу, спасибо! Это может подойти Я искал методы типа Clear...
Быть радикальным - значит понять вещь в её корне. К.Маркс
nazavrik вне форума
Старый 13.02.2010, 00:40   #7
Vago
Форумчанин
 
Регистрация: 15.01.2010
Сообщений: 948
По умолчанию

Может я, конечно, чего-то недопонял в условии, но почему нельзя воспользоваться аналогом C-шной ф-ии rewind() - методом SeekToBegin()? (Без флага modeNoTruncate, естественно).
Vago вне форума
Старый 13.02.2010, 00:43   #8
pproger
C++ hater
СтарожилДжуниор
 
Аватар для pproger
 
Регистрация: 19.07.2009
Сообщений: 3,333
По умолчанию

2Vago
а при чем тут rewind?
Цитата:
man rewind
The rewind() function sets the file position indicator for the stream pointed to by
stream to the beginning of the file. It is equivalent to:

(void) fseek(stream, 0L, SEEK_SET)
I invented the term Object-Oriented, and I can tell you I did not have C++ in mind. (c)Alan Kay

My other car is cdr.

Q: Whats the object-oriented way to become wealthy?
A: Inheritance
pproger вне форума
Старый 13.02.2010, 01:05   #9
Vago
Форумчанин
 
Регистрация: 15.01.2010
Сообщений: 948
По умолчанию

Цитата:
Сообщение от pproger Посмотреть сообщение
...sets the file position indicator ... to the beginning of the file.
А нам куда надо?
Vago вне форума
Старый 13.02.2010, 01:08   #10
pproger
C++ hater
СтарожилДжуниор
 
Аватар для pproger
 
Регистрация: 19.07.2009
Сообщений: 3,333
По умолчанию

2Vago
Цитата:
Вопрос: как стереть содержимое уже открытого файла?
seek != trunc
I invented the term Object-Oriented, and I can tell you I did not have C++ in mind. (c)Alan Kay

My other car is cdr.

Q: Whats the object-oriented way to become wealthy?
A: Inheritance
pproger вне форума
Закрытая тема


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Перезапись файла без путя или определение расположения файла программы The Best Общие вопросы Delphi 4 13.07.2009 22:50
перезапись значений в файле.txt после сравнения SarahConner Общие вопросы Delphi 0 21.03.2009 00:19
MFC:считывание из файла в CString. umnick Общие вопросы C/C++ 0 12.12.2008 13:05
Перезапись файла в текущей позиции Андрей= Общие вопросы Delphi 2 08.05.2008 17:19
обработка файла в MFC Dergard Visual C++ 2 14.12.2007 05:52