이것은 Delphi/Freepascal에 바이트 크기의 항구입니다.
TByteSize 표현되는 값의 모호성을 제거하여 코드에서 바이트 크기 표현을 더 쉽게 할 수있는 유틸리티 "레코드"입니다.
TByteSize 는 System.TimeSpan.TTimeSpan 이 시간까지 바이트를 바이트하는 것입니다.
이 프로젝트는 Delphi 10 Seattle Update 1을 사용하여 만들어졌지만 2009 년부터 Freepascal 3.0.0의 델파이 버전으로 컴파일해야합니다.
TByteSize 없이 :
const
MaxFileSizeMBs = 1.5 ;
// I need it in KBs!
var
kilobytes: Double;
begin
kilobytes := MaxFileSizeMBs * 1024 ;
end ; ByteSize 로 :
var
MaxFileSize: TByteSize;
begin
MaxFileSize := TByteSize.FromMegaBytes( 1.5 );
end ;
// I have it in KBs!
MaxFileSize.KiloBytes; TByteSize 숫자 값으로 뒷받침되는 다른 record 와 마찬가지로 동작합니다.
// Add
var
monthlyUsage, currentUsage, total, delta, : TByteSize;
begin
monthlyUsage := TByteSize.FromGigaBytes( 10 );
currentUsage := TByteSize.FromMegaBytes( 512 );
total := monthlyUsage + currentUsage;
total.Add(ByteSize.FromKiloBytes( 10 ));
total.AddGigaBytes( 10 );
// Subtract
delta := total.Subtract(TByteSize.FromKiloBytes( 10 ));
delta := delta - TByteSize.FromGigaBytes( 100 );
delta := delta.AddMegaBytes(- 100 );
end ; bits , bytes , kilobytes , megabytes , gigabytes 및 terabytes 에서 ByteSize "객체"를 만들 수 있습니다.
TByteSize.Create( 1.5 ); // Constructor takes in bytes
// Static Constructors
TByteSize.FromBits( 10 ); // Bits are whole numbers only
TByteSize.FromBytes( 1.5 ); // Same as constructor
TByteSize.FromKiloBytes( 1.5 );
TByteSize.FromMegaBytes( 1.5 );
TByteSize.FromGigaBytes( 1.5 );
TByteSize.FromTeraBytes( 1.5 );
TByteSize.FromPetaBytes( 1.5 );
TByteSize "객체"에는 bits , bytes , kilobytes , megabytes , gigabytes , terabytes 및 petabytes 의 표현이 포함되어 있습니다.
var
maxFileSize: TByteSize;
begin
maxFileSize := TByteSize.FromKiloBytes( 10 );
maxFileSize.Bits; // 81920
maxFileSize.Bytes; // 10240
maxFileSize.KiloBytes; // 10
maxFileSize.MegaBytes; // 0.009765625
maxFileSize.GigaBytes; // 9.53674316e-6
maxFileSize.TeraBytes; // 9.31322575e-9
end ; TByteSize "객체"에는 가장 큰 메트릭 접두사 기호와 값을 나타내는 두 가지 속성이 포함되어 있습니다.
var
maxFileSize: TByteSize;
begin
maxFileSize := TByteSize.FromKiloBytes( 10 );
maxFileSize.LargestWholeNumberSymbol; // "KB"
maxFileSize.LargestWholeNumberValue; // 10
end ; 모든 문자열 구문 분석 ( String to TByteSize ) 작업은 현재 설정된 로케일의 소수 분리기를 사용하도록 현지화됩니다.
TByteSize 값이 1보다 큰 가장 큰 메트릭 접두사를 사용하는 편리한 ToString 방법이 제공됩니다.
TByteSize.FromBits( 7 ).ToString; // 7 b
TByteSize.FromBits( 8 ).ToString; // 1 B
TByteSize.FromKiloBytes(. 5 ).ToString; // 512 B
TByteSize.FromKiloBytes( 1000 ).ToString; // 1000 KB
TByteSize.FromKiloBytes( 1024 ).ToString; // 1 MB
TByteSize.FromGigabytes(. 5 ).ToString; // 512 MB
TByteSize.FromGigabytes( 1024 ).ToString; // 1 TB ToString 메소드는 단일 string 매개 변수를 수용하여 출력을 포맷합니다. 포피터는 표시 할 값의 상징을 포함 할 수 있습니다 : b , B , KB , MB , GB , TB , PB . Formatter는 내장 FormatFloat 메소드를 사용합니다. 기본 번호 형식은 #.## 이며 숫자를 두 자리 자리로 반올림합니다.
기호 및 숫자 형식을 포함 할 수 있습니다.
var
b: TByteSize;
begin
b := TByteSize.FromKiloBytes( 10.505 );
// Default number format is #.##
b.ToString( ' KB ' ); // 10.52 KB
b.ToString( ' MB ' ); // .01 MB
b.ToString( ' b ' ); // 86057 b
// Default symbol is the largest metric prefix value >= 1
b.ToString( ' #.# ' ); // 10.5 KB
// All valid values of double.ToString(string format) are acceptable
b.ToString( ' 0.0000 ' ); // 10.5050 KB
b.ToString( ' 000.00 ' ); // 010.51 KB
// You can include number format and symbols
b.ToString( ' #.#### MB ' ); // .0103 MB
b.ToString( ' 0.00 GB ' ); // 0 GB
b.ToString( ' #.## B ' ); // 10757.12 B
end ; ByteSize 에는 Parse 및 TryParse 메소드가 있습니다.
다른 TryParse 메소드와 마찬가지로, ByteSize.TryParse 파싱이 성공했는지 여부를 나타내는 boolean 값을 반환합니다. 값이 구문 분석되면 제공된 out 매개 변수로 출력됩니다.
var
output: TByteSize;
begin
TByteSize.TryParse( ' 1.5mb ' , output);
// Invalid
TByteSize.Parse( ' 1.5 b ' ); // Can't have partial bits
// Valid
TByteSize.Parse( ' 5b ' );
TByteSize.Parse( ' 1.55B ' );
TByteSize.Parse( ' 1.55KB ' );
TByteSize.Parse( ' 1.55 kB ' ); // Spaces are trimmed
TByteSize.Parse( ' 1.55 kb ' );
TByteSize.Parse( ' 1.55 MB ' );
TByteSize.Parse( ' 1.55 mB ' );
TByteSize.Parse( ' 1.55 mb ' );
TByteSize.Parse( ' 1.55 GB ' );
TByteSize.Parse( ' 1.55 gB ' );
TByteSize.Parse( ' 1.55 gb ' );
TByteSize.Parse( ' 1.55 TB ' );
TByteSize.Parse( ' 1.55 tB ' );
TByteSize.Parse( ' 1.55 tb ' );
TByteSize.Parse( ' 1,55 kb ' ); // de-DE culture
end ;### 단위 테스트
Unit Tests can be found in ByteSizeLib.Tests Folder.
The unit tests makes use of DUnitX and TestInsight.
###특허
이 "소프트웨어"는 MIT License (MIT) 에 따라 라이센스가 부여됩니다.
1MhFfW7tDuEHQSgie65uJcAfJgCNchGeKf0x6c1DC21aeC49A822A4f1E3bf07c623C2C1978a98345367-40###결론
이 멋진 도서관을 위해 Omar Khudeira에게 특별한 감사를드립니다. (Dunitx Testing Framework의 개발자 덕분에 단위 테스트를 단순화하는 도구를 만들기위한 TestInsight 덕분입니다.