FileSize() bei großen Dateien.

Übersicht BlitzBasic Allgemein

Neue Antwort erstellen

Starwar

Betreff: FileSize() bei großen Dateien.

BeitragDo, Jan 22, 2009 22:24
Antworten mit Zitat
Benutzer-Profile anzeigen
Guten Abend,
Kennt jemdand eine Funktion/Userlib, die in der Lage ist die Größe großer Dateien zu bestimmen? Bei B+ ist ja nach 2GB schluss Sad
(SeekFile unterstützt große Dateien, oder irre ich mich?)
MFG

-EDIT-
Hier ist die Lösung:
Code: [AUSKLAPPEN]
;.lib "Kernel32.dll"
;api_GetFileSize%(hfile,Bank*) : "GetFileSizeEx"

Function getLargeFileSize$(file$)
   Open = CreateBank(8)
   hFile = api_OpenFile(file$, Open, 0)
   If hFile <> 0 Then
      Size=CreateBank(256)
      Fsize% = api_GetFileSize(hFile,Size)
      api_CloseHandle(hFile)
      If FSize < 1 Then Return "-1"
      bytes$=largeint$(Size)
      FreeBank Open : FreeBank Size
      Return bytes$
   Else
      Return "-1"
   EndIf
End Function

Function largeint$(bank)
   F1%=PeekShort(bank,0)
   F2%=PeekShort(bank,2)
   F3%=PeekShort(bank,4)
   F4%=PeekShort(bank,6)
   Fs1$=String_Multiply$(Str(F1%),"1")
   Fs2$=String_Multiply$(Str(F2%),"65536")
   Fs3$=String_Multiply$(Str(F3%),"4294967296")
   Fs4$=String_Multiply$(Str(F4%),"281474976700000")
   teil1$=String_Add$(Fs1$,Fs2$)
   teil2$=String_Add$(Fs3$,Fs4$)
   bytes$=String_Add$(teil1$,teil2$)
   Return bytes$
End Function

Das ganze liefert die Dateigröße in Bytes.
ACHTUNG
-Es werden die Stringrechner-Funnktionen von Noobody benötigt: https://www.blitzforum.de/foru...hp?t=30728
-.decls nicht vergessen!
-Immer den kompletten Dateipfad angeben (Currentdir$()!)
MFG
  • Zuletzt bearbeitet von Starwar am Sa, Feb 21, 2009 22:36, insgesamt einmal bearbeitet
 

ChristianK

BeitragDo, Jan 22, 2009 23:18
Antworten mit Zitat
Benutzer-Profile anzeigen
Da müsstest du die Datei über die WinAPI laden und mit GetFileSizeEx die Dateigröße ermitteln. Damit wird die Größe zwar als 64-Bit Wert zurück gegeben, aber rechnen kannst du damit in BB natürlich nicht direkt.
AdvanceLcd
Intel Core 2 Duo 3.2 GHz, 4 GB RAM, GeForce 8800 GTX | MacBook Pro 15,4″ Intel Core 2 Duo 2.4 GHz, 2 GB RAM, GeForce 8600M GT

Neue Antwort erstellen


Übersicht BlitzBasic Allgemein

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group