"TAMAÑO" Y "TAMAÑO EN DISCO" DIFERENTES
Que tal estimados colegas, tengo realmente una duda de como hacer algo, a ver si me pueden ayudar:
Resulta que si ustedes le dan con el boton derecho a cualquier archivo (En windows) y le dan a PROPIEDADES entre otras cosas van a ver "Tamaño" y "Tamaño en disco"... y se darán cuenta que son diferentes... bueno resulta que trabajo con c++ Builder y con el API de windows lo unico que puedo extraer es el "tamaño" pero no existe propiedad o metodo alguno que me traiga la info de espacio en disco, no por lo menos con lo que estoy usando.
Aqui una copia de la pruebita que hice
void TForm1::Recorrer(AnsiString Ruta)
{
WIN32_FIND_DATA InfoTd;
int count = 0;
HANDLE Valor1 = FindFirstFile(Ruta.c_str(), &InfoTd);
BOOL Encontrado;
do
{
AnsiString NombreArchivo = InfoTd.cFileName;
int TamanoL = InfoTd.nFileSizeLow;
int TamanoH = InfoTd.nFileSizeHigh;
// FechaHoraAux = InfoTd.ftLastWriteTime;
ListBox1->Items->Add(NombreArchivo + " " + IntToStr(TamanoL) + " " + IntToStr(TamanoH));
Encontrado = FindNextFile(Valor1, &InfoTd);
} while(Encontrado);
FindClose(Valor1);
return;
}
Donde estos son las propiedades de WIN32_FIND_DATA
typedef struct _WIN32_FIND_DATA { // wfd
DWORD dwFileAttributes;
FILETIME ftCreationTime;
FILETIME ftLastAccessTime;
FILETIME ftLastWriteTime;
DWORD nFileSizeHigh;
DWORD nFileSizeLow;
DWORD dwReserved0;
DWORD dwReserved1;
TCHAR cFileName[ MAX_PATH ];
TCHAR cAlternateFileName[ 14 ];
} WIN32_FIND_DATA;
Sé que la diferencia entre "tamaño" y "tamaño en disco" se debe al sistema de archivo lo que necesito es extraer o calcular este valor....
Alli les dejo ese paquetico...
Gracias
Resulta que si ustedes le dan con el boton derecho a cualquier archivo (En windows) y le dan a PROPIEDADES entre otras cosas van a ver "Tamaño" y "Tamaño en disco"... y se darán cuenta que son diferentes... bueno resulta que trabajo con c++ Builder y con el API de windows lo unico que puedo extraer es el "tamaño" pero no existe propiedad o metodo alguno que me traiga la info de espacio en disco, no por lo menos con lo que estoy usando.
Aqui una copia de la pruebita que hice
void TForm1::Recorrer(AnsiString Ruta)
{
WIN32_FIND_DATA InfoTd;
int count = 0;
HANDLE Valor1 = FindFirstFile(Ruta.c_str(), &InfoTd);
BOOL Encontrado;
do
{
AnsiString NombreArchivo = InfoTd.cFileName;
int TamanoL = InfoTd.nFileSizeLow;
int TamanoH = InfoTd.nFileSizeHigh;
// FechaHoraAux = InfoTd.ftLastWriteTime;
ListBox1->Items->Add(NombreArchivo + " " + IntToStr(TamanoL) + " " + IntToStr(TamanoH));
Encontrado = FindNextFile(Valor1, &InfoTd);
} while(Encontrado);
FindClose(Valor1);
return;
}
Donde estos son las propiedades de WIN32_FIND_DATA
typedef struct _WIN32_FIND_DATA { // wfd
DWORD dwFileAttributes;
FILETIME ftCreationTime;
FILETIME ftLastAccessTime;
FILETIME ftLastWriteTime;
DWORD nFileSizeHigh;
DWORD nFileSizeLow;
DWORD dwReserved0;
DWORD dwReserved1;
TCHAR cFileName[ MAX_PATH ];
TCHAR cAlternateFileName[ 14 ];
} WIN32_FIND_DATA;
Sé que la diferencia entre "tamaño" y "tamaño en disco" se debe al sistema de archivo lo que necesito es extraer o calcular este valor....
Alli les dejo ese paquetico...
Gracias
