ورود

View Full Version : تبدیل گیگابایت به بایت



AliReza Vafakhah
جمعه 14 اسفند 1388, 01:30 صبح
سلام دوستان

تا حالا خیلی شده که حجم فایل و فولدرهایی در ویندوزتون رو ببینید ، در هنگام نمایش حجم در تب General مشاهده می کنید که حجم رو از بایت به گیگابات (اگه بیشتر از 1024 مگابایت باشه )نمایش میده .

مثلا اگر حجم یک فولدر به بایت 5,666,577,488 باشه و به گیگابایت برابر5.27 باشه.

حالا من یه Procedure نوشتم که این کار رو انجام میده ولی در دست بودن روشم شک دارم ؛ دوستان لطفا شما هم تست بزنید ، اگه اشتباه است راهنمایی کنید

با تشکر

کد :

procedure TFrmConvert.BtnConvertInbyteClick(Sender: TObject);

function GetMegaByte(const S:String):LongInt;
var
i:Integer;
sResult:string;
begin
for i := Length(S) downto 1 do
if (S[i]='.') then
Break
else
sResult:=S[i]+sResult;
Result:=StrToInt(sResult);
end;


var
byte:Int64;
GB:Integer;
const GigaByteInbyte:Int64=1073741824;
const MegaByteInbyte:LongInt=1048576;
begin
if (Trim(TxtGetGigaByteWithMegaByte.Text)='')then Exit;
try
GB:=Trunc(StrToFloat(TxtGetGigaByteWithMegaByte.Te xt));
byte:=(GigaByteInbyte*GB);
byte:=(GetMegaByte(TxtGetGigaByteWithMegaByte.Text ) * MegaByteInbyte)+(byte);
LblShow_byte.Caption:=IntToStr(byte);
except
Application.MessageBox('خطا در هنگام تبديل به بايت ', 'خطا',MB_ICONSTOP);
end;
end;

gbg
جمعه 14 اسفند 1388, 12:06 عصر
خب برای تبدیل بایت به کیلو بایت ، مگا بایت ، گیگا بایت هر بار عددت رو برا 1024 تقسیم کن
یعنی عدد بایت رو تقسیم بر 1024 کنی کیلو بایت به دست میاد و عدد کیلو بایت رو بر 1024 تقسیم کنی مگا بایت به دست میاد و عدد مگا بایت رو بر 1024 تقسیم کنی گیگا بایت به دست میاد
حالا تو هر مرحله دیدی که عدد کوچیکتر از 1024 هست عمل تقسیم رو ادامه نده و واحد صحیح رو نمایش بده

AliReza Vafakhah
جمعه 14 اسفند 1388, 14:34 عصر
خب برای تبدیل بایت به کیلو بایت ، مگا بایت ، گیگا بایت هر بار عددت رو برا 1024 تقسیم کن
یعنی عدد بایت رو تقسیم بر 1024 کنی کیلو بایت به دست میاد و عدد کیلو بایت رو بر 1024 تقسیم کنی مگا بایت به دست میاد و عدد مگا بایت رو بر 1024 تقسیم کنی گیگا بایت به دست میاد
حالا تو هر مرحله دیدی که عدد کوچیکتر از 1024 هست عمل تقسیم رو ادامه نده و واحد صحیح رو نمایش بده

دوست عزیز ممنون

تمام این مراحل را هم قبلا پشت سر گذاشتم و تبدیل معکوس را هم انجام دادم .

به هر حال مرسی

gbg
جمعه 14 اسفند 1388, 19:50 عصر
منظورم این بود


Gigabyte=FloatToStr(((Bytes) / 1024) / 1024 / 1024);

خب با repeat و if می تونی کنترل بیشتری داشته باشی مثلا اگه عدد به گیگ نمی رسید مگش رو برگردونی