Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.08.21;
Скачать: CL | DM;

Вниз

Доступ к одному и тому же файлу   Найти похожие ветки 

 
Alibaba ©   (2003-08-06 00:43) [0]

Всем привет!

Такая ситуация.
Есть три программ Program1, Program2, Program3 которые работают с файлами, находящимися в одной директории C:\Tasks\.
Файлы: File1, File2, File3 - НИКОГДА не бывают пустыми (длина - 0).

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

Проблема в следующем: иногда некоторые файлы оказываются пустыми (длина - 0).

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

Если мои подозрения правильные - подскажите как правильно поступить в данной ситуации.


 
Юрий Зотов ©   (2003-08-06 07:01) [1]

Уточните - порядок следования записей в файле имеет значение, или безразличен?


 
Palladin ©   (2003-08-06 07:07) [2]

Используй мьютексы.

Windows SDK\Mutex Objects


 
Anatoly Podgoretsky ©   (2003-08-06 08:01) [3]

Смотри share модификаторы


 
PVOzerski ©   (2003-08-06 08:10) [4]

Насчет share модификаторов - это правильно. Только одновременно писать в один и тот же файл из двух программ все-таки не надо (если Вас, конечно, интересует результат :^) ).


 
Serginio   (2003-08-06 15:39) [5]

Используй LockFileEx или LockFile для блокировки определенных частей файла и UnlockFile и UnlockFileEx для разблокировки. Но лучще кончно использовать глобальные объекты синхронизации.


 
Alibaba ©   (2003-08-07 04:39) [6]

... сорри за временное отсутствие.

>Юрий Зотов © (06.08.03 07:01)
Порядок следования записей в файле значения не имеет.

>Palladin © (06.08.03 07:07)
Эта мысль посещала меня :) но не имею опыта работы... :(

>Anatoly Podgoretsky © (06.08.03 08:01)
Имеется ввиду:

HANDLE CreateFile(
LPCTSTR lpFileName, // pointer to name of the file
( read-write) ... сорри за временное отсутствие.

>Юрий Зотов © (06.08.03 07:01)
Порядок следования записей в файле значения не имеет.

>Palladin © (06.08.03 07:07)
Эта мысль посещала меня :) но не имею опыта работы... :(

>Anatoly Podgoretsky © (06.08.03 08:01)
Имеется ввиду:

HANDLE CreateFile(
LPCTSTR lpFileName, // pointer to name of the file
DWORD dwDesiredAccess, // access (read-write) mode
DWORD dwShareMode, // share mode
LPSECURITY_ATTRIBUTES lpSecurityAttributes, // pointer to security attributes
DWORD dwCreationDistribution, // how to create
DWORD dwFlagsAndAttributes, // file attributes
HANDLE hTemplateFile // handle to file with attributes to copy
);

Попробую в первую очередь идею с CreateFile.
Конечно, хотелось бы примерчик....
Может кто подкинет?


 
Camus   (2003-08-07 06:14) [7]

> Alibaba © (07.08.03 04:39)

Если порядок следования записей в файле безразличен, то можно ничего не синхронизировать, а просто установить разделение доступа. Вместо функций API проще использовать их оболочки из VCL - FileCreate, FileOpen, FileRead, FileWrite и т.п. Все они есть в справке, включая и примеры.


 
Serginio1   (2003-08-07 13:04) [8]

http://www.delphikingdom.ru/asp/answer.asp?IDAnswer=9110


 
Palladin ©   (2003-08-07 13:50) [9]


> Alibaba © (07.08.03 04:39)

потому и неимеешь, что как только соберешься его получить сразу подумаешь что его нет...


 
Palladin ©   (2003-08-07 13:51) [10]


> Serginio1 (07.08.03 13:04)

Ссылка конечно у тебя в тему, ты бы сам в тему въехл бы сначала.


 
Serginio1   (2003-08-07 14:15) [11]

>Palladin © (07.08.03 13:51)
Обычная организация файл-серверной системы. С блокировкой записей итд. Использование lockFile и UnlockFile предотвращают изменение залученной записи или блокировка всего файла.


 
Serginio1   (2003-08-07 14:27) [12]

http://cpp.hotmail.ru/articles/win32_83.html
http://cpp.hotmail.ru/articles/win32_84.html


 
Serginio1   (2003-08-07 15:34) [13]

http://www.rsdn.ru/Forum/?mid=106075


 
Serginio1   (2003-08-07 15:42) [14]

http://www.rsdn.ru/Forum/?mid=336148


 
Alibaba ©   (2003-08-08 01:37) [15]

> Serginio1
Спасибо.



Страницы: 1 вся ветка

Текущий архив: 2003.08.21;
Скачать: CL | DM;

Наверх




Память: 0.5 MB
Время: 0.013 c
4-68582
delphimun
2003-06-18 14:41
2003.08.21
Сгенерировать событие OnClick у кнопки чужого окна


1-68302
Sedunov Vitaly
2003-08-06 15:49
2003.08.21
ScrollBar в MDIForm


14-68485
Работодатель
2003-07-29 15:18
2003.08.21
А чем мы хуже? У нас тоже появилась вакансия!


1-68376
acsoft
2003-08-07 19:57
2003.08.21
Как программно навести курсор на ссылку в документе, загруженном


3-68185
Tahion2
2003-07-28 20:38
2003.08.21
Позволяет ли ClientDataSet хранить несколько таблиц в одном файле