Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > [ "Начинающим" ]
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 01.12.2008, 10:16
antonKKEP antonKKEP вне форума
Прохожий
 
Регистрация: 19.11.2008
Сообщения: 18
Репутация: 10
Вопрос Размер файла

Как узнать размер файла, если он более 4 Гб?
Ответить с цитированием
  #2  
Старый 01.12.2008, 23:35
Аватар для hkdkest
hkdkest hkdkest вне форума
Начинающий
 
Регистрация: 06.05.2008
Адрес: Рязань
Сообщения: 180
Репутация: 10
По умолчанию

Цитата:
Сообщение от antonKKEP
Как узнать размер файла, если он более 4 Гб?

А эта функция разве не подойдет?
Как определить размер файла
__________________
Делаю курсовые и лабораторные на Delphi, GPSS, Assembler, C++.
Заказать и почитать отзывы можно на сайте, который указан в этой теме
Дешево!
Ответить с цитированием
  #3  
Старый 02.12.2008, 00:01
san-46 san-46 вне форума
Активный
 
Регистрация: 25.04.2008
Сообщения: 383
Репутация: 33
По умолчанию

Цитата:
Сообщение от hkdkest
А эта функция разве не подойдет?
Вполне подойдет, но есть "подводный камень". Тип возвращаемого значения этой функции должен быть Int64. Тип Integer для файлов большого размера (более 1.5 Гб) не подходит.
__________________
Не забывайте делать резервные копии
Ответить с цитированием
  #4  
Старый 02.12.2008, 01:02
Burka Burka вне форума
Начинающий
 
Регистрация: 10.06.2007
Сообщения: 163
Репутация: 10
По умолчанию

не знаю работает или нет, просто нашел такой вариант
Код:
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  
Старый 03.12.2008, 10:48
k@Z@k k@Z@k вне форума
Новичок
 
Регистрация: 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.
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 10:35.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter