# Native Code > برنامه نویسی در Delphi > مباحث عمومی دلفی و پاسکال >  تبدیل گیگابایت به بایت

## AliReza Vafakhah

سلام دوستان 

تا حالا خیلی شده که حجم فایل و فولدرهایی در ویندوزتون رو ببینید ، در هنگام نمایش حجم در تب 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

خب برای تبدیل بایت به کیلو بایت ، مگا بایت ، گیگا بایت هر بار عددت رو برا 1024 تقسیم کن
یعنی عدد بایت رو تقسیم بر 1024 کنی کیلو بایت به دست میاد و عدد کیلو بایت رو بر 1024 تقسیم کنی مگا بایت به دست میاد و عدد مگا بایت رو بر 1024 تقسیم کنی گیگا بایت به دست میاد
حالا تو هر مرحله دیدی که عدد کوچیکتر از 1024 هست عمل تقسیم رو ادامه نده و واحد صحیح رو نمایش بده

----------


## AliReza Vafakhah

> خب برای تبدیل بایت به کیلو بایت ، مگا بایت ، گیگا بایت هر بار عددت رو برا 1024 تقسیم کن
> یعنی عدد بایت رو تقسیم بر 1024 کنی کیلو بایت به دست میاد و عدد کیلو بایت رو بر 1024 تقسیم کنی مگا بایت به دست میاد و عدد مگا بایت رو بر 1024 تقسیم کنی گیگا بایت به دست میاد
> حالا تو هر مرحله دیدی که عدد کوچیکتر از 1024 هست عمل تقسیم رو ادامه نده و واحد صحیح رو نمایش بده


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

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

به هر حال مرسی

----------


## gbg

منظورم این بود

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

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

----------

