هذا هو منفذ بايت إلى 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 واحدة لتنسيق الإخراج. يمكن أن يحتوي التنسيق على رمز القيمة لعرضه: 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###خاتمة
شكر خاص لعمر خوديرا لهذه المكتبة الرائعة. (بفضل مطوري إطار اختبار Dunitx و TestInsight لصنع الأدوات التي تبسط اختبار الوحدة.