Dateigröße feststellen -> Fehler! (-1)
-
Hallo, ich prüfe in meinem neuen Programm eine Datei auf ihre Größe und zwar so:
long double length long double handle; handle = open("Datei.txt", O_RDONLY); length = filelength(handle); // Länge der einzilesenden Datei feststellen! close(handle);Leider liefert die Funktion ab einer bestimmten Größe der Date (etwa 50MB) den Fehlerwert -1 zurück! Warum? handle und length habe ich mit "long double" initialisiert...das sollte doch reichen?? Freue mich über Hilfe!
P.S. Benötige die Größe, um zu wissen, ob es "Neues" in der Datei gibt, das ich noch auslesen muss!
-
open liefert maximal einen Integer zurück, egal in welchen Typ du den Rückgabewert nun überführst.
Abhilfe:
WIN 32 API CreateFile
-
Hallo,
handle sollte eigentlich int und length long sein. Gerade für handle darf kein double verwendet werden.
[edit]Man sollte wohl nicht telefonieren beim posten[edit]
-
Vielleicht hilft ja auch das hier
GetFileSizeEx
-
Danke...hatte da auch zuerst ein "int" stehen...aber das ging nicht, deshalb habe ich es mit long double probiert...!
Aber wie geht das mit dem CreateFile?? habe nix in der Hilfe gefunden? Bin für Vorschläge mehr als Dankbar!!!
-
Schau mal hier
CreateFile
-
Hallo Braunstein! Das sieht ja nicht schlecht aus, liefert ein long int zurück! Nur wie verwende ich die Funktion? Blicke da leider gar nicht durch! Muß ich was installieren, oder reicht #include windows.h? Wie rufe ich die Funktion auf? Wäre nett wenn Du mir da mal auf die Sprünge helfen könntest! Danke!
-
-
So, ich versuche es jetzt auf diese Weise:
using namespace std; HANDLE hFile=CreateFile("Data.txt", GENERIC_READ, 0, NULL, OPEN_EXISTING, 0, NULL); DWORD length=GetFileSize(hFile, NULL); CloseHandle(hFile);Beim ersten Durchlauf gibt er die echte Dateigröße aufs Byte genau an...beim zweiten Durchlauf allerdings übergibt er Mist! Was mach ich falsch?
-
so vielleicht?
int handle = open(Pfad.c_str(), O_CREAT); if((filelength(handle) / 1024) > 10000) //10 megabyte maximal größe erstmal