Un lugar de encuentro para los programadores de habla hispana

Un lugar de encuentro para los programadores de habla hispana

Buscar

Entrar

Puedes acceder utilizando tu cuenta de usuario del foro.

Si no dispone de cuenta, puede crear una accediendo al formulario de registro del foro.



Obtención del tamaño de un archivo grande (sin utilizar Size) Imprimir
Ideas - Delphi

Para no utilizar Size que no funcionará en discos grandes ya que se producirá una excepción al intentar meter en un 'integer' el tamaño del archivo (pienso, por ejemplo, en una copia de varios CD-ROM a disco, sobre un mismo archivo).

 
{############################################################################-}
{ FUNCIÓN: TamanoArchivo(const NombArch: String; var Tamano: Cardinal): Boolean;}
{                                                                             }
{ ACCIÓN : Devuelve en la variable 'Tamano' el tamaño en bytes del archivo    }
{          apuntado por el parámetro 'NombArch' (la variable SE MODIFICA).    }
{          Si 'NombArch = ''' o se produce un error, devuelve FALSE.          }
{          En este caso, la variable 'Tamano' contiene el código de error.    }
{############################################################################-}
function TamanoArchivo(const NombArch: String; var Tamano: Cardinal): Boolean;
var
   Handle: THandle;
   FindData: TWin32FindData;
begin
   if ('' = Trim(NombArch)) then   { ¡¡¡ Cadena en blanco !!! }
   begin
      Tamano := 0;
      Result := FALSE;
   end
   else   { Comprobar existencia }
   begin
      Handle := Windows.FindFirstFile(PChar(NombArch), FindData);
      if (INVALID_HANDLE_VALUE <> Handle) then
      begin
         { Tamaño del archivo }
         Tamano := (FindData.nFileSizeHigh * MAXDWORD) + FindData.nFileSizeLow;
         Windows.FindClose(Handle);
         Result := TRUE;
      end
      else
      begin
         { Devolver el error producido }
         Tamano :=  Windows.GetLastError;
         Result := FALSE;
      end;
   end;
end;
 
 
Comentarios (0)
Para escribir un comentario debes estar registrado