Dies ist ein Bytesize -Port nach Delphi/Freepascal.
TByteSize ist ein Dienstprogramm "Datensatz", das die Darstellung der Bytegröße in Code erleichtert, indem die Mehrdeutigkeit des daraus erstellten Wertes entfernt wird.
TByteSize ist zu Bytes, was System.TimeSpan.TTimeSpan zu Zeit ist.
Dieses Projekt wurde mit Delphi 10 Seattle Update 1 erstellt, sollte jedoch in jeder Delphi -Version von 2009 und Freepascal 3.0.0 nach oben kompilieren.
Ohne TByteSize :
const
MaxFileSizeMBs = 1.5 ;
// I need it in KBs!
var
kilobytes: Double;
begin
kilobytes := MaxFileSizeMBs * 1024 ;
end ; Mit ByteSize :
var
MaxFileSize: TByteSize;
begin
MaxFileSize := TByteSize.FromMegaBytes( 1.5 );
end ;
// I have it in KBs!
MaxFileSize.KiloBytes; TByteSize verhält sich wie jeder andere record , der durch einen numerischen Wert unterstützt wird.
// 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 ; Sie können ein ByteSize -Objekt aus bits , bytes , kilobytes , megabytes , gigabytes und terabytes erstellen.
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 );
Ein TByteSize -Objekt enthält Darstellungen in bits , bytes , kilobytes , megabytes , gigabytes , terabytes und 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 ; Ein TByteSize -Objekt enthält auch zwei Eigenschaften, die das größte metrische Präfix -Symbol und -wert darstellen.
var
maxFileSize: TByteSize;
begin
maxFileSize := TByteSize.FromKiloBytes( 10 );
maxFileSize.LargestWholeNumberSymbol; // "KB"
maxFileSize.LargestWholeNumberValue; // 10
end ; Alle String -Parsen ( String to TByteSize ) -Operationen sind so lokalisiert, dass sie den zahlreichen Dezimaltrennzeichen des derzeit festgelegten Gebietsschemas verwenden.
TByteSize verfügt über eine praktische ToString -Methode, die das größte metrische Präfix verwendet, dessen Wert größer oder gleich 1 ist.
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 Die ToString -Methode akzeptiert einen einzelnen string -Parameter, um die Ausgabe zu formatieren. Das Formatierer kann das Symbol des Anzeige von Wert enthalten: b , B , KB , MB , GB , TB , PB . Das Formatierer verwendet die eingebaute FormatFloat -Methode. Das Standardnummernformat ist #.## , das die Nummer auf zwei Dezimalstellen rundet.
Sie können Symbol- und Zahlenformate einfügen.
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 hat eine Parse und TryParse -Methode.
Wie bei anderen TryParse -Methoden gibt ByteSize.TryParse den boolean Wert zurück, der angibt, ob die Parsen erfolgreich war oder nicht. Wenn der Wert analysiert wird, wird er für den out Parameter ausgegeben.
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
Unit Tests can be found in ByteSizeLib.Tests Folder.
The unit tests makes use of DUnitX and TestInsight.
###Lizenz
Diese "Software" ist unter MIT License (MIT) lizenziert.
1MhFfW7tDuEHQSgie65uJcAfJgCNchGeKf0x6c1DC21aeC49A822A4f1E3bf07c623C2C1978a98345367-40###Abschluss
Besonderer Dank geht an Omar Khudeira für diese großartige Bibliothek. (Dank an die Entwickler von Dunitx Tests Framework und TestInsight zum Erstellen von Tools, die Unit -Tests vereinfachen.