Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "KOL";
Текущий архив: 2004.05.16;
Скачать: [xml.tar.bz2];

Вниз

Установить дату папке(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 вся ветка

Форум: "KOL";
Текущий архив: 2004.05.16;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.48 MB
Время: 0.036 c
14-1082625216
Roof
2004-04-22 13:13
2004.05.16
Delphi 7 подвисает при запуске проекта


3-1082582387
GanibalLector
2004-04-22 01:19
2004.05.16
Непонятки с IB...


6-1080392016
SEvgeniy
2004-03-27 15:53
2004.05.16
mailslot via internet


6-1080373573
<Lamer>
2004-03-27 10:46
2004.05.16
Как узнать IP-адрес


6-1080640211
Ozone
2004-03-30 13:50
2004.05.16
ping





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский