Файлы
От: Ched Россия  
Дата: 22.03.05 19:26
Оценка:
Как сделать проверку последней модификации 2 файлов. Т.е. если не
равна то что то делать. Пробовал через CFile::GetStatus но не
получается. Как то непонятно он показывает время.

И еще вопросик. Как можно переписать открытый файл? В тотале
переписывает а вот CopyFile с параметров последним false не хочет.
Может как нибудь по другому? Помогите.
Re: Файлы
От: aid2003  
Дата: 22.03.05 20:05
Оценка:
Здравствуйте, Ched, Вы писали:

C>Как сделать проверку последней модификации 2 файлов. Т.е. если не

C>равна то что то делать. Пробовал через CFile::GetStatus но не
C>получается. Как то непонятно он показывает время.


функция GetFileTime, пример из МСДН



// GetLastWriteTime - retrieves the last-write time and converts the
//                   time to a string
// Return value - TRUE if successful, FALSE otherwise
// hFile      - must be a valid file handle
// lpszString - pointer to buffer to receive string

BOOL GetLastWriteTime(HANDLE hFile, LPSTR lpszString)
{
    FILETIME ftCreate, ftAccess, ftWrite;
    SYSTEMTIME stUTC, stLocal;

    // Retrieve the file times for the file.
    if (!GetFileTime(hFile, &ftCreate, &ftAccess, &ftWrite))
        return FALSE;

    // Convert the last-write time to local time.
    FileTimeToSystemTime(&ftWrite, &stUTC);
    SystemTimeToTzSpecificLocalTime(NULL, &stUTC, &stLocal);

    // Build a string showing the date and time.
    wsprintf(lpszString, "%02d/%02d/%d  %02d:%02d",
        stLocal.wDay, stLocal.wMonth, stLocal.wYear,
        stLocal.wHour, stLocal.wMinute);

    return TRUE;
}


Хендл к файлу можно получить с пом. функции CreateFile.
Re[2]: Файлы
От: Ched Россия  
Дата: 24.03.05 22:13
Оценка:
Здравствуйте, aid2003, Вы писали:

A>Здравствуйте, Ched, Вы писали:


C>>Как сделать проверку последней модификации 2 файлов. Т.е. если не

C>>равна то что то делать. Пробовал через CFile::GetStatus но не
C>>получается. Как то непонятно он показывает время.


A>функция GetFileTime, пример из МСДН



A>

A>// GetLastWriteTime - retrieves the last-write time and converts the
A>//                   time to a string
A>// Return value - TRUE if successful, FALSE otherwise
A>// hFile      - must be a valid file handle
A>// lpszString - pointer to buffer to receive string

A>BOOL GetLastWriteTime(HANDLE hFile, LPSTR lpszString)
A>{
A>    FILETIME ftCreate, ftAccess, ftWrite;
A>    SYSTEMTIME stUTC, stLocal;

A>    // Retrieve the file times for the file.
A>    if (!GetFileTime(hFile, &ftCreate, &ftAccess, &ftWrite))
A>        return FALSE;

A>    // Convert the last-write time to local time.
A>    FileTimeToSystemTime(&ftWrite, &stUTC);
A>    SystemTimeToTzSpecificLocalTime(NULL, &stUTC, &stLocal);

A>    // Build a string showing the date and time.
A>    wsprintf(lpszString, "%02d/%02d/%d  %02d:%02d",
A>        stLocal.wDay, stLocal.wMonth, stLocal.wYear,
A>        stLocal.wHour, stLocal.wMinute);

A>    return TRUE;
A>}

A>


A>Хендл к файлу можно получить с пом. функции CreateFile.


Да время не самое главное. Мне надо заменить открытую базу данных новой.
Кароче произвести обновление. Файл он не хочет заменять. И не
открывает его на запись. Как мне этого добиться помогите плиииз. Через
тотал пробовал нормалдьно он все заменяет открытую базу.
Re[3]: Файлы
От: conductor СССР  
Дата: 25.03.05 08:53
Оценка:
Здравствуйте, Ched, Вы писали:

2conductor — полегче с цитированием

Что Вам GetLastError возвращает?
Re[4]: Файлы
От: Ched Россия  
Дата: 26.03.05 13:50
Оценка:
Здравствуйте, conductor, Вы писали:

C>Здравствуйте, Ched, Вы писали:




C>Что Вам GetLastError возвращает?


Вот с такими параметрами открывает. Но не записывает в него,
повидимому открывает на чтение.

hFile2 = CreateFile(PathFile, WRITE_OWNER|WRITE_DAC, 0, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL);

Помогите найти нужные параметры.
Только что тестил и вот что
получается:
Запускаю прогу и база данных моя открыта и используется. Запускаю
акссесс и изменю поле и сохраняю и все нормально изменяется в моей
проге. Значит как то можно открыть файл на запись и переписать новым
( ну или дописать). Помогите пожалуйста.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.