Verfügbaren Speicherplatz ermitteln?

Übersicht BlitzBasic Allgemein

Neue Antwort erstellen

Kryan

Betreff: Verfügbaren Speicherplatz ermitteln?

BeitragSo, Apr 17, 2005 12:02
Antworten mit Zitat
Benutzer-Profile anzeigen
Hi,
ich will wissen, wie man den übrigen Speicherplatz auf Laufwerk C: ermitteln kann
Vielen Dank für die Hilfe
Webspaceanbieter?
Klick hier!
Kultige Spieleschmiede?
Klick hier!

simi

BeitragSo, Apr 17, 2005 12:47
Antworten mit Zitat
Benutzer-Profile anzeigen
Code: [AUSKLAPPEN]

;.lib "kernel32.dll"
;GetDiskFreeSpaceEx%(lpRootPathName$,lpFreeBytesAvailableToCaller*,lpTotalNumberOfBytes*,lpTotalNumberOfFreeBytes*):"GetDiskFreeSpaceExA"


b1=CreateBank(8)         ;Frei Bytes, die für den User aktiv sind....
b2=CreateBank(8)         ;Gesamtspeicherplatz
b3=CreateBank(8)         ;Freier Speicherplatz

Notify GetDiskFreeSpaceEx("C:\",b1,b2,b3)


w1=PeekInt(b2,0)
w2=PeekInt(b2,4)

e1$ = Multiplizieren(Str(w2),"4294967296")
e2$ = Addieren(e1,Str(w1))

Notify e2




Function Multiplizieren$ (Wert1$,Wert2$)
   
    For i = 1 To Len (wert1$)
        Multipli% = Mid (wert1$,i ,1)
        dummy2$ = Wert2$
       
        While Len (dummy2$) > 7
            Akwert = Right (dummy2$,7)
            dummy2$ = Left (wert2$,Len (dummy2$) - 7)
            erg = Multipli% * Akwert + rest%
            If erg > 9999999 Then
                rest% = Left (erg ,1)
                erg = Right (erg ,7)
             Else
                rest = 0
            End If
            If Len (Str (erg) ) < 7 Then
                ZwWert$ = Replace (RSet (erg,7) ," ","0") + ZwWert$
             Else
                ZwWert$ = Replace (RSet (erg,7) ," ","0") + ZwWert$
            End If
        Wend
       
        ;###############
        rest% = Multipli% * Int (dummy2$) + rest%
        ZwWert$ = rest% + ZwWert$
        rest = 0
        If Len(dummy$) Then
            dummy$ = Addieren$ (ZwWert$ ,Dummy$ + "0")
         Else
            dummy$ = ZwWert$
        End If
        ZwWert$ = ""
    Next
   
    Return dummy$
End Function

Function Addieren$ (Wert1$,Wert2$)
    If Len (wert1$) > Len (wert2$) Then
        wert2$ = RSet (wert2$,Len (wert1$) )
     Else
        wert1$ = RSet (wert1$,Len (wert2$) )
    End If
   
    While Len (wert1$) > 8
        zw$ = (Int (Right (wert1$,8) ) + Int (Right (wert2$,8) ) + c%)
        If Len (zw) < 9 Then zw = Replace (RSet (zw,8) ," ","0")
        If Len (zw$) > 8 Then
            c% = 1
            zw$ = Mid (zw$,2)
         Else
            c% = 0
        End If
        returnWert$ = Right (zw$,8) + returnWert$
        wert1$ = Left (wert1$ , Len (wert1$) - 8)
        wert2$ = Left (wert2$ , Len (wert2$) - 8)
    Wend
   
    Return (Int (wert1$) + Int (wert2$) + c) + returnWert$
End Function


Die beiden Funktionen Addieren und Multipliziernen sind von Rallimen....

Quelle: http://msdn.microsoft.com/libr...paceex.asp

Kryan

BeitragSo, Apr 17, 2005 13:19
Antworten mit Zitat
Benutzer-Profile anzeigen
^^ ich kenne mich noch nicht so mit dll's aus
und wenn ich das so starte geht es mit B3d und B+ nicht Confused
Wie geht das?
Webspaceanbieter?
Klick hier!
Kultige Spieleschmiede?
Klick hier!

simi

BeitragSo, Apr 17, 2005 13:57
Antworten mit Zitat
Benutzer-Profile anzeigen
Code: [AUSKLAPPEN]

.lib "kernel32.dll"
GetDiskFreeSpaceEx%(lpRootPathName$,lpFreeBytesAvailableToCaller*,lpTotalNumberOfBytes*,lpTotalNumberOfFreeBytes*):"GetDiskFreeSpaceExA"


Also, das tust du in den decls-ordener, mit einem Beliebigen Namen, zB. speicherplatz.decls

Dann startest du Blitz3d/blitz+ (neu).

jetzt sollte der Code funzen....

ozzi789

BeitragMi, Mai 05, 2010 14:45
Antworten mit Zitat
Benutzer-Profile anzeigen
Leichenschänder Embarassed

Ich versuche den Freien Speicherplatz zu ermitteln, dann mache ich die 2 PeekInt auf b3.
Funktioniert super, jedoch nur auf der Partition C:\, bei den anderen ist es immer etwas zu wenig.

Jemand Ideen?

mfg
0x2B || ! 0x2B
C# | C++13 | Java 7 | PHP 5

flona

BeitragMi, Mai 05, 2010 15:20
Antworten mit Zitat
Benutzer-Profile anzeigen
Um wie viel weicht der wirkliche denn vom zurückgegebenen Wert ab Question
www.Dreier-Florian.kilu.de
Intel Core 2 Quad Q9400 | Zotac 9800GT | 4GB RAM | 1TB HDD | Windows 7 Professional 32bit

ozzi789

BeitragMi, Mai 05, 2010 15:22
Antworten mit Zitat
Benutzer-Profile anzeigen
Bei 2 Laufwerken um 4251737600 beim 3ten um 4189220864.
Kann es dran liegen das es Partitionen sind? (sollte ja ned :O)

mfg


schaade das niemand weis wieso.
egal habs jetzt so gelöst:

Code: [AUSKLAPPEN]
ExecFile ("cmd /C dir C:\ -/C > D:\temp.dat")

Daraus filtere ich den Rest, bäh
0x2B || ! 0x2B
C# | C++13 | Java 7 | PHP 5

Neue Antwort erstellen


Übersicht BlitzBasic Allgemein

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group