Модераторы: Poseidon, Snowy, bems, MetalFan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Как узнать сведения о файле 
:(
    Опции темы
-Сергей-
Дата 7.4.2004, 07:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 224
Регистрация: 2.8.2003
Где: Россия

Репутация: нет
Всего: 1



Как узнать сведения о файле (дату/время создания, изменения, последнего открытия, размер, атрибуты, и т.д.)?
--------------------
Для утвердительного ответа достаточно лишь одного слова - "да". Все прочие слова придуманы, чтобы сказать "нет".
PM MAIL WWW ICQ MSN   Вверх
andrey_post
  Дата 7.4.2004, 08:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 109
Регистрация: 23.12.2003
Где: Екатеринбург

Репутация: нет
Всего: нет



Код

Type TFileInfo=record
Exists:boolean;//true если файл найден  
Name:String; //имя файла с расширением  
ShortName:String;//DOS 8.3 имя файла  
NameNoExt:String;//имя файла без расширения  
Extension:string;//расширение файла  
AssociatedFile:string;//программа с которой ассоциирован файл  
Path:string;// путь к файлу  
ShortPath:string;// DOS 8.3 путь файла  
Drive:string;// дисковод на котором находится файл  
CreateDate:TDateTime; //время когда файл создан  
Size:Int64;// размер файла (работает для файлов и больше 2Gb)  
Attributes:record //нали?ие/отсутствие системных атрибутов    
ReadOnly:boolean;  
Hidden:boolean;  
System:boolean;  
Archive:boolean;    
end;  
 ModifyDate:TDateTime; // время последнего изменения файла  
 LastAccessDate:TDateTime; // дата последнего открытия файла  
 
end;  

 


Function ReadFileInfo(FileName:string):TFileInfo;
var ts:TSearchRec;  


Function FileTime2DateTime(FT:_FileTime):TDateTime;  
 var FileTime:_SystemTime;  
 begin  
 FileTimeToLocalFileTime(FT, FT);  
 FileTimeToSystemTime(FT,FileTime);  
 Result:=EncodeDate(FileTime.wYear, FileTime.wMonth, FileTime.wDay)+  
 EncodeTime(FileTime.wHour, FileTime.wMinute, FileTime.wSecond, FileTime.wMilliseconds);  
 end;  

 

Function AssociatedFile(FileExt:string):string;  
 var key:string;  
 begin  
 With TRegistry.create do  
 try  
 RootKey:=HKEY_CLASSES_ROOT;  
 OpenKey(FileExt, false);  
 Key:=ReadString('');  
 CloseKey;  
 OpenKey(key+'\Shell\open\command', false);  
 result:=ReadString('');  
 Closekey;  
 finally  
 free;  
 end  
 end;  

begin
Result.Name:=ExtractFileName(FileName);  
 Result.Extension:=ExtractFileExt(FileName);  
 Result.NameNoExt:=Copy(Result.Name,1,length(Result.Name)-length(Result.Extension));  
 Result.Path:=ExtractFilePath(FileName);  
 Result.Drive:=ExtractFileDrive(FileName);  
 Result.ShortPath:=ExtractShortPathName(ExtractFilePath(FileName));  
 if lowercase(Result.Extension)<>'.exe' then Result.AssociatedFile:=AssociatedFile(Result.Extension);  
 if FindFirst(FileName, faAnyFile, ts)=0 then  
 begin  
 Result.Exists:=true;  
 Result.CreateDate:=FileDateToDateTime(ts.Time);  
 Result.Size:=ts.FindData.nFileSizeHigh*4294967296+ts.FindData.nFileSizeLow;  
 Result.Attributes.ReadOnly:=(faReadOnly and ts.Attr)>0;  
 Result.Attributes.Hidden:=(faHidden and ts.Attr)>0;  
 Result.Attributes.System:=(faSysFile and ts.Attr)>0;  
 Result.Attributes.Archive:=(faArchive and ts.Attr)>0;  
 Result.ModifyDate:=FileTime2DateTime(ts.FindData.ftLastWriteTime);  
 Result.LastAccessDate:=FileTime2DateTime(ts.FindData.ftLastAccessTime);  
 Result.ShortName:=ts.FindData.cAlternateFileName;  
 Findclose(ts);  
 end  
 else  
 Result.Exists:=false;  
end;


Добавлено @ 08:20
Отслеживать изменение:

FindFirstChangeNotification, FindNextChangeNotification, FindCloseChangeNotification вместе с WaitForSingleObject
--------------------
И что бы там не происходило, не стоит воспринимать жизнь слишком всерьёз, всё равно нам из неё живыми не выбраться!!!
PM MAIL WWW ICQ   Вверх
p0s0l
Дата 7.4.2004, 09:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Г-н Посол
****


Профиль
Группа: Экс. модератор
Сообщений: 3668
Регистрация: 13.7.2003
Где: 58°38' с.ш. 4 9°41' в.д.

Репутация: 58
Всего: 112



А если больно наворотов не надо, то:
Код
var
 hFile : THandle;
 fi : BY_HANDLE_FILE_INFORMATION;
begin
 hFile := FileOpen( < имя файла > , fmShareCompat or fmOpenRead);
 GetFileInformationByHandle(hFile, fi);
 FileClose (hFile);
end;

В fi содержится время создания/измения/последнего доступа, атрибуты, размер, и некоторая другая инфа...


--------------------
С уважением, г-н Посол.
PM   Вверх
-Сергей-
Дата 16.4.2004, 15:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 224
Регистрация: 2.8.2003
Где: Россия

Репутация: нет
Всего: 1



Спасибо, выручили!
--------------------
Для утвердительного ответа достаточно лишь одного слова - "да". Все прочие слова придуманы, чтобы сказать "нет".
PM MAIL WWW ICQ MSN   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Общие вопросы"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0778 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.