Форум: "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.044 c