Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Filesize ficheros grandes (https://www.clubdelphi.com/foros/showthread.php?t=80255)

johan 13-09-2012 00:39:01

Filesize ficheros grandes
 
Buenas a todos, me estoy encontrando que con Filesize en un fichero de mas de dos gb me devuelve un numero negativo... Alguien se ha encontrado con el mismo problema y lo ha podido solucionar.
Gracias.,

Casimiro Notevi 13-09-2012 00:43:40

Hola, recuerda poner los temas en los foros adecuados, este foro es el de "Delphi/web", cosa que no tiene nada que ver tu pregunta, lo paso a "Varios".

En relación a tu pregunta, deberías poner el código fuente, no somos adivinos para ver qué estás haciendo, aunque se intuye que estás usando una variable integer y por eso no puede representar números tan grandes, declárala del tipo int64

johan 13-09-2012 00:57:48

Gracias Casimiro. Es la función FileSize(z) que averigua el tamaño del fichero pero retorna Integer, por lo que estuve mirando.

Casimiro Notevi 13-09-2012 01:04:06

A ver...

Código Delphi [-]
function FileSize(const FileName: string): Int64; 
var   sr: TSearchRec; 
begin   
  if FindFirst(FileName, faAnyFile, sr) = 0 then     
  try       
    Result := Int64(sr.FindData.nFileSizeHigh) shl Int64(32) + Int64(sr.FindData.nFileSizeLow);     
  finally       
    SysUtils.FindClose(sr);     
  end   
  else     
    Result := -1; 
end;

ecfisa 13-09-2012 01:08:36

Hola.

Proba de este modo:
Código Delphi [-]
function FileLongSize(const FileName: string): Int64;
var
  FindData: TWin32FindData;
begin
  Windows.FindClose(FindFirstFile(PChar(FileName), FindData));
  Result := FindData.nFileSizeHigh shl 32 or FindData.nFileSizeLow;
end;

Saludos.

Edito: Disculpa, no había visto tu mensaje Casimiro :o, bueno otra opción... :)

Casimiro Notevi 13-09-2012 01:29:38

Cita:

Empezado por ecfisa (Mensaje 442965)
Edito: Disculpa, no había visto tu mensaje Casimiro :o, bueno otra opción... :)

Nada que disculpar, es "casi" lo mismo, por poco hacemos un "copia->pega" del mismo :D

ecfisa 13-09-2012 03:39:46

Cita:

Empezado por Casimiro Notevi (Mensaje 442974)
Nada que disculpar, es "casi" lo mismo, por poco hacemos un "copia->pega" del mismo :D

Es que no hay mucho mas para inventar... :D

Saludos. :)

escafandra 13-09-2012 14:16:22

Otra forma (recordando este hilo: C++ Obterner tamaño fichero grande...)

Código Delphi [-]
function GetFileSizeEx(hFile: THandle; var Data: int64): boolean; stdcall; external 'Kernel32.dll' name 'GetFileSizeEx';

implementation
     
     
function _GetFileSize(hFile: THandle): int64;
begin
  if not GetFileSizeEx(hFile, Result) then Result:= 0;
end;


Saludos.

johan 14-09-2012 00:07:20

Perfecto gracias a todos !!!! asunto resuelto.


La franja horaria es GMT +2. Ahora son las 09:12:16.

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