|
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;
|