Dateigrößen unter Win98
-
Hallo zusammen
Ich habe eine Datei, die durch ein SDK geöffnet und beschrieben wird.
Problem ist auch, das ich nicht direkten Zugriff zu den Filepointer dieser Datei besitze. Ich kann mir allerdings einen eigenen Pointer definieren und ihn auf die geöffnete Datei setzen (Zumindest zeigt mir der Debugger einen sinnigen Pointer an!)Ich brauche nun die aktuelle Größe dieser Datei (mit Hilfe meines Pointers), ohne diese Datei vom SDK aus vorher zu schließen.
GetFileSize(Ex), SetFilePointer, ftell sind alles Funktionen die unter 2k funzen, aber unter 98 erst dann, wenn die Datei vom SDK geschlossen wird. (Eher zeigt der Explorer die Dateigröße auch net an)
Hat jemand eine Idee oder Eklärung?
THX im Voraus
Gruß Daniel
[ Dieser Beitrag wurde am 24.02.2003 um 16:08 Uhr von chantalis editiert. ]
[ Dieser Beitrag wurde am 24.02.2003 um 16:22 Uhr von chantalis editiert. ]
-
GetFileSize(Ex), SetFilePointer, ftell sind alles Funktionen die unter 2k funzen, aber unter 98 erst dann, wenn die Datei geschlossen wird.
quatsch
-
z.B. brauch GetFileSize doch gerade ein gültiges Filehandle, also eine geöffnete Datei, damit es funktioniert.
-
Hallo
Ja, das war ein bissl ungünstig ausgedrückt.
Ich brauche natürlich ein gültiges Filehandle.
Allerdings, solange noch die Datei von dem SDK geöffnet ist, kann ich
mit meinem selbst erstellen Pointer nicht die Dateigröße mit besagten Fkt. ermitteln. Erst wenn das SDK die Datei geschlossen hat, kann ich mit meinem Pointer die Größe auslesen.[ Dieser Beitrag wurde am 24.02.2003 um 16:23 Uhr von chantalis editiert. ]
-
Verstehe nichts. Muß dir jemand anderes helfen.
:p
-
HI Q
Dennoch danke für deine Bemühungen.
Aber bei einem könntest du mir sicher helfen:
Gibt es noch andere Möglichkeiten, an die Größe einer Datei unter 98 zu kommen,
ausser besagter Funktionen.Gruß
Daniel
-
hi chantalis,
Da solle es überhaupt keine Probleme geben. Weder mit C, C++ noch Winapi.
Zeig uns bitte etwas von deinem Code.
-
Hallo Daniel
HANDLE hFile = CreateFile( cCurFile, 0, //Da schon von anderer Instanz geöffnet FILE_SHARE_READ, // share for reading NULL, // no security OPEN_EXISTING, // existing file only FILE_ATTRIBUTE_NORMAL, // normal file NULL); // no attr. template DWORD lpFileSize = 0; lpFileSize = SetFilePointer(hFile, 0, 0, FILE_END); CloseHandle(hFile);
Ausgangssituation:
cCurFile ist von anderer Instanz (SDK) geöffnet und wird beschrieben (mit MPEG-Frames). Das vom SDK benutzte Filehandle steht mir leider nicht zu Verfügung. Deshalb auch die '0' (beim eigen creierten Handle) CreateFile, sonst bekomm ich kein gültiges Handle auf die geöffnete Datei.Ich möchte zu jeder Zeit die Dateigröße z.B. für eine Progress-Anzeige haben.
Problem:
Dieser Code funktioniert einwandfrei unter Win2k. Auch der Explorer zeigt nach Aktualisierung, die aktuelle Dateigröße an.Unter Win98 funktioniert diese und die anderen besagten Funktionen nicht. Auch zeigt der Explorer die Größe erst nach schließen der Datei, seitens des SDK's an. Sprich: Solange das SDK schreibend auf die Datei zugreift, bleibt bei Win98 die Dateigröße Null. Und das ist für eine Progress-Anzeige ein wenig dürftig
Über jeden Tip wäre ich dankbar
Gruß
*DaNieL*---------------------------------------------------
-> 42? Aber wie lautet die Frage <-[ Dieser Beitrag wurde am 24.02.2003 um 19:19 Uhr von chantalis editiert. ]
-
Vermutlich managed Windows98 Dateioperationen anders und macht Änderungen erst "öffentlich", wenn die Datei geschlossen wird.
Vieleicht liegt es aber auch am Dateisystem?Gibt die Funktion CreateFile(...); unter Win98 überhaupt ein gültiges Handle zurück? Filehanlde auf INVALID_HANDLE_VALUE prüfen.
-
Wenn der Explorer das noch nichtmal richtig anzeigt dann wird es nicht am Handle liegen. Zähl doch jedes Zeichen einzelnd in der Datei. :p
-
Juten Morgen zusammen
Thx schon mal für eure Hilfe.
@Daniel: Das Handle ist korrekt. Zumindest ist der Rückgabewert nicht INVALID_HANDLE_VALUE, sondern ein gültiger Wert.
Das scheint wohl wirklich ein 98 feature zu sein :o
@Fritz: Das Encoder den ich baue, soll nicht dazu dienen, DVD's zu rippten, die erst unter dem Weihnachtsmaum 2004 liegen sollen
Deshalb brauch ich doch eine etwas Geschwindigkeitsschonendere Funktion um die Dateigröße zu ermitteln.
Falls euch noch eine Alternative zu GetFileSize(Ex), SetFilePointer, ftell
einfällt wär das echt supi.Sonst muss ich es auf andere Wegen versuchen.
Danke auf jeden Fall für eure konstruktiven Tips.
Gruß
Daniel