Código: Seleccionar todo

#include <stdio.h>
// Get file size using file functions
int fsize(char path[])
{
    FILE * pFile;
    
    pFile = fopen(path,"rb");
    if (pFile == NULL) return 0;
    else
    {
        fseek(pFile,0,SEEK_END);
        return(ftell(pFile));
        fclose(pFile);
    }
}
Referencias: cplusplus
Nota: para usarlo deben colocar 2 \\ despues de la unidad es decir:
fsize("C\\prueva.exe")
Agradecimientos R-007 y Psicosis
En tu ventana
Y en tu ventana, gritas al cielo pero lo dices callada..
Swashito no te me vuelvas loco con los agradecimientos anda..
yo con ver que cuando te lo explico me dices gracias por ayudarme me basta y me sobra, no hace falta que todo el que lo lea lo sepa porque el agradecimiento que me vale es el que tú me haces a mí.. y si me haces mención pues bien.. pero tampoco hace falta ya te digo..
(lo digo por alguien a quien le molestó mucho que no le agradeciera en el primer post su colaboración.. y que se lo tomó a malas cuando hice después mención de él.. )

mira volviendo al tema principal.. para que el usuario no tenga el inconveniente de escribir 2 backslash ("\\"), mejor pasar la entrada como AnsiString (ya que usas C++ aprovéchalo). A ver si con este code lo entiendes (y así lo tienes para otra vez).

Código: Seleccionar todo

int StubLenght(AnsiString stub){
 int iFileHandle;
 int iFileLength = 0;
 char *pszBuffer;
  if(FileExists(stub)){
   iFileHandle = FileOpen(stub, fmOpenRead);
   iFileLength = FileSeek(iFileHandle,0,2);
   FileSeek(iFileHandle,0,0);
   pszBuffer = new char[iFileLength+1];
   FileClose(iFileHandle);
   delete [] pszBuffer;
  }
  return  iFileLength;
}
Un saludo! R-007
Felicidades! y en esto ni se justifica loco , gracias a vos por querer siempre colaborar con nosotros!
<Josh> y bueno hermano,tu hermana q me dijo q estaba cansada de tenerle el orto como la bandera de japon y bueno la pobre me quizo hacer un masaje prostatico nada mas pero era tanto su recelo y venganza acumulada q se esmero un poco mas de lo normal,pero bue,estuivo bien amorizado por la de dias horas años y lagrimas q echo la pobre de tanto culearla
ABRO PARENTESIS
no te subestimo ps1c0.. ya tomé en consideración lo que dijiste en el otro post.. en serio, no me lo tengas en cuenta y no te enojes por lo que hice o deje de hacer mejor dicho. ya rectifiqué y espero que hayas comprendido la causa de mi fallo.. una vez mas.. lo siento tio.
lo seguimos por privado mañana.
CIERRO PARENTESIS

sigamos con el tema.. swashito cualquier duda que tengas con el code que te puse me lo dices ok?
dale al C++ que mola bastante ^^ mucho ánimo

saludos!
swashito , despues del return se termina la funcion, por ende el fclose que pusiste despues del return no sirve

int fsize(char path[])
{
FILE * pFile;

pFile = fopen(path,"rb");
if (pFile == NULL) return 0;
else
{
fseek(pFile,0,SEEK_END);
return(ftell(pFile));
fclose(pFile);
}
}
1.- sólo yo puedo llamarle swashito ¬¬
2.- no puedes poner ninguna instrucción después del RETURN, asi que o guardas lo que devuelve ftell en otra variable, cierras el fichero y despues de vuelves la variable o no funcionará.

mejor este code:

Código: Seleccionar todo

#include <fstream>
int getSize(char* Ruta) {  
   int nBytes; // Número de bytes
   ifstream Ent; // Fichero de entrada
   Ent.open(Ruta,ios::binary); //Abrir el fichero de la ruta especificada
   Ent.seekg(0, ios::end); // Colocar el cursor al final del fichero
   nBytes = Ent.tellg(); // Tamaño en bytes
   Ent.seekg(0, ios::beg); // Colocar el cursos al principio del fichero
   Ent.close(); // Cerrar el fichero
   return nBytes; // Devolver el número de bytes
} 
The Gay! Eso tu función está escrita en C, no en C++! y es cierto lo que te mencionan, almacena la respuesta de ftell en alguna variable cierras el fichero y retornas la variable almacenada si no el fichero no se cerrará!
//mHmm..
Responder

Volver a “Fuentes”