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 ..
CD , Harddisk Boş Alan ve Toplam Boyut Hesaplaması
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;
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;
Memik YANIK - http://www.memikyanik.com
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;

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;
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.
Memik YANIK - http://www.memikyanik.com
- fatihtolgaata
- Üye
- Mesajlar: 382
- Kayıt: 04 Mar 2004 09:46
- Konum: K.çekmece / İstanbul
- İletişim:
Memik beyin söylediğine ek olarak GetDiskFreeSpaceEx delphi rutinini kullanabilirsin. Yardım dosyasında şu şekilde tanımlandığı yazıyor.
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.
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 Win32 versiyonu
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;
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