Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 24-10-2017
SaraTorres SaraTorres is offline
Miembro
 
Registrado: sep 2017
Posts: 25
Poder: 0
SaraTorres Va por buen camino
Question Espacio del disco duro

Hola chicos
Con qué código puedo obtener el espacio usado y espacio libre del disco C:\ pero en Gb?

Si alguien lo tiene y por favor me lo comparte, se lo agradezco desde ya.
Cuídence
Responder Con Cita
  #2  
Antiguo 24-10-2017
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.040
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
https://www.clubdelphi.com/foros/showthread.php?t=49476
Responder Con Cita
  #3  
Antiguo 24-10-2017
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Hola.

Otra opción es usar la función API GetDiskFreeSpaceEx.

Código Delphi [-]
...
procedure GetDiskInfoSpace( Disk: string; var TotalBytes, FreeBytes: Int64 );
const
  GB = 1024*1024*1024;
begin
  Disk := IncludeTrailingPathDelimiter(Disk);
  if not GetDiskFreeSpaceEx(PChar(Disk), FreeBytes, TotalBytes, nil) then
    raise Exception.Create( SysErrorMessage(GetLastError));
  TotalBytes := TotalBytes div GB;
  FreeBytes  := FreeBytes div GB;
end;

Ejemplo de uso:

Código Delphi [-]
procedure TForm1.Button1Click(Sender: TObject);
var
  FreeBytes,
  TotalBytes: Int64;
begin
  GetDiskInfoSpace('C:\', TotalBytes, FreeBytes);
  ShowMessageFmt('Capacidad: %d Gb. %sEspacio libre: %d Gb.', [  TotalBytes, #$A, FreeBytes  ]);
end;

Saludos
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....

Última edición por ecfisa fecha: 26-10-2017 a las 15:01:05.
Responder Con Cita
  #4  
Antiguo 26-10-2017
SaraTorres SaraTorres is offline
Miembro
 
Registrado: sep 2017
Posts: 25
Poder: 0
SaraTorres Va por buen camino
Hola ecfisa
Estuve probando el código y funcionó a la perfección.

Ahora, el resultado me lo da en enteros pero ¿cómo puedo hacerlo que me de con decimales el espacio libre?
Ejemplo de espacio libre: 33,5 GB

Gracias por tu tiempo.
Responder Con Cita
  #5  
Antiguo 26-10-2017
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.040
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
http://www.delphibasics.co.uk/RTL.as...ShowMessageFmt
Responder Con Cita
  #6  
Antiguo 26-10-2017
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Hola.
Cita:
Empezado por SaraTorres Ver Mensaje
...Ahora, el resultado me lo da en enteros pero ¿cómo puedo hacerlo que me de con decimales el espacio libre?...
En ese caso vas a tener que cambiar el tipo de los parámetros:
Código Delphi [-]
procedure GetDiskInfoSpace( Disk: string; var prFreeBytesAvailable,
  prTotalNumberOfBytes, prTotalNumberOfFreeBytes: Double );
const
  GB = 1024*1024*1024;
var
  FreeBytesAvailable ,
  TotalNumberOfBytes,
  TotalNumberOfFreeBytes : TLargeInteger;
begin
  Disk := IncludeTrailingPathDelimiter(Disk);

  if not GetDiskFreeSpaceEx(PChar(Disk), FreeBytesAvailable,
    TotalNumberOfBytes, @TotalNumberOfFreeBytes) then
      raise Exception.Create( SysErrorMessage(GetLastError));

  prFreeBytesAvailable     := FreeBytesAvailable / GB;
  prTotalNumberOfBytes     := TotalNumberOfBytes / GB;
  prTotalNumberOfFreeBytes := TotalNumberOfFreeBytes / GB;
end;

// Ej. uso:
procedure TForm1.Button1Click(Sender: TObject);
var
  szAvailable, szTotal, szFree: Double;
begin
  GetDiskInfoSpace('C:', szAvailable, szTotal, szFree );

  ShowMessage(FormatFloat('Espacio total: 0.00', szTotal) + #$A +
    FormatFloat('Espacio libre: 0.00', szFree) + #$A +
    FormatFloat('Espacio libre disponible: 0.00', szAvailable));
end;
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita
  #7  
Antiguo 26-10-2017
SaraTorres SaraTorres is offline
Miembro
 
Registrado: sep 2017
Posts: 25
Poder: 0
SaraTorres Va por buen camino
Eres un genio ecfisa
Te lo agradezco (pero no)
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
serial del disco duro JoseSagas Varios 1 19-06-2012 20:58:41
Un GRAN disco duro AzidRain La Taberna 14 18-02-2011 13:05:21
accesos al disco duro YolandaM Windows 2 11-07-2007 14:18:46
Imagen de disco duro de sistema a un disco externo usb Wonni Windows 20 05-06-2007 13:11:55
Serial del disco duro Emerson API de Windows 10 12-07-2006 07:44:30


La franja horaria es GMT +2. Ahora son las 23:26:06.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi