Osteon писал(а):Существует ли функция Windows (типа API) для проверки на уровне операционной системы - был ли изменен файл
Osteon писал(а):файл *.mdb
Qwertiy писал(а):Есть.
Qwertiy писал(а):А доступ к файлу для копирования вообще будет?
Osteon писал(а):Лаконично.
Qwertiy писал(а):PS: Незачем помещать такие вопросы в раздел по БД, т. к. к БД они никакого отношения не имеют.
iGrok писал(а):А я бы вместо мониторинга изменений через соответствующую API, сделал проще.
1) Проверить время последнего изменения файла.
2) Сравнить размер файла.
3) Если время изменилось, а размер нет - можно дополнительно считать хэш файла (или даже CRC32, для начала) (если там не несколько гигабайт, конечно), и сравнивать его.
Private Sub Command2_Click()
Dim FSO As Object, File As Object, str As String
Set FSO = CreateObject("Scripting.FileSystemObject")
Set File = FSO.GetFile("C:\autoexec.bat")
str = vbNullString
str = str & "Дата создания - " & File.DateCreated & vbCrLf
str = str & "Дата последнего доступа - " & File.DateLastAccessed & vbCrLf
str = str & "Дата последней модификации - " & File.DateLastModified & vbCrLf
str = str & "Диск - " & File.Drive.DriveLetter & vbCrLf
str = str & "Имя - " & File.Name & vbCrLf
str = str & "Родительский каталог - " & File.ParentFolder.Path & vbCrLf
str = str & "Путь - " & File.Path & vbCrLf
str = str & "Короткое имя - " & File.ShortName & vbCrLf
str = str & "Путь в формате 8.3 - " & File.ShortPath & vbCrLf
str = str & "Размер - " & File.Size & vbCrLf
str = str & "Тип файла - " & File.Type
MsgBox str
End Sub
iGrok писал(а):Т.е. сравнивать нужно не со значениями в момент старта, а с параметрами последней резервной копии.
Qwertiy писал(а):Ну зачем тут FSO?
И вообще: http://msdn.microsoft.com/en-us/library ... 65(v=vs.85).aspx.
Osteon писал(а):Я айпишки-то недолюбливаю, а тут на уровне DWORD/LWORD...
iGrok писал(а):А вот вместо FSO лучше, конечно, разобраться с API GetFileTime.
iGrok писал(а):А вот вместо FSO лучше, конечно, разобраться с API GetFileTime.
, в общем-то, действительно, не самый сложный вариант. Вот только прежде чем выполнить GetFileTime, там еще несколько айпишек в довесок нужны...iGrok писал(а):API GetFileTime.
Osteon писал(а):чем API лучше FSO?
Osteon писал(а):несколько айпишек
iGrok писал(а):Более соответствует принципу Бритвы Оккама
iGrok писал(а):Айпи (IP) - это обозначение сетевого адреса и соответствующего протокола.
А мы тут, вроде как, апи (API) обсуждаем.
iGrok писал(а):Только ничего сложного в этом нет. Примеров в сети навалом
iGrok писал(а):CreateFile -> GetFileTime -> CloseHandle
iGrok писал(а):А ещё лучше воспользуйся для этого CompareFileTime
iGrok писал(а):При выходе находишь последнюю имеющуюся у тебя резервную копию. Получаешь её размер и время последнего изменения.Получаешь размер и время последнего изменения текущей базы.Т.е. сравнивать нужно не со значениями в момент старта, а с параметрами последней резервной копии.
Osteon писал(а):Общий алгоритм я понимаю так - при запуске программы с помощью GetFileTime я узнаю время последней модификации файла, сохраняю его где-нить, по окончании работы программы я так же, с помощью GetFileTime, снова узнаю время модификации, с помощью CompareFileTime сравниваю два значения, и в зависимости от результата предпринимаю определенные шаги?
iGrok писал(а):При выходе находишь последнюю имеющуюся у тебя резервную копию. Получаешь её размер и время последнего изменения.
iGrok писал(а):Получаешь её размер и время последнего изменения.
Osteon писал(а):Я решил не находить размер, думаю, что вполне достаточно времени изменения. В соответствии ли с той же "бритвой Оккама"... И хранить данные решил на диске, потому как не хочу расходовать ресурсы на удержание в памяти значений, которые, по сути, будут нужны только один раз.
HandKot писал(а):а не будет ли время изменения файла временем последнего ее открытия ?
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 6