Дата создания файла

Тема в разделе "WASM.BEGINNERS", создана пользователем x3r0n, 9 фев 2007.

  1. x3r0n

    x3r0n New Member

    Публикаций:
    0
    Регистрация:
    24 ноя 2006
    Сообщения:
    34
    Всем привет!
    Есть 2 функции:

    function GetFileTime(hFile: HANDLE; lpCreationTime, lpLastAccessTime,
    lpLastWriteTime: PFILETIME): BOOL; stdcall;
    Получает время Создания/Последнего доступа/Записи файла...

    function SetFileTime(hFile: HANDLE; lpCreationTime, lpLastAccessTime,
    lpLastWriteTime: PFILETIME): BOOL; stdcall;
    Устанавливает время Создания/Последнего доступа/Записи файла...

    Я попытался установить своему файлу время Создания/Последнего доступа/Записи как
    у файла Explorer.exe, не у меня не получилось...
    Я сделал это так:


    program MB;

    uses Windows;

    function WinDir: String;
    var
    WinPath: array [0..MAX_PATH] of Char;
    begin
    GetWindowsDirectory(WinPath, MAX_PATH);
    Result := WinPath;
    end; //WinDir

    var
    st: OFSTRUCT;
    hFile1, hFile2: Hwnd;
    lpCreationTime,
    lpLastAccessTime,
    lpLastWriteTime: PFILETIME;
    begin
    GetMem(lpCreationTime, 32);
    GetMem(lpLastAccessTime, 32);
    GetMem(lpLastWriteTime, 32);
    hFile1 := OpenFile(PChar(WinDir + 'Explorer.exe') , st , OF_WRITE);
    hFile2 := OpenFile(PChar(WinDir + 'MyFile.exe') , st , OF_WRITE);
    GetFileTime(hFile1, lpCreationTime, lpLastAccessTime, lpLastWriteTime);
    SetFileTime(hFile2, lpCreationTime, lpLastAccessTime, lpLastWriteTime);
    end.

    Код кривой, т.к. писал сам :)
    Помогите плиз разобраться в чем дело, и сделать получше...
     
  2. pluton

    pluton New Member

    Публикаций:
    0
    Регистрация:
    8 фев 2007
    Сообщения:
    66
    Адрес:
    Odessa
    1. Проверь возвращаемое значение функций GetFileTime и SetFileTime. Из мсдн:
    If the function succeeds, the return value is nonzero.
    If the function fails, the return value is zero. To get extended error information, call GetLastError.

    2. Почему в GetMem ты выделяешь 32 байта, если FILETIME - это 2 дворда?