Dateigröße von Dateien ermitteln^^
Übersicht

![]() |
DanteBetreff: Dateigröße von Dateien ermitteln^^ |
![]() Antworten mit Zitat ![]() |
---|---|---|
Hey ich ma wieder xD
so jetzt denkt sich vielleicht ma einer man ist der plöd ![]() aber nene bin ich nicht^^ FileSize kenn ich natürlich ![]() 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 |
![]() Antworten mit Zitat ![]() |
---|---|---|
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 |
![]() Antworten mit Zitat ![]() |
---|---|---|
hmm leider nicht, dann wird nur dieser Minuswert durch 1024 geteilt ![]() |
||
![]() |
etlam |
![]() Antworten mit Zitat ![]() |
---|---|---|
Hallo,
ich weiß nicht, ob das klappt (habe gerade keinen GB file zur Hand), denke es aber: Code: [AUSKLAPPEN] 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 |
![]() Antworten mit Zitat ![]() |
---|---|---|
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 |
![]() Antworten mit Zitat ![]() |
---|---|---|
damit hast du schnell nen gig zum testen
Code: [AUSKLAPPEN] file = WriteFile("file.txt")
For i = 0 To 200000000 WriteLine file,"lala" Next CloseFile file ![]() |
||
![]() |
PowerProgrammer |
![]() Antworten mit Zitat ![]() |
---|---|---|
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 |
![]() Antworten mit Zitat ![]() |
---|---|---|
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 |
![]() Antworten mit Zitat ![]() |
---|---|---|
Wieso so umständlich? So funktioniert's doch:
Code: [AUSKLAPPEN] 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
![]() |
RallimenSieger des 30-EUR-Wettbewerbs |
![]() Antworten mit Zitat ![]() |
---|---|---|
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 |
![]() Antworten mit Zitat ![]() |
---|---|---|
So müsste das auch mit übergrossen Dateien funktionieren:
Code: [AUSKLAPPEN] 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 |
![]() Antworten mit Zitat ![]() |
---|---|---|
lol, an sowas ähnlichem saß ich auch grade^^
(das mit dem 2147483647) aber deins ist um einiges besser ![]() Vielen Dank jetzt klappt wenigstens alles. Nochmal Thx MfG |
||
![]() |
RallimenSieger des 30-EUR-Wettbewerbs |
![]() Antworten mit Zitat ![]() |
---|---|---|
Das müßte funktionieren!
Die neue Grenze liegt nun bei 4GB, da der negative Filesizewert dann wieder positiv ist ! |
||
[BB2D | BB3D | BB+]
|
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group