Página 1 de 1

Espaco disponivel

Enviado: 20 Ago 2012 22:00
por Alexandre Silva
Alguem tem uma funcao para saber o espaco disponivel no HD .. ?
O memory() nao funciona 100% ,

Devo criar uma funcao, como por.exemplo:
DIR *.exe > rel.txt e ler a ultima linha do arquivo txt para saber o espaco disponivel, ou alguem tem uma solucao melhor ??

Espaco disponivel

Enviado: 20 Ago 2012 22:36
por sygecom
Usando xHarbour:
ALERT(DiskSpace('C:',1))

Usando Clipper+CA Tools
ALERT(DISKFREE('C'))

Espaco disponivel

Enviado: 20 Ago 2012 22:41
por Pablo César
Existe a função DISKFREE("C") da CT.lib, mas também não expressa a verdade. No Harbour existe hb_DiskSpace("C:",1) chega ser bem próximo da realidade, se interessar: pegue o utilitário em anexo que irá gravar o HD_Livre.txt onde contém o valor de espaço livre o qual você poderá lê-lo de dentro da sua aplicação em Clipper.

Enquanto editava e compilava o anexo, o Leonardo tinha respondido. Bom, mesma resposta e ainda aplicativo de terceiros, espero que atenda as suas expectativas.

Em Clipper você pode fazer assim:

? Val(MemoRead("HD_Livre.txt"))

O segundo parâmetro do hb_DiskSpace, podem receber as seguintes constantes:
HB_DISK_AVAIL 0 Free disk space avialable to the application (default)
HB_DISK_FREE 1 Total free disk space
HB_DISK_USED 2 Used disk space
HB_DISK_TOTAL 3 Total disk space

Portanto se precisar podemos mudar para que receba o primeiro e o segundo paramêtros (se achar necessário).

Espaco disponivel

Enviado: 27 Ago 2012 13:06
por Alexandre Silva
Obrigado..Para o Harbour ok.

Espaco disponivel

Enviado: 27 Ago 2012 14:34
por alxsts
Olá!
Alexandre Silva escreveu:O memory() nao funciona 100%
Só para não ficar a dúvida: a função Memory(nTipo) retorna a quantidade de memória disponível, por tipo.

Espaco disponivel

Enviado: 27 Ago 2012 15:10
por Jairo Maia
Olá Alexandre,

Em Clipper você pode usar assim:

Código: Selecionar todos

Function Main()
 Local nSpaceDisk, nUnidade := 3

 /*
   Onde nUnidade 1 corresponde a A, 2 = B, 3 = C, e assim sucessivamente...
   Sem parâmetro, retorna a unidade corrente.

   PS: O retorno é em bytes exatamente como no comando dir, sem os separadores.
 */

 nSpaceDisk := DISKSPACE()

 Clear Screen
 ?
 @ 2,2 Say Tran( nSpaceDisk, "@E 999,999,999,999,999" )
 ?

Return Nil

Espaco disponivel

Enviado: 27 Ago 2012 15:45
por alxsts
Olá!

Creio que o que o Alexandre Silva quis dizer é que essa função DiskSpace() retorna valores incorretos para os HDs atuais e se confundiu com Memory().

Você testou DiskSpace(), em Clipper, com HD grande Jairo?

O problema do Silva já foi resolvido mas, de qualquer forma, é sempre bom tirar dúvidas e ter outras opções.

Espaco disponivel

Enviado: 27 Ago 2012 16:16
por Jairo Maia
Xiiii... Alexandre Santos,

Dei mancada "Braba". Em HD grande nada a ver mesmo. Você tem razão, Obrigado. Somente em Harbour o resultado é correto, e não é o caso do colega.

Alexandre Silva, Desculpe cara, desconsidere meu exemplo.

Espaco disponivel

Enviado: 27 Ago 2012 16:31
por alxsts
Olá!

Mancada nada. Às vezes nos confundimos.

Então, para Clipper, fica a sugestão do Leonardo: DiskFree() da CATools. Eu não testei e não sei se realmente funciona.