Форум программистов, компьютерный форум, киберфорум
Visual C++
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/9: Рейтинг темы: голосов - 9, средняя оценка - 4.67
22 / 22 / 4
Регистрация: 15.04.2009
Сообщений: 100

CFile не читает уже открытый на запись файл

29.11.2011, 15:25. Показов 1904. Ответов 7
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Есть вот-такой кусок кода:
C++
1
2
CFile file;
file.Open(L"text.txt",CFile::modeRead);
Все прекрасно открывается, но только до тех пор, пока я не пытаюсь одновременно с чтением, писать в этот файл(из другой программы). Как можно это исправить или по-другому считать файл? Загвоздка в том, что файл считывается в массив wchar_t и в char переводить его не надо.
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
29.11.2011, 15:25
Ответы с готовыми решениями:

Bat-файл не открывает уже кем-то открытый файл Word
Имеется файл .bat: @echo off start /b...

Добавление строк из батника в уже открытый файл
Здравствуйте уважаемые! Как можно из батника добавлять строки(значения переменных) в уже открытый текстовый файл NOTE PADа, для...

Реализовать добавление строк в уже открытый файл
помогите пожалуйста. есть программа, которая открывает и пересохраняет файл txt. нужно сделать, чтобы в этот,уже открытый txt можно было...

7
Эксперт С++
 Аватар для fasked
5045 / 2624 / 241
Регистрация: 07.10.2009
Сообщений: 4,310
Записей в блоге: 5
29.11.2011, 15:40
А что именно не так?

Цитата Сообщение от Bazan Посмотреть сообщение
Все прекрасно открывается, но только до тех пор, пока я не пытаюсь одновременно с чтением, писать в этот файл(из другой программы). Как можно это исправить или по-другому считать файл? Загвоздка в том, что файл считывается в массив wchar_t и в char переводить его не надо.
Может Вы читаете и записываете в файл в разных кодировках?
0
22 / 22 / 4
Регистрация: 15.04.2009
Сообщений: 100
29.11.2011, 18:30  [ТС]
Именно не так- файл не открывается. Чтение ниже по коду, с ним все нормально

Добавлено через 2 часа 34 минуты
Если проигнорировать то, что не открывается и попробовать считать из файла - программа вылетает с ошибкой:
0
Эксперт С++
 Аватар для fasked
5045 / 2624 / 241
Регистрация: 07.10.2009
Сообщений: 4,310
Записей в блоге: 5
29.11.2011, 18:32
Bazan, скорее всего программа, которая производит запись в файл и блокирует доступ к этому файлу.
0
22 / 22 / 4
Регистрация: 15.04.2009
Сообщений: 100
30.11.2011, 00:44  [ТС]
В обычном блокноте его по-прежнему можно прочитать, даже во время работы пишущей программы. Так почему блокнот может, а CFile не может?

Добавлено через 6 часов 10 минут
Ну даже допустим, что программа пишущая в файл блокирует к нему доступ. Как это обойти?
0
Автор FAQ
 Аватар для -=ЮрА=-
6614 / 4256 / 401
Регистрация: 08.08.2009
Сообщений: 10,325
Записей в блоге: 24
30.11.2011, 13:08
Bazan, вся загвоздка в флагах доступа к файлу, с которыми пытается открыть поток 2-ая программа
http://msdn.microsoft.com/en-u... s.80).aspx
Смотрите вы открыли с флагом
Цитата Сообщение от Bazan Посмотреть сообщение
CFile::modeRead
- всё ок другие приложения также имеет доступ к файлу, но не монопольный!Представим себе что 2-ая программа хочет получить доступ с флагами
CFile::shareDenyRead -
Opens the file and denies other processes read access to the file. Create fails if the file has been opened in compatibility mode or for read access by any other process.

или

CFile::shareExclusive -
Opens the file with exclusive mode, denying other processes both read and write access to the file. Construction fails if the file has been opened in any other mode for read or write access, even by the current process.

Как и отмечал fasked, будет конфликт
Цитата Сообщение от fasked Посмотреть сообщение
скорее всего программа, которая производит запись в файл и блокирует доступ к этому файлу.
А теперь представим ситуацию что 2-ая программа имеет флаг
CFile::modeCreate -
Directs the constructor to create a new file. If the file exists already, it is truncated to 0 length. - мы будем пытаться по новой создать занятый нашим основным приложением файл!

Bazan, Каковы флаги доступа к файлу у второго приложения????

PS:
Цитата Сообщение от Bazan Посмотреть сообщение
wchar_t
- подозреваю что вы с русским работать хотите, ну так не усложняйте алгоритм пишите и читайте char-ами и осуществляйте преобразование CharToOem или OemToChar
0
22 / 22 / 4
Регистрация: 15.04.2009
Сообщений: 100
30.11.2011, 14:34  [ТС]
-=ЮрА=-,
Второе приложение посмотреть не могу - оно не мое, сорцов нет. Как выглядят флаги доступа в асме, я не представляю, так что дизасмить не вариант, даже если вдруг, оно не запаковано.
Нет, я не хочу работать с русским языком. Точнее да, хочу, но не только с русским т.е. еще и с английским, немецким и много какими языками сразу.
Допустим, вторая программа пишет в файл с флагом CFile::shareDenyRead, можно ли изменить флаг из вне(из первой программы) или прочитать файл, не смотря на наличие флага?
0
Автор FAQ
 Аватар для -=ЮрА=-
6614 / 4256 / 401
Регистрация: 08.08.2009
Сообщений: 10,325
Записей в блоге: 24
30.11.2011, 14:53
Цитата Сообщение от Bazan Посмотреть сообщение
Точнее да, хочу, но не только с русским т.е. еще и с английским, немецким и много какими языками сразу.
- я поетому и писал
Цитата Сообщение от -=ЮрА=- Посмотреть сообщение
не усложняйте алгоритм пишите и читайте char-ами и осуществляйте преобразование CharToOem или OemToChar
- эти функции изменят неверное представление кирилических символов, на латиницу они не распространяются

Цитата Сообщение от Bazan Посмотреть сообщение
CFile::shareDenyRead, можно ли изменить флаг из вне(из первой программы)
- думаю что без дизасма никак
Для выхода из сложившейся ситуации предлагаю делать CopyFile для нашего основного потока и работать с копией. Копирование производить каждый раз когда будут внесены изменения в исходный файл данных програмой записи
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
30.11.2011, 14:53
Помогаю со студенческими работами здесь

Запись в текущий открытый файл QT
Столкнулся с проблемой реализации быстрого сохранения текущего открытого файла без вызова QFileDialog в своей программе, программа что то...

Запись данных в открытый файл Excel
Подскажите как дозаписывать данные в файл excel, если этот файл открыт. Суть программы: Записывать в excel информацию о файлах в...

Не читает файл в папке дебаг. Уже везде его пихал, а программа не работает
#include <iostream> #include <fstream> //#include <chrono> #include <string> using namespace std; class EmptyQueueException{ ...

StreamReader не может открыть файл, открытый на запись другим процессом
Сабж. Как обойти? :help:

Программа не сохраняет запись в файл и не читает его
Не как не могу понять что не так в коде, не как не хочет сохранять в файл и читать с его. Program uch_7_1; Uses crt; Type ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Новые блоги и статьи
Блокировка документа от изменений, если он открыт у другого пользователя
Maks 08.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа, разработанного в конфигурации КА2. Задача: запретить редактирование документа, если он открыт у другого пользователя. / / . . .
Система безопасности+живучести для сервера-слоя интернета (сети). Двойная привязка.
Hrethgir 08.04.2026
Далее были размышления о системе безопасности. Сообщения с наклонным текстом - мои. А как нам будет можно проверить, что ссылка наша, а не подделана хулиганами, которая выбросит на другую ветку и. . .
Модель ЗдрввоСохранения 7: больше работников, больше ресурсов.
anaschu 08.04.2026
работников и заданий может быть сколько угодно, но настроено всё так, что используется пока что только 20% kYBz3eJf3jQ
Дальние перспективы сервера - слоя сети с космологическим дизайном интефейса карты и логики.
Hrethgir 07.04.2026
Дальнейшее ближайшее планирование вывело к размышлениям над дальними перспективами. И вот тут может быть даже будут нужны оценки специалистов, так как в дальних перспективах всё может очень сильно. . .
Горе от ума
kumehtar 07.04.2026
Эта мне ментальная установка, что вот прямо сейчас, мол, мне для полного счастья не хватает (нужное вписать), и когда я этого достигну - тогда и полный кайф. Одна из самых сильных ловушек на пути. . . .
Использование значений реквизитов справочника в документе, с определенными условиями и правами
Maks 07.04.2026
1. Контроль срока действия договора Алгоритм из решения ниже реализован на примере нетипового документа "ЗаявкаНаРаботу", разработанного в конфигурации КА2. Задача: уведомлять пользователя, если. . .
Доступность команды формы по условию
Maks 07.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: сделать доступной кнопку (команда формы "ЗавершитьСписание") при. . .
Уведомление о неверно выбранном значении справочника
Maks 06.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "НарядПутевка", разработанного в конфигурации КА2. Задача: уведомлять пользователя, если в документе выбран неверный склад. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru