Dateigröße von Dateien ermitteln^^

Übersicht BlitzBasic Allgemein

Neue Antwort erstellen

Dante

Betreff: Dateigröße von Dateien ermitteln^^

BeitragSo, Jun 04, 2006 20:30
Antworten mit Zitat
Benutzer-Profile anzeigen
Hey ich ma wieder xD

so jetzt denkt sich vielleicht ma einer man ist der plöd Shocked
aber nene bin ich nicht^^ FileSize kenn ich natürlich Wink

aber das problem ist das FileSize alles in bytes wiedergibt
und das die werte teils zu groß sind um angezeigt zu werden (kommen lustige minus zahlen bei rum^^) also ich spreche jetzt von dateien von 2 GB und aufwärts.

Kann man das umgehen?

MfG
  • Zuletzt bearbeitet von Dante am Mo, Jun 05, 2006 9:22, insgesamt einmal bearbeitet

Lunatix

BeitragSo, Jun 04, 2006 20:38
Antworten mit Zitat
Benutzer-Profile anzeigen
filesitze(file)/1024
[size=9]Pro|gram|mier|er: Ein Organismus, der Koffein in Software umwandelt.
Geben Sie eine beliebige 11-stellige Primzahl ein, um fortzusetzen...

Dante

BeitragSo, Jun 04, 2006 20:43
Antworten mit Zitat
Benutzer-Profile anzeigen
hmm leider nicht, dann wird nur dieser Minuswert durch 1024 geteilt Sad

etlam

BeitragSo, Jun 04, 2006 20:58
Antworten mit Zitat
Benutzer-Profile anzeigen
Hallo,
ich weiß nicht, ob das klappt (habe gerade keinen GB file zur Hand), denke es aber:
Code:
dat = ReadFile("x.exe")
bistausendvierundzwanzig% = 0
zahl% = 0
While Not Eof(dat)
   ablager$ = ReadByte(dat)
   If bistausendvierundzwanzig% = 1024 Then
      zahl% = zahl% + 1
      bistausendvierundzwanzig% = 0
   EndIf
   bistausendvierundzwanzig% = bistausendvierundzwanzig% + 1
   
   
Wend
Print zahl%
WaitKey()

Dieses Programm sollte selbsterklärend sein, Bei meinem Test-file (31323871Byte) liefert dieses Programm 30589 (richtig:30589,71777)
hoffe, ich konnte dir helfen

etlam

Dante

BeitragSo, Jun 04, 2006 21:39
Antworten mit Zitat
Benutzer-Profile anzeigen
hmm erstmal thx^^
klappt soweit. nur bei großen dateien dauert das bis zu 2 minuten^^
also noch nicht das beste.

Naja wenn ich nicht drumrum komm werd ichs wohle nehmen müssen.

Nochmals Danke

MFG

sirokuhl

BeitragSo, Jun 04, 2006 21:48
Antworten mit Zitat
Benutzer-Profile anzeigen
damit hast du schnell nen gig zum testen

Code:
file = WriteFile("file.txt")
For i = 0 To 200000000
WriteLine file,"lala"
Next
CloseFile file


Laughing

PowerProgrammer

BeitragSo, Jun 04, 2006 22:42
Antworten mit Zitat
Benutzer-Profile anzeigen
Das geht mit BB nicht richtig, weil BB nur Integer als höchstes unterstützt. Zu große Zahlen werden geflippt.

Vielleicht kannste mal n Algo entwickeln, der das mit dem Zahlen-Flippen wieder wett macht! Dürfte nicht soo schwer sein...

Markus2

BeitragMo, Jun 05, 2006 0:11
Antworten mit Zitat
Benutzer-Profile anzeigen
Haste SeekFile (filehandle, offset) mal probiert ohne was zu lesen ?
Ich würde mal versuchen in 1k Blöcken zu springen(und zählen) bis nen EOF kommt .

x-pressive

BeitragMo, Jun 05, 2006 7:18
Antworten mit Zitat
Benutzer-Profile anzeigen
Wieso so umständlich? So funktioniert's doch:

Code:
size#   = FileSize("datei.bla")

If size <  1024           Then output$ = size : unit$ = " Bytes"
If size >= 1024           Then output$ = size / (1024^1) : unit$ = " KB"
If size >= 1024*1024      Then output$ = size / (1024^2) : unit$ = " MB"
If size >= 1024*1024*1024 Then output$ = size / (1024^3) : unit$ = " GB"

output$ = Left(output$, Instr(output$,".") + 2) + unit$


Wenn du nur eine Stelle nach dem Komma anzeigen möchtest, ändere einfach die 2 in eine 1.
• BLITZ SHOWCASE:
PARTICLE CANDY • PARTICLE CANDY FOR iPHONE • SPRITE CANDY • DON'T GET ANGRY! 2-3 • CLICK CLACK XL
  • Zuletzt bearbeitet von x-pressive am Mo, Jun 05, 2006 10:27, insgesamt einmal bearbeitet

Rallimen

Sieger des 30-EUR-Wettbewerbs

BeitragMo, Jun 05, 2006 9:19
Antworten mit Zitat
Benutzer-Profile anzeigen
Size#= filesize(..) geht auch nur bis 2147483647 Byte, dann gehts ins minus!
Also knapp 2 GB!
Mit Seekfile kann man auch nur bis zu dieser Stelle springen!

Je nach Größe kann es dann normal mit filesize ausgelesen werden oder man macht das dann ähnlich wie etlam, um den Rest zu bekommen!
[BB2D | BB3D | BB+]

x-pressive

BeitragMo, Jun 05, 2006 9:57
Antworten mit Zitat
Benutzer-Profile anzeigen
So müsste das auch mit übergrossen Dateien funktionieren:

Code:
size#   = FileSize("test.bla")

If size <  1024   Then output$ = size : unit$ = " Bytes"
If size >= 1024   Then output$ = size / (1024  ) : unit$ = " KB"
If size >= 1024^2 Then output$ = size / (1024^2) : unit$ = " MB"
If size >= 1024^3 Then output$ = size / (1024^3) : unit$ = " GB"

; OVERSIZE (> 2 GB)?
If size < 0 Then output$ = (2147483647 - Abs(size)) / (1024^3) + (2147483647 / (1024^3)) : unit$  = " GB"

output$ = Left(output$, Instr(output$,".") + 2) + unit$
  • Zuletzt bearbeitet von x-pressive am Mo, Jun 05, 2006 10:39, insgesamt 3-mal bearbeitet

Dante

BeitragMo, Jun 05, 2006 10:27
Antworten mit Zitat
Benutzer-Profile anzeigen
lol, an sowas ähnlichem saß ich auch grade^^
(das mit dem 2147483647) aber deins ist um einiges besser Very Happy

Vielen Dank jetzt klappt wenigstens alles.

Nochmal Thx
MfG

Rallimen

Sieger des 30-EUR-Wettbewerbs

BeitragMo, Jun 05, 2006 10:41
Antworten mit Zitat
Benutzer-Profile anzeigen
Das müßte funktionieren!
Die neue Grenze liegt nun bei 4GB, da der negative Filesizewert dann wieder positiv ist !
[BB2D | BB3D | BB+]

Neue Antwort erstellen


Übersicht BlitzBasic Allgemein

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group