Delphi Can

Orjinalini görmek için tıklayınız: Delphi Android Sayı Karmaşası [Çözüldü]
Şu anda (Arşiv) modunu görüntülemektesiniz. Orjinal Sürümü Görüntüle internal link
Merhaba Arkadaşlar

Android cihazlar için geliştiridiğim projede dosya manager tarzı bir uygulama yazdım ama dosya boyutu bilgilendirmesi ile ilgili sorunlar yaşamaktayım. Barış atalay hocanın blogunda bulunan dosya boyutu hesaplaması için kullanılan bir hazır kodu kullanarak dosya boyutunu hesaplatıp listview içinde detail bölümünde yayınaya biliyorum. Fakat 1 gbtan sonra bir sayı karmaşası oluşuyor ve 2,440 gb olan bir dosyayı -1796328136 Byt şeklinde gösteriyor. Önce integer değerinden yaptığını düşündüm ama int64 felan yapmama rağmen sonuç değişmedi. Bu hatayı düzeltmek için nasıl bir yol izlemeliyim. Şimdiden yardımlarınız için teşekkürler. (Not: Delphi 10.1.2 Berlin kullanıcısıyım.)

function dosyaboyutubul(yol:string):String;
var
dosya:TFileStream;
dsize:Integer;
strSize:string;
begin
dosya:=TFileStream.Create(yol,fmOpenRead);
dsize:=dosya.Size;
if dSize < 1024 then
   begin
   strSize:=' Byt'
   end;
if (dsize div 1024) > 0 then
   begin
     strSize := ' Kb';
     dsize := dsize div 1024;
   end;
 if (dsize div 1024) > 0 then
   begin
     strSize := ' Mb';
     dsize := dsize div 1024;
   end;
    if (dsize div 1024) > 0 then
   begin
     strSize := ' Gb';
     dsize := dsize div 1024;
   end;



Result:='Boyut :'+inttostr(dsize) + strsize;
FreeAndNil(dosya);
end;
Yine de sorun Integer'dan kaynaklı gibi görünüyor. İlk olarak TFileStream'in Size değişkeni Int64 tipinde. Dolayısıyla siz de değişkeninizi böyle tanımlamalısınız.
Integer işaretli bir sayıdır ve -2147483648 ile 2147483647 arasında değer alabilir. Bu da max. 2 GB'lık bir dosya boyutunu okuyabileceğiniz anlamına gelir.
Aynen hocam sıkıntı oradan kaynaklanıyormuş. Hata bendeymiş Smile bunu bir çok yerde kullanıyordum şimdi hepsini düzenlemek gerekecek.