Fórum Retornar o Tamanho do HD #198445
02/12/2003
0
Alguém sabe como retornar o tamanho [b:7b25e307d9]total [/b:7b25e307d9]e [b:7b25e307d9]livre [/b:7b25e307d9]do HD?
valeu
valeu
Adriano Santos
Curtir tópico
+ 0
Responder
Posts
03/12/2003
Deus
Eis aqui uma função que vai te dar uma força.. dando mais do que você pediu! ;)
Para executá-la, é fácil. Digamos que você quer saber o tamanho total do drive C. Para isso, você usa uma variável do tipo REAL (não Integer), e faz:
O valor que vai no segundo parâmetro (iDados) está explicitado dentro do código. Ele pode assumir valores de 0 até 7, e cada valor q vc colocar pra iDados retorna uma coisa diferente. Suponha, por exemplo, que você quer o nome do drive C. Para isso, você cria uma variável String e faz:
Fácil, não? Espero que tenha ajudado!! :) Abraços, dEUS
function PegaDados(Drive: String; iDado: Integer): Variant; var fulldrive :string[3]; tmp_drive :array[0..2] of char; Tmp_SectorsPerCluster, Tmp_BytesPerSector, Tmp_FreeClusters, Tmp_Clusters :DWORD; VolName :array[0..255] of Char; SerialNumber :DWORD; MaxCLength :DWORD; FileSysFlag :DWORD; FileSysName :array[0..255] of Char; begin fulldrive := Drive + ´:\´; StrPCopy(tmp_drive, fulldrive); try GetDiskFreeSpace(tmp_drive, Tmp_SectorsPerCluster, Tmp_BytesPerSector, tmp_FreeClusters, Tmp_Clusters) except end; GetVolumeInformation(tmp_drive, VolName, 255, @SerialNumber, MaxCLength, FileSysFlag, FileSysName, 255); (* Possibilidades de iDado: 0 - Setores por Cluster; 1 - Bytes por Setor; 2 - Clusters Livres; 3 - Quantidade de Clusters; 4 - Espaço Livre em Disco; 5 - Espaço Total em Disco; 6 - Nome do Volume; 7 - Número de Série do Disco; *) Case iDado of 0: Result := Tmp_SectorsPerCluster; 1: Result := Tmp_BytesPerSector; 2: Result := Tmp_FreeClusters; 3: Result := Tmp_Clusters; 4: Result := Tmp_FreeClusters * Tmp_BytesPerSector * Tmp_SectorsPerCluster; 5: Result := Tmp_Clusters * Tmp_BytesPerSector * Tmp_SectorsPerCluster; 6: Result := String(VolName); 7: Result := IntToHex(SerialNumber, 8); end; end;
Para executá-la, é fácil. Digamos que você quer saber o tamanho total do drive C. Para isso, você usa uma variável do tipo REAL (não Integer), e faz:
variavel := PegaDados(´C´, 4);
O valor que vai no segundo parâmetro (iDados) está explicitado dentro do código. Ele pode assumir valores de 0 até 7, e cada valor q vc colocar pra iDados retorna uma coisa diferente. Suponha, por exemplo, que você quer o nome do drive C. Para isso, você cria uma variável String e faz:
variavel := PegaDados(´C´, 7);
Fácil, não? Espero que tenha ajudado!! :) Abraços, dEUS
Responder
Gostei + 0
03/12/2003
Adriano Santos
Eu acabei usando DiskFree e DiskSize, mais fácil ainda...
valeu
valeu
Responder
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)