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

Вниз

Установить дату папке(KOL)   Найти похожие ветки 

 
DDA2   (2003-11-22 21:21) [0]

Господи,помогите  же кто -нибудь установить дату на папки.
Ну ни как не могу поставить
Целый день мучаюсь
Дайте реальный - полноценый пример(пажалуйста)


 
Vladimir Kladov   (2003-11-23 20:18) [1]

Ну при чем тут KOL (и Господь тоже?). F1 нажать, и в справке найти, все ж написано:

Windows NT: You can obtain a handle to a directory by calling the CreateFile function with the FILE_FLAG_BACKUP_SEMANTICS flag set, as follows:

hDir = CreateFile (
   DirName,
   GENERIC_READ,
   FILE_SHARE_READ|FILE_SHARE_DELETE,
   NULL,
   OPEN_EXISTING,
   FILE_FLAG_BACKUP_SEMANTICS,
   NULL
);


You can pass a directory handle to the following functions:
BackupRead
BackupSeek
BackupWrite
GetFileInformationByHandle
GetFileSize
GetFileTime
GetFileType
ReadDirectoryChangesW
SetFileTime


 
Ciber SLasH ©   (2003-11-24 03:00) [2]

2 DDA2

Вот тебе работающая прога по изменению даты:

program Project1;

uses
 Windows;

var
 hFile: Hwnd;
 SysTime: TSystemTime;  // структура содержащая системное время
 FileTime: TFileTime;   // структура с информацией о дате
 Rez: Boolean;
begin
 hFile := CreateFile("D:\Temp\1",GENERIC_WRITE,FILE_SHARE_WRITE,nil,OPEN_EXISTING,FILE_FLAG_BACKUP_SEMANTICS,0);
 if (hFile <> INVALID_HANDLE_VALUE) or (GetLastError = 0) then
   begin
     SysTime.wYear := 2000;
     SysTime.wMonth := 1;
     SysTime.wDay := 1;
     SysTime.wHour := 1;
     SysTime.wMinute := 1;
     SysTime.wSecond := 1;
     Rez := SystemTimeToFileTime(SysTime, FileTime);  // преобразум системное время во время папки
     { ################################################################################
       ######################## Параметры функции SetFileTime: ########################
       ################################################################################
       ## 1 - хэндл фала для которого необходимо установить дату и время             ##
       ## 2 - указатель на структуру с информацией о дате создания файла             ##
       ## 3 - указатель на структуру с информацией о дате последнего доступа к файлу ##
       ## 4 - указатель на структуру с информацией о дате последней записи в файл    ##
       ################################################################################ }
     if Rez then
       Rez := SetFileTime(hFile, nil, nil, @FileTime);
     if not Rez then
       MessageBox(0, "Не удалось изменить дату !", "Warning", MB_OK + MB_ICONWARNING)
     else
       MessageBox(0, "Дата папки была успешно изменена.", "Info", MB_OK + MB_ICONINFORMATION);
     CloseHandle(hFile)
   end
end.


 
DDA ©   (2003-11-24 18:08) [3]

Большое Спасибо Мастера


 
DDA ©   (2003-11-24 19:01) [4]

Ciber SLasH ©  
НУ не работает почему-то
HFile возвращает INVALID_HANDLE_VALUE
Указал папку "c:\temp\1"
Пробавал и с существованием этой папки и без сущ. на диске "C"
не выходит
Что делать-то?


 
DDA ©   (2003-11-24 19:05) [5]

Кстати, на файлах срабатывает ,а на папках нет
???


 
Ciber SLasH ©   (2003-11-24 20:29) [6]

2 DDA
Блин даже не знаю...
У меня приведённый кусок кода работает.
А чё после CreateFile GetLastError возвращает ?


 
Vladimir Kladov   (2003-11-24 21:37) [7]

в некоторых ос наличие "\" на конце имени директории играет решающую роль.


 
DDA ©   (2003-11-24 22:59) [8]

Странные вещи какие-то происходят
Как бы GetLastError возвращает 3 - Нет Доступа
ShowMessage((SysErrorMessage( GetLastError ) ));

когда раньше стояла как написано было
hFile := CreateFile("D:\Temp\1",GENERIC_WRITE,FILE_SHARE_WRITE,nil,OPEN_EXISTING,FILE_FLAG_BACKUP_SEMANTICS,0);
if (hFile <> INVALID_HANDLE_VALUE) or (GetLastError = 0) then

то условие IF не выполнялось
а когда поставил

hFile := CreateFile(pchar("C:\Temp"),GENERIC_WRITE,FILE_SHARE_WRITE,nil,OPEN_EXISTING,FILE_FLAG_BACKUP_SEMANTICS,0);
ShowMessage(( SysErrorMessage( GetLastError ) ));
if (hFile <> INVALID_HANDLE_VALUE) or (GetLastError = 0) then

то условие стало выполнятся но всё равно выводило что
(Не удалось изменить дату !)
Кстати пробывал и "\" и "\." и "\.."
когда ставил в конце "\" то
ShowMessage(( SysErrorMessage( GetLastError ) ));
выводило "Системе не удается найти указаный путь"

У меня 98se Delphi 6
Фиг знает почему у меня не работает


 
DDA ©   (2003-11-24 23:01) [9]

Почему же не работает - то?
Какие у вас ОС?


 
DDA ©   (2003-11-24 23:10) [10]

Извиняюсь-ошибочно написал
ShowMessage((SysErrorMessage( GetLastError ) ));
выдает 5 "Нет доступа"
3 ("Системе не удается найти указаный путь")выдает когда
прописываю в программу стороку
ShowMessage((SysErrorMessage( GetLastError ) ));
между HFile и условием первым


 
DDA ©   (2003-11-24 23:33) [11]

Проверил в XP работает
Это случайно не из-за этого

(Help to CreateFile)
FILE_FLAG_BACKUP_SEMANTICS
Windows NT only: Indicates that the file is being opened or created for a backup or restore operation. The operating system ensures that the calling process overrides file security checks, provided it has the necessary permission to do so. The relevant permissions are SE_BACKUP_NAME and SE_RESTORE_NAME.You can also set this flag to obtain a handle to a directory. A directory handle can be passed to some Win32 functions in place of a file handle.


 
Ciber SLasH ©   (2003-11-25 02:11) [12]

2 DDA:
Да верно этот параметр только в NT. У меня стоит WinXP, поэтому не было возможности проверить код под Win9x.
Попробуй последний параметр поменять на: FILE_ATTRIBUTE_DIRECTORY.


 
DDA ©   (2003-11-25 19:08) [13]

попробывал FILE_ATTRIBUTE_DIRECTORY - не помогло
я даже все переменные функции CreateFile (2 3 5 6 переменные)
поставил в цикл(вышло где-то 765 комбинаций) и то не сработало ни на одной комбинации
Бли ,Что же делать как же быть
Кто-нибудь попробуйте код программы сверху на ОС 98Win
Может у меня что - нибудь тупит



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

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

Наверх




Память: 0.5 MB
Время: 0.023 c
3-1082445302
TL
2004-04-20 11:15
2004.05.16
Query


1-1083709932
spogi
2004-05-05 02:32
2004.05.16
Block in XP


1-1083717442
kaif
2004-05-05 04:37
2004.05.16
string в структуре и динамический массив таких структур.


1-1083219223
GIL
2004-04-29 10:13
2004.05.16
Форма хочет быть неполноценной MDI


1-1083078734
td
2004-04-27 19:12
2004.05.16
про dll совсем элементарное %)