Ini adalah port Bytesize ke Delphi/Freepascal.
TByteSize adalah "catatan" utilitas yang membuat representasi ukuran byte lebih mudah dengan menghapus ambiguitas nilai yang diwakili.
TByteSize adalah untuk bytes apa System.TimeSpan.TTimeSpan untuk waktu.
Proyek ini dibuat menggunakan Delphi 10 Seattle Update 1 tetapi harus dikompilasi dalam versi Delphi dari 2009 dan freepascal 3.0.0 ke atas.
Tanpa TByteSize :
const
MaxFileSizeMBs = 1.5 ;
// I need it in KBs!
var
kilobytes: Double;
begin
kilobytes := MaxFileSizeMBs * 1024 ;
end ; Dengan ByteSize :
var
MaxFileSize: TByteSize;
begin
MaxFileSize := TByteSize.FromMegaBytes( 1.5 );
end ;
// I have it in KBs!
MaxFileSize.KiloBytes; TByteSize berperilaku seperti record lain yang didukung oleh nilai numerik.
// 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 ; Anda dapat membuat ByteSize "objek" dari bits , bytes , kilobytes , megabytes , gigabytes , dan terabytes .
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 "objek" berisi representasi dalam bits , bytes , kilobytes , megabytes , gigabytes , terabytes dan 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 "objek" juga berisi dua properti yang mewakili simbol dan nilai awalan metrik terbesar.
var
maxFileSize: TByteSize;
begin
maxFileSize := TByteSize.FromKiloBytes( 10 );
maxFileSize.LargestWholeNumberSymbol; // "KB"
maxFileSize.LargestWholeNumberValue; // 10
end ; Semua operasi parsing string ( String to TByteSize ) terlokalisasi untuk menggunakan angka pemisah desimal dari lokal yang saat ini ditetapkan.
TByteSize hadir dengan metode ToString praktis yang menggunakan awalan metrik terbesar yang nilainya lebih besar dari atau sama dengan 1.
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 Metode ToString menerima parameter string tunggal untuk memformat output. Formatter dapat berisi simbol nilai yang akan ditampilkan: b , B , KB , MB , GB , TB , PB . Formatter menggunakan metode FormatFloat built in. Format angka default adalah #.## yang membulatkan nomor ke dua tempat desimal.
Anda dapat memasukkan format simbol dan angka.
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 memiliki metode Parse dan TryParse .
Seperti metode TryParse lainnya, ByteSize.TryParse mengembalikan nilai boolean yang menunjukkan apakah parsing berhasil atau tidak. Jika nilainya diuraikan, output ke parameter out yang disediakan.
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 ;Tes unit ###
Unit Tests can be found in ByteSizeLib.Tests Folder.
The unit tests makes use of DUnitX and TestInsight.
###Lisensi
"Perangkat lunak" ini dilisensikan di bawah MIT License (MIT) .
1MhFfW7tDuEHQSgie65uJcAfJgCNchGeKf0x6c1DC21aeC49A822A4f1E3bf07c623C2C1978a98345367-40###Kesimpulan
Terima kasih khusus kepada Omar Khudeira untuk perpustakaan yang luar biasa ini. (Terima kasih kepada pengembang Dunitx Testing Framework dan TestInsight untuk membuat alat yang menyederhanakan pengujian unit.