PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Wie kann man die Größe einer Datei rausfinden?


Dr Hardware
2003-05-30, 14:52:43
Hi,
wie im Betreff schon steht möchte ich gerne wissen , wie man die Größe einer Datei rausfinden kann.Gibt es dafür einen WinApi Befehl ?

x-dragon
2003-05-30, 15:32:18
Original geschrieben von Dr Hardware
Hi,
wie im Betreff schon steht möchte ich gerne wissen , wie man die Größe einer Datei rausfinden kann.Gibt es dafür einen WinApi Befehl ? Ja gibts, ist am einfachsten im MSDN zu finden:
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/fileio/base/getfilesize.asp

Dr Hardware
2003-05-30, 17:42:00
thx

Lord Nikon
2003-05-30, 19:56:07
void TForm1::schreibe()
{
fstream aus;
DWORD grose;
HANDLE hFile;


if (dlgsave->Execute())
{


aus.open(dlgsave->FileName.c_str(),ios::out);
if (aus.is_open())
{


hFile=dlgsave->Handle;

for (int i=1;i<33;i++)
{
aus<<AnsiString(i).c_str()<<endl;
grose=GetFileSize(hFile,NULL);
grose=grose/1024;
ShowMessage(grose);
if (grose>=9000)
{
break;
}
}
}


}


}

Irgendwie zeigt der mir immer die gleiche Größe an.Musss ich der hFile vll was andere übergeben ?

Xmas
2003-05-30, 21:10:42
Original geschrieben von Lord Nikon
Irgendwie zeigt der mir immer die gleiche Größe an.Musss ich der hFile vll was andere übergeben ?
fstream puffert die Ausgabe. Ein Update der Dateigröße bekommst du möglicherweise erst nach einem flush oder beim Schließen der Datei.

Lord Nikon
2003-05-30, 21:47:54
Irgendwie bekomme ich immer 0xFFFFFFFF zurückgeliefert.Der Flush hat auch nix gebracht.

Xmas
2003-05-31, 06:06:07
hFile=dlgsave->Handle;

Autsch, das hab ich ja völlig übersehen :bonk:

dlgsave->Handle ist ein Handle auf die Save-Dialogbox! Das kann ja nicht funktionieren.
Für GetFileSize musst du ein Handle verwenden, dass du erhälst wenn du die Datei mit CreateFile() öffnest.

Lord Nikon
2003-05-31, 10:28:28
thx,jetzt klappt es

zeckensack
2003-06-01, 09:08:02
Portabel:unsigned int file_size=0;
FILE* f=fopen(blabla,"rb");
if (NULL==f) scream_in_pain(); //error
else
{
fseek(f,0,SEEK_END);
file_size=ftell(f);
fclose(f);
}