1 Вариант
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 |
function TSendFileInChunks.GetFileSize(AFilePath: String): Int64; var FS: TFileStream; begin try Result:=-1; FS := TFileStream.Create(AFilePath, fmOpenRead); try Result:=FS.Size; finally FS.Free; end; except on E:EStreamError do begin Result := -1; raise Exception.Create('This is EStreamError EClassName'+E.ClassName+' ' +'EMessage '+E.Message); end; on E:Exception do begin raise Exception.Create(E.ClassName+' Exception Raised : ' +#13#10+#13#10+E.Message); end; end; |
2 Вариант
Функция выдаст размер файла в виде строки и числа
Результат в байтах будет в переменной FileSize
Результат в формате string, например, “454 МБ” будет в переменной Result данной функции
При возникновении ошибки отработает блок try except, а также блок try finally поможет избежать утечек памяти
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 |
function GetFileSize(FileName: String; var FileSize:Int64): string; var FS: TFileStream; SizeInBytes:Int64; begin try FS := TFileStream.Create(Filename, fmOpenRead); try FileSize:=FS.Size; if FileSize<1024 then Result:=FileSize.ToString()+' Bytes'; if (FileSize>1024) and (FileSize<(1024*1024)) then Result:=(Trunc(FileSize/1024)).ToString()+' KB'; if (FileSize>(1024*1024)) {and (FileSize<(1024*1024*1024))} then Result:=(Trunc(FileSize/(1024*1024))).ToString()+' MB'; finally FS.Free; end; except on E:Exception do begin FileSize := -1; Result:='-1'; raise Exception.Create(E.ClassName+' Exception Raised : ' +#13#10+#13#10+E.Message); end; end; end; |