CD , Harddisk Boş Alan ve Toplam Boyut Hesaplaması

Delphi .net ve .net ile ilgili konuları buraya yazabilirsiniz.
Cevapla
Baris
Üye
Mesajlar: 7
Kayıt: 16 Eki 2006 08:52
Konum: İSTANBUL

CD , Harddisk Boş Alan ve Toplam Boyut Hesaplaması

Mesaj gönderen Baris »

SeLam ArkadaşLar...

Yapmış oLduğum Proje İçin CD Rom'un İçindeki CD 'nin Ne Kadarlık Boş Alanı ve Ne Kadarlık Toplam Boyutu Olduğunu NasiL ÖğrenebiLirim..

Şimdiden TşkLer ..
memiky
Üye
Mesajlar: 116
Kayıt: 17 Kas 2004 01:52
İletişim:

Mesaj gönderen memiky »

Var
Cluster_sektor : DWord;
Byte_sektor : DWord;
Bos_sektor : DWord;
Toplam_sektor : DWord;
Bos_alan : Double;
Toplam_alan : Double;
begin
GetDiskFreeSpace('C:\', Cluster_sektor, Byte_sektor, Bos_sektor, Toplam_sektor);
TextBox1.Text := Convert.ToString(Cluster_sektor);
TextBox2.Text := Convert.ToString(Byte_sektor);
TextBox3.Text := Convert.ToString(Bos_sektor);
TextBox4.Text := Convert.ToString(Toplam_sektor);
Bos_alan := Int(((Bos_sektor * Byte_sektor) /1024) * Cluster_sektor /1024);
Toplam_alan :=Int( ((Toplam_sektor * Byte_sektor) / 1024)* Cluster_sektor/1024);
TextBox5.Text := Convert.ToString(Bos_alan);
TextBox5.Text := System.String.Concat(TextBox5.Text, ' MB');
TextBox6.Text := Convert.ToString(Toplam_alan);
TextBox6.Text := System.String.Concat(TextBox6.Text, ' MB');
end;
Baris
Üye
Mesajlar: 7
Kayıt: 16 Eki 2006 08:52
Konum: İSTANBUL

Mesaj gönderen Baris »

Hocam Cvp İçin Tşk Ederim Sanırım Başlığı Yanlış Formda Açmışım Farkında oLmadan :( Ama Senin Verdiğin Koddan Yola Çıkarak Delphi7 de Bende Bir Kod oLuşturdum.Kod 20 Gb lık İki Tane Harddiskimde(Bölünmüş) Düzgün Sonuçlar Veriyor Fakat 160 Gb lık Harddiskimde Sonucu Doğru Alamıyorum Kod Aşşağıdaki Gibidir..

Var
Cluster_sektor : DWord;
Byte_sektor : DWord;
Bos_sektor : DWord;
Toplam_sektor : DWord;
Bos_alan : Double;
Toplam_alan : Double;
begin
GetDiskFreeSpace('C:\', Cluster_sektor, Byte_sektor, Bos_sektor, Toplam_sektor);
//edit1.Text := FloatToStr(Cluster_sektor);
//edit2.Text := FloatToStr(Byte_sektor);
//edit3.Text := FloatToStr(Bos_sektor);
//edit4.Text := FloatToStr(Toplam_sektor);
Bos_alan := Int(((Bos_sektor * Byte_sektor) /1024) * Cluster_sektor /1024);
Toplam_alan :=Int( ((Toplam_sektor * Byte_sektor) / 1024)* Cluster_sektor/1024);
edit5.Text := FloatToStr(Bos_alan / 1024);
//edit5.Text := System.String.Concat(TextBox5.Text, ' MB');
edit6.Text := FloatToStr(Toplam_alan / 1024);
//edit6.Text := System.String.Concat(TextBox6.Text, ' MB');
end;
memiky
Üye
Mesajlar: 116
Kayıt: 17 Kas 2004 01:52
İletişim:

Mesaj gönderen memiky »

Barıs bendeki bilgisayarlardaki disklerin hepsi daha küçük kapasiteye sahip dolayısıyla karşılaştığın hatayı test edemedim. Bu durumda GetDiskFreeSpace() fonksiyonuna parametre olarak verdiğin değişkenlerin tiplerini Cardinal, Bos_alan ve Toplam_alan adını verdiğn değişkenleri ise Currency yapabilirsin.
Kullanıcı avatarı
fatihtolgaata
Üye
Mesajlar: 382
Kayıt: 04 Mar 2004 09:46
Konum: K.çekmece / İstanbul
İletişim:

Mesaj gönderen fatihtolgaata »

Memik beyin söylediğine ek olarak GetDiskFreeSpaceEx delphi rutinini kullanabilirsin. Yardım dosyasında şu şekilde tanımlandığı yazıyor.

Kod: Tümünü seç

ms-help://borland.bds5/delphivclwin32/SysUtils_GetDiskFreeSpaceEx.html

Kod: Tümünü seç

GetDiskFreeSpaceEx: function (Directory: PChar; var FreeAvailable, TotalSpace: TLargeInteger; TotalFree: PLargeInteger): Bool stdcall = nil;
Bu rutini kullanabilmek için SysUtils, uses kısmında bulunması gerek. TLargeInteger dediği şey Int64'dür. Böylece alacağın sonuç yanlış hesaplamadım ise 16 exa-byte'a kadar sonuç dönderebilir.
selamitsp
Üye
Mesajlar: 4
Kayıt: 03 Eki 2007 08:44
Konum: Programcı, Web Developer

bu Win32 versiyonu

Mesaj gönderen selamitsp »

uses
Windows;

{ ... }
var
lpFreeBytesAvailableToCaller, lpTotalNumberOfBytes, lpTotalNumberOfFreeBytes:
PLargeInteger;
begin
New(lpFreeBytesAvailableToCaller);
New(lpTotalNumberOfBytes);
New(lpTotalNumberOfFreeBytes);
try
GetDiskFreeSpaceEx('C:', lpFreeBytesAvailableToCaller, lpTotalNumberOfBytes,
lpTotalNumberOfFreeBytes);
finally
Dispose(lpFreeBytesAvailableToCaller);
Dispose(lpTotalNumberOfBytes);
Dispose(lpTotalNumberOfFreeBytes);
end;
end;
FT
Cevapla