CFile::Rename(одно, в другое)
От: Aries_ Россия  
Дата: 09.04.02 08:47
Оценка:
Здравствуйте !
Есть не большой вопросик по subj. Мне нужно файл с которым работает моя программа видоизменить с целью его укорачивания, для чего я на время прекрываю её доступ к файлу, переименовывваю и из уже переименованного кидаю в рабочий файл только то , что мне требуется. Но вот загвоздка — программа ругается (имя нового файла я создаю в зависимости от времени текущего — и проблемма возникает на Debug этапе — когда я насколько раз проделываю эту процедура в течении часа) , поскольку имя файла в который я хочу переименоваться уже есть ! Можно ли переименовать файл "безусловно" ? Т. е. перезаписать если он уже есть, не проверяя сей факт ??
Буду очень благодарен за совет...
Ох уф эти плогламки ... ох уф эти плогламмисты !!!
Re: CFile::Rename(одно, в другое)
От: Аноним  
Дата: 09.04.02 08:57
Оценка:
Здравствуйте Aries_, Вы писали:

Т. е. перезаписать если он уже есть, не проверяя сей факт ??

При открытии файла укажи

w — Create for writing. If a file by that name already exists, it will be overwritten.
Открытие для записи. Если файл с указанным именем уже существует он будет переписан.
Re: CFile::Rename(одно, в другое)
От: AiratSA Россия  
Дата: 09.04.02 09:02
Оценка:
Здравствуйте Aries_, Вы писали:

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

A>Есть не большой вопросик по subj. Мне нужно файл с которым работает моя программа видоизменить с целью его укорачивания, для чего я на время прекрываю её доступ к файлу, переименовывваю и из уже переименованного кидаю в рабочий файл только то , что мне требуется. Но вот загвоздка — программа ругается (имя нового файла я создаю в зависимости от времени текущего — и проблемма возникает на Debug этапе — когда я насколько раз проделываю эту процедура в течении часа) , поскольку имя файла в который я хочу переименоваться уже есть ! Можно ли переименовать файл "безусловно" ? Т. е. перезаписать если он уже есть, не проверяя сей факт ??

Можно, в Win32 API есть функция MoveFileEx(). Но эта функия есть только в WindowsNT/2000/XP, в Window95/98/ME ее нет.
Хотя неужели трудно написать
CFile::Remove(newFileName);
CFile::Rename(oldFileName, newFileName);
Re: CFile::Rename(одно, в другое)
От: Курилка Россия http://kirya.narod.ru/
Дата: 09.04.02 09:04
Оценка: 1 (1)
Здравствуйте Aries_, Вы писали:

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

A>Есть не большой вопросик по subj. Мне нужно файл с которым работает моя программа видоизменить с целью его укорачивания, для чего я на время прекрываю её доступ к файлу, переименовывваю и из уже переименованного кидаю в рабочий файл только то , что мне требуется. Но вот загвоздка — программа ругается (имя нового файла я создаю в зависимости от времени текущего — и проблемма возникает на Debug этапе — когда я насколько раз проделываю эту процедура в течении часа) , поскольку имя файла в который я хочу переименоваться уже есть ! Можно ли переименовать файл "безусловно" ? Т. е. перезаписать если он уже есть, не проверяя сей факт ??
A>Буду очень благодарен за совет...

1. CFile — это вроде как MFC, так что лучше там задавать
2. то, что предложили с w, убьёт тот файл что был вначале, а не тот в который переименовываем
3. я бы убивал файл в который ты переименовываешь явно
4. если тебе нужен просто временный файл, то брать время + что-то за основу имени файла не есть очень хорошо, я бы посоветоваль посмотреть WinAPI-шную ::GetTempFileName()
Re[2]: CFile::Rename(одно, в другое)
От: Aries_ Россия  
Дата: 09.04.02 09:33
Оценка:
Здравствуйте Курилка, Вы писали:

К>1. CFile — это вроде как MFC, так что лучше там задавать

К>2. то, что предложили с w, убьёт тот файл что был вначале, а не тот в который переименовываем
К>3. я бы убивал файл в который ты переименовываешь явно
К>4. если тебе нужен просто временный файл, то брать время + что-то за основу имени файла не есть очень хорошо, я бы посоветоваль посмотреть WinAPI-шную ::GetTempFileName()

Пасибки ... учту замечания (3 — очень даже ничего)
Благодарствую
Ох уф эти плогламки ... ох уф эти плогламмисты !!!
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.