 
			
				03.12.2008, 10:48
			
			
			
		  
	 | 
	
		
		
		
			
			| 
			
				
				
				 Новичок 
				
				
			 | 
			  | 
			
				
				
					Регистрация: 31.07.2007 
					
					
					Сообщения: 55
 
				
					Репутация: 12 
					    
				 
				
			 | 
		 
		 
		
	 | 
	
	
	
		
			
			
				 
				
			 
			 
			
		
		
		
		
	Код: 
	unit InfoFiles;
interface
uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs,registry;
  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;
implementation
 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;
end. 
  
		
	
		
		
		
		
		
	
		
			
 
			
			
			
				 
			
			
			
			
		 
		
	
	
	 |