นี่คือพอร์ตของไบต์ไปยัง Delphi/freepascal
TByteSize เป็นยูทิลิตี้ "บันทึก" ที่ทำให้การแสดงขนาดไบต์ในรหัสง่ายขึ้นโดยการลบความคลุมเครือของค่าที่แสดง
TByteSize คือไบต์สิ่งที่ System.TimeSpan.TTimeSpan คือเวลา
โครงการนี้ถูกสร้างขึ้นโดยใช้ Delphi 10 Seattle Update 1 แต่ควรรวบรวมในรุ่น Delphi ใด ๆ จาก 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 ; คุณสามารถสร้าง "วัตถุ" ByteSize จาก bits bytes kilobytes megabytes gigabytes และ 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 "วัตถุ" มีการเป็นตัวแทนใน 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 มาพร้อมกับวิธี ToString ที่มีประโยชน์ซึ่งใช้คำนำหน้าเมตริกที่ใหญ่ที่สุดซึ่งมีค่ามากกว่าหรือเท่ากับ 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 วิธีการ ToString ยอมรับพารามิเตอร์ string เดียวเพื่อจัดรูปแบบเอาต์พุต Formatter สามารถมีสัญลักษณ์ของค่าที่จะแสดง: 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 และ TestInsight สำหรับการสร้างเครื่องมือที่ทำให้การทดสอบหน่วยง่ายขึ้น