Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   C++ Builder (https://www.clubdelphi.com/foros/forumdisplay.php?f=13)
-   -   C++ Obterner tamaño fichero grande (https://www.clubdelphi.com/foros/showthread.php?t=68399)

vivamotos 11-06-2010 09:05:39

C++ Obterner tamaño fichero grande
 
Buenos días,

Tengo una imagen de un disco duro que ocupta 80 Gb, pues bien, yo quisiera capturar ese tamaño en código pero siempre me da el valor 0, os adjunto mi código:

Código:

int __fastcall Get_Size(AnsiString path )
{
// #include <fstream>
FILE *pFile;

// get the file stream
pFile=fopen("\\\\192.168.66.59\\imagenes_pcs$\\PCS\\ALCW1002\\ALFREDO_201004262-00-00.mrimg","rb");

// get the file size
long curpos, length;
curpos = ftell(pFile);
fseek(pFile, 0L, SEEK_END);
length = ftell(pFile);
fseek(pFile, curpos, SEEK_SET);
// close stream and release buffer
fclose( pFile );

return length;
}

Con este código puedo saber el tamaño de ficheros pequeños pero los grandes no, que falla?

Casimiro Notevi 11-06-2010 18:09:03

Esa variable length, ¿de qué tipo es?, no veo la declaración, ¿dónde está?

escafandra 12-06-2010 00:34:03

Código:

__int64 GetFileSize(HANDLE hFile)
{
  DWORD hi;
  DWORD lo = GetFileSize(hFile, &hi);
  __int64 R = hi;
  R <<= 32;
  return R |= lo;
}

Saludos.

vivamotos 14-06-2010 08:43:24

long
 
Es un long esta puesta miratelo bien,

El código de scafandra no lo entiendo ni lo veo como funciona, lo quisiera saber para c++ builder

Grácias.

escafandra 14-06-2010 10:53:56

Cita:

Empezado por vivamotos (Mensaje 367180)
...El código de scafandra no lo entiendo ni lo veo como funciona, lo quisiera saber para c++ builder...

:eek:...

Simplemente es el uso de la API GetFileSize en C++ concretamente Builder 5. ¿Lo has comopilado? :rolleyes:

Saludos.

Casimiro Notevi 14-06-2010 17:06:49

Cita:

Empezado por vivamotos (Mensaje 367180)
Es un long esta puesta miratelo bien [..]

Vaya despiste que tengo :o

escafandra 15-06-2010 21:36:13

Por si esta implementación se entiende mejor:
Código:

__int64 _GetFileSize(HANDLE hFile)
{
    __int64 S;
    if (!GetFileSizeEx(hFile, (PLARGE_INTEGER)&S)) S=0;
    return S;
}

Saludos.

kenychy 12-08-2010 16:28:27

hola tio, en que biblioteca se encuentra _int64

escafandra 12-08-2010 23:58:52

__int64

Saludos.

delphi.com.ar 13-08-2010 00:21:21

Yo en Delphi uso esto, habría que traducirlo a C++

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;

escafandra 13-08-2010 00:53:42

Si...

Saludos.


La franja horaria es GMT +2. Ahora son las 01:04:56.

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