これは、Delphi/FreepascalからBytesizeのポートです。
TByteSize 、表現されている値のあいまいさを削除することにより、コードのバイトサイズ表現を容易にするユーティリティ「レコード」です。
TByteSize 、 System.TimeSpan.TTimeSpanが時間に存在するものをバイトすることです。
このプロジェクトは、Delphi 10 Seattle Update 1を使用して作成されましたが、2009年のDelphiバージョンとフリーパスカル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 「オブジェクト」には、最大のメトリックプレフィックスシンボルと値を表す2つのプロパティも含まれています。
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メソッドを使用します。デフォルトの数字形式は#.##です。これは、2つの小数点以下の場所に番号を丸めます。
シンボル形式と数字形式を含めることができます。
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テストフレームワークの開発者と、単体テストを簡素化するツールを作成するためのTestInsightのおかげで。