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

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

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 23.04.2010, 10:54   #1
Gol
 
Регистрация: 22.04.2010
Сообщений: 5
По умолчанию конфликт совместного использования файла

Добрый день, коллеги!
Передо мной была поставлена задача написания нового софта под старое оборудование. Задача заключается в опросе оборудования и циклической записи в файл, анализирует который другая прога. Данные в файл записываются верно (сравнивалось с оригинальным софтом за большие периоды), но вот анализирующая программа явно считывает файл с ошибками(( Т.е. налицо конфликт расшаривания файла...
Открытие и запись в файл производится следующим образом:
FileHandle:=CreateFile('C:\NewFile. bin', GENERIC_WRITE, FILE_SHARE_READ, nil, OPEN_EXISTING, 0, 0);
WriteFile(FileHandle,array,100,_WRe d,nil);
Оригинальная программа была написана под MS-DOS, конфликта с анализирующей программой нет.
Возможно, кто-нибудь сталкивался с такой проблемой?
Буду благодарен за совет.
Gol вне форума Ответить с цитированием
Старый 23.04.2010, 11:04   #2
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

попробуйте полный шаринг дать...ДОС программа скорее всего шаринг вообще не юзает.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 23.04.2010, 11:25   #3
Hottabych
Форумчанин
 
Регистрация: 13.01.2008
Сообщений: 140
По умолчанию

Код:
...
FileHandle:=CreateFile('C:\NewFile.bin', GENERIC_WRITE or GENERIC_READ, FILE_SHARE_READ or FILE_SHARE_WRITE, nil, OPEN_EXISTING, 0, 0);
if FileHandle<>INVALID_HANDLE_VALUE then
...
Полный доступ и полный шаринг
Hottabych вне форума Ответить с цитированием
Старый 23.04.2010, 11:28   #4
Gol
 
Регистрация: 22.04.2010
Сообщений: 5
По умолчанию конфликт расшаренного файла

Цитата:
Сообщение от Пепел Феникса Посмотреть сообщение
попробуйте полный шаринг дать...ДОС программа скорее всего шаринг вообще не юзает.
"полный шаринг" - это FILE_SHARE_READ or FILE_SHARE_WRITE ? - попробую.
Оригинальная программа - на ДОСе, а анализирующая - под WinXP вроде написана.
Gol вне форума Ответить с цитированием
Старый 23.04.2010, 11:30   #5
Gol
 
Регистрация: 22.04.2010
Сообщений: 5
По умолчанию

Цитата:
Сообщение от Hottabych Посмотреть сообщение
Код:
...
FileHandle:=CreateFile('C:\NewFile.bin', GENERIC_WRITE or GENERIC_READ, FILE_SHARE_READ or FILE_SHARE_WRITE, nil, OPEN_EXISTING, 0, 0);
if FileHandle<>INVALID_HANDLE_VALUE then
...
Полный доступ и полный шаринг
Спасибо, попробую.
Gol вне форума Ответить с цитированием
Старый 23.04.2010, 11:30   #6
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

да, там еще DELETE шаринг есть...попробуйте...но есть вероятность того что программа хочет эксклюзивного доступа к файлу
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 23.04.2010, 11:47   #7
Gol
 
Регистрация: 22.04.2010
Сообщений: 5
По умолчанию конфликт расшаренного файла

Цитата:
Сообщение от Пепел Феникса Посмотреть сообщение
да, там еще DELETE шаринг есть...попробуйте...но есть вероятность того что программа хочет эксклюзивного доступа к файлу
Да вроде не должно быть такого - ан. прога - просто читает, монопольного доступа тоже вроде ей не надо - с моей стороны - чистая запись примерно по 10 бинарных строк в сек.
Gol вне форума Ответить с цитированием
Старый 23.04.2010, 11:52   #8
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

Цитата:
монопольного доступа тоже вроде ей не надо
ну проге может и не надо, а вот программис её писавший мог сказать иначе..
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 23.04.2010, 12:10   #9
Hottabych
Форумчанин
 
Регистрация: 13.01.2008
Сообщений: 140
По умолчанию

Да, кстати еще может быть неправильно записана функция WriteFile(FileHandle,array,100,_WRe d,nil);
Точно не помню, но если массив динамический, то так:
WriteFile(FileHandle,arr[0],100,_WRe d,nil);
Hottabych вне форума Ответить с цитированием
Старый 23.04.2010, 12:27   #10
Gol
 
Регистрация: 22.04.2010
Сообщений: 5
По умолчанию

Массив статический, к тому же запись идёт правильная - проверялась на длинных логах. Результаты конфликта - только в анализирующей проге.
Gol вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Ищу партнёров для совместного заработка JarProger Фриланс 6 14.09.2009 09:30
Имя mp3 файла без использования Bass Дима я Мультимедиа в Delphi 7 28.07.2009 12:24
конфликт файла записей и компонентов формы Deathwatcher Общие вопросы Delphi 9 14.11.2008 13:03