Delphi - объектно-ориентированный язык программирования, разработанный компанией Borland в 1995 году. Он основан на языке программирования Pascal, но имеет более расширенные возможности и добавлены новые функции.
Delphi является интегрированной средой разработки (IDE), которая позволяет разрабатывать программное обеспечение для различных платформ, включая Windows, macOS, Android и iOS. Delphi достигает многоплатформенности с помощью...
functionGet_File_Size1(sFileToExamine: string
; bInKBytes: Boolean): string
; { for some reason both methods of finding file size return a filesize that is slightly larger than what Windows File Explorer reports } var
FileHandle: THandle; FileSize: LongWord; d1: Double; i1: Int64; begin
//a- Get file size FileHandle := CreateFile(PChar(sFileToExamine), GENERIC_READ, 0, {exclusive} nil
, {security} OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, 0); FileSize := GetFileSize(FileHandle, nil
); Result := IntToStr(FileSize); CloseHandle(FileHandle); //a- optionally report back in Kbytes if
bInKbytes = True then
begin
if
Length(Result) > 3 then
begin
Insert('.', Result, Length(Result) - 2); d1 := StrToFloat(Result); Result := IntToStr(round(d1)) + 'KB'; end
else
Result := '1KB'; end
; end
; {****************************************************************************** Thanks to Advanced Delphi Systems here's another method which works just as well returning the same results *******************************************************************************} function
Get_File_Size2(sFileToExamine: string
; bInKBytes: Boolean): string
; var
SearchRec: TSearchRec; sgPath: string
; inRetval, I1: Integer; begin
sgPath := ExpandFileName(sFileToExamine); try
inRetval := FindFirst(ExpandFileName(sFileToExamine), faAnyFile, SearchRec); if
inRetval = 0 then
I1 := SearchRec.Size else
I1 := -1; finally
SysUtils.FindClose(SearchRec); end
; Result := IntToStr(I1); end
; procedure
TForm1.Button1Click(Sender: TObject); begin
if
OpenDialog1.Execute then
label1.Caption := Get_File_Size(Opendialog1.FileName, True); end
; {*******************************************************************************} function
Get_File_Size3(const
FileName: string
): TULargeInteger; // by nico var
Find: THandle; Data: TWin32FindData; begin
Result.QuadPart := -1; Find := FindFirstFile(PChar(FileName), Data); if
(Find <> INVALID_HANDLE_VALUE) then
begin
Result.LowPart := Data.nFileSizeLow; Result.HighPart := Data.nFileSizeHigh; Windows.FindClose(Find); end
; end
; procedure
TForm1.Button1Click(Sender: TObject); begin
if
(OpenDialog1.Execute) then
ShowMessage(IntToStr(Get_File_Size3(OpenDialog1.FileName).QuadPart)); end
; {*******************************************************************************} function
Get_File_Size4(const
S: string
): Int64; var
FD: TWin32FindData; FH: THandle; begin
FH := FindFirstFile(PChar(S), FD); if
FH = INVALID_HANDLE_VALUE then
Result := 0 else
try
Result := FD.nFileSizeHigh; Result := Result shl
32; Result := Result + FD.nFileSizeLow; finally
CloseHandle(FH); end
; end
;