|
#1
|
|||
|
|||
Размер файла
Как узнать размер файла, если он более 4 Гб?
|
#2
|
||||
|
||||
Цитата:
А эта функция разве не подойдет? Как определить размер файла Делаю курсовые и лабораторные на Delphi, GPSS, Assembler, C++. Заказать и почитать отзывы можно на сайте, который указан в этой теме Дешево! |
#3
|
|||
|
|||
Цитата:
Не забывайте делать резервные копии |
#4
|
|||
|
|||
не знаю работает или нет, просто нашел такой вариант
Код:
function FileSize_(FName: string): int64; var ff: _win32_find_dataa; hFind: hwnd; begin hFind := FindFirstfile(pchar(FName), ff); if (INVALID_HANDLE_VALUE <> hFind) then result := (ff.nFileSizeHigh shl 32) + ff.nFileSizeLow end; |
#5
|
|||
|
|||
Код:
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. |