15 мая 2023 года "Исходники.РУ" отмечают своё 23-летие!
Поздравляем всех причастных и неравнодушных с этим событием!
И огромное спасибо всем, кто был и остаётся с нами все эти годы!

Главная Форум Журнал Wiki DRKB Discuz!ML Помощь проекту




Как определить размер файла

Способ 1:

//Если файл не существует, то вместо размера файла функция вернёт -1
//========================================================
function GetFileSize(FileName: String): Integer;
var
  FS: TFileStream;
begin
  try
    FS := TFileStream.Create(Filename, fmOpenRead);
  except
    Result := -1;
  end;
  if Result <> -1 then Result := FS.Size;
  FS.Free;
end;
//========================================================

//Пример использования функции:
//==========================================================
procedure TForm1.FormCreate(Sender: TObject);
begin
  ShowMessage(IntToStr(GetFileSize('c:\prova.pdf')));
end;
//==========================================================

 

Способ 2:

function GetFileSizeByName(FileName: String): Integer;
var
  FindData: TWin32FindData;
  hFind: THandle;
begin
  Result := -1;
  hFind := FindFirstFile(PChar(FileName), FindData);
  if hFind <> INVALID_HANDLE_VALUE then
  begin
    Windows.FindClose(hFind);
    if (FindData.dwFileAttributes and FILE_ATTRIBUTE_DIRECTORY) = 0 then
      Result := FindData.nFileSizeLow;
  end;
end;

 

 

Способ 3:

(Прислал: Andrey)

Function GetFileSize(namefile : string) : Integer;
Var
InfoFile : TSearchRec;
AttrFile : Integer;
ErrorReturn : Integer;
Begin
AttrFile := $0000003F; {Any file}
ErrorReturn := FindFirst(namefile,AttrFile,InfoFile);
if ErrorReturn <> 0 Then Result := -1 {в случае, если файл не найден}
else Result := InfoFile.Size; {Размер файла в байтах}
FindClose(InfoFile);
End;