Avatar billede acp Nybegynder
13. juli 2004 - 12:57 Der er 18 kommentarer og
1 løsning

Finde størelsen på et Bibliotek

Hej,

Jeg kunne godt tænke at finde ud af meget et bibliotek fylder?

Folderen hvor programemt skal tjekke størelsen findes under system.ini Og hvis størelsen er større end en værdi som skal angives en system.ini fil, som skal indlæses ved opstart af programmet... Hvis der overskrider den tilladte størelse så skal der komme en MSGBOX hvor teksten fra Warning fremtræder...

Indholdet af denne fil er som følger:

# Userprofile
Profile-Folder="M:\Userdata\Profile"
Max-Size="50MB"
Warning="Bla Bla bla....."

Hvordan kan man gøre det med VB?

-Anders.
Avatar billede kabbak Professor
13. juli 2004 - 22:53 #1
Private Sub Command1_Click()
' kræver ref. til Microsoft scripting Runtime

Profile_Folder = "C:\data"
Dim fs, f, s
    Set fs = CreateObject("Scripting.FileSystemObject")
    Set f = fs.GetFolder(Profile_Folder)
    s = UCase(Profile_Folder) & " uses " & ((f.Size / 1024) / 1024) & " MB."
    MsgBox s, 0, "Folder Size Info"

End Sub

noget at starte på
Avatar billede acp Nybegynder
14. juli 2004 - 13:24 #2
Hej,

Jeg kan godt få størelsen på mappen i MB, men jeg vil gerne have at hvis 1024 MB, at den så runder op til GB istedet for...

-Anders.
Avatar billede kabbak Professor
14. juli 2004 - 13:59 #3
Private Sub Command1_Click()
'kræver ref. til Microsoft scripting Runtime

Profile_Folder = "C:\data"
Dim fs, f, s, Brugt As Long, Bem As String
Set fs = CreateObject("Scripting.FileSystemObject")
Set f = fs.GetFolder(Profile_Folder)

If f.Size > 1024 Then Brugt = (f.Size / 1024): Bem = " kb"
If Brugt > 1024 Then Brugt = (Brugt / 1024): Bem = " MB"
If Brugt > 1024 Then Brugt = (Brugt / 1024): Bem = " GB"

   
    s = UCase(Profile_Folder) & " indeholder " & Brugt & Bem
    MsgBox s, 0, "Folder Size Info"

End Sub
Avatar billede acp Nybegynder
14. juli 2004 - 14:20 #4
Hej kabbak,

Det er kanont, det eneste jeg ikke lige forstår at de linier er ens:
If Brugt > 1024 Then Brugt = (Brugt / 1024): Bem = " MB"
If Brugt > 1024 Then Brugt = (Brugt / 1024): Bem = " GB"

Den eneste forskel er at i den ene linie står der MB og den anden står der GB...

Det sidste jeg mangler at hvis at mappe størelsen er over fx 75 MB så kommer der en MSGBOX med en advarsel, ellers kommer der ingen ting...
Avatar billede kabbak Professor
14. juli 2004 - 14:55 #5
Private Sub Command1_Click()
'kræver ref. til Microsoft scripting Runtime
Dim fs, f, s, Brugt As Variant, Bem As String, MaksStørrelse As Long
MaksStørrelse = 75 ' din maks størrelse i MB
Profile_Folder = "C:\" ' dit drev

Set fs = CreateObject("Scripting.FileSystemObject")
Set f = fs.GetFolder(Profile_Folder)
Brugt = f.Size: Bem = " bytes" ' størrelse under  1 Kb
If f.Size > 1024 Then Brugt = (Brugt / 1024): Bem = " kb" ' størrelse under 1 MB
If Brugt > 1024 Then      ' størrelse under 1 GB
Brugt = (Brugt / 1024)
Bem = " MB"
If Brugt > MaksStørrelse Then
MsgBox "Der er brugt " & Format(Brugt, "#.#0") & " " & Bem & " og maksimum er " & MaksStørrelse & Bem
Exit Sub
End If
End If
'nedenstående linie får du ikke brug for

If Brugt > 1024 Then Brugt = (Brugt / 1024): Bem = " GB" ' størrelse over  1 GB

'denne bruges hvis du ikke overskrider maks størrelsen
    s = UCase(Profile_Folder) & " indeholder " & Format(Brugt, "#.#0") & Bem
    MsgBox s, 0, "Folder Size Info"

End Sub
Avatar billede acp Nybegynder
14. juli 2004 - 16:32 #6
Hej Kabbak,

Når jeg kører programmet, hvis størelsen på Mappen er større end de tilladte 75 MB, så kommer der ingen advarsel, er størelsen mindre siger programmet at man overskrider den tilladte størelse...

Derudover hvis størelse på mappen er over 1024 Mb så oversætter programmet det ikke det til GB....
Avatar billede kabbak Professor
14. juli 2004 - 16:53 #7
Private Sub Command1_Click()
'kræver ref. til Microsoft scripting Runtime
Dim fs, f, s, Brugt As Variant, Bem As String, MaksStørrelse As Long
MaksStørrelse = 75 ' din maks størrelse i MB
Profile_Folder = "C:\data" ' dit drev

Set fs = CreateObject("Scripting.FileSystemObject")
Set f = fs.GetFolder(Profile_Folder)
  Brugt = f.Size: Bem = " bytes" ' størrelse under  1 Kb
If f.Size > 1024 Then Brugt = (Brugt / 1024): Bem = " kb" ' størrelse under 1 MB
If Brugt > 1024 Then      ' størrelse under 1 GB
Brugt = (Brugt / 1024): Bem = " MB"
If Brugt > MaksStørrelse Then
  If Brugt > 1024 Then Brugt = (Brugt / 1024): Bem = " GB"
  MsgBox "I Biblioteket( " & UCase(Profile_Folder) & " )" & vbCrLf _
  & "er der brugt " & Format(Brugt, "#.#0") & " " & Bem _
  & " og maksimum er " & MaksStørrelse & " MB", , "Advarsel"
Exit Sub
End If
End If

'denne bruges hvis du ikke overskrider maks størrelsen
    s = UCase(Profile_Folder) & " indeholder " & Format(Brugt, "#.#0") & Bem
    MsgBox s, 0, "Folder Size Info"

End Sub

Nu oversætter den til GB, den anden fejl får jeg ikke
Avatar billede acp Nybegynder
14. juli 2004 - 17:22 #8
Hej igen igen igen....

Dim fs, f, s, Brugt As Variant, Bem As String, MaxStørrelse As Long

MaxStørrelse = 75
ProfileFolder = "C:\userdata"
Set fs = CreateObject("Scripting.FileSystemObject")
Set f = fs.GetFolder(ProfileFolder)

  Brugt = f.Size: Bem = " bytes"
If f.Size > 1024 Then Brugt = (Brugt / 1024): Bem = " kb"
If Brugt > 1024 Then
Brugt = (Brugt / 1024): Bem = " MB"

If Brugt > MaxStørrelse Then
 
  If Brugt > 1024 Then Brugt = (Brugt / 1024): Bem = " GB"
  MsgBox "Din profil overskrider den tilladte størelse " & MaxStørrelse & Bem & " ! Din profil flyder pt. " & Brugt & Bem
Exit Sub
End If
End If

'denne bruges hvis du ikke overskrider maks størrelsen
    s = UCase(Profile_Folder) & " indeholder " & Format(Brugt, "#.#0") & Bem
    MsgBox s, 0, "Folder Size Info"

Det eneste problem der er tilbage er hvis mappen størelse er i GB så skrives Brugt med GB, MB, KB og Bytes... Vil gerne ha det rundet af til bare GB...

Vil også gerne kunne angive om Max værdien er i MB, GB eller Kb...

Når det er løst så har jeg vist ikke flere problemer...
Avatar billede kabbak Professor
14. juli 2004 - 17:57 #9
Private Sub Command1_Click()
'kræver ref. til Microsoft scripting Runtime
Dim fs, f, s, Brugt As Variant, Bem As String, MaksStørrelse As Long, Art As String, ST As Boolean
ST = False
MaksStørrelse = 1 ' din maks størrelse
Art = "MB"            'bytes,kb,MB eller GB
Profile_Folder = "C:\userdata" ' dit drev
Set fs = CreateObject("Scripting.FileSystemObject")
Set f = fs.GetFolder(Profile_Folder)
Brugt = f.Size
Select Case UCase(Art)
Case "BYTES"
Bem = " bytes"
If Brugt > MaksStørrelse Then ST = True
Case "KB"
Bem = " kb"
Brugt = (Brugt / 1024)
If Brugt > MaksStørrelse Then ST = True
Case "MB"
Bem = " MB"
Brugt = ((Brugt / 1024) / 1024)
If Brugt > MaksStørrelse Then ST = True
Case "GB"
Bem = " GB"
Brugt = (((Brugt / 1024) / 1024) / 1024)
If Brugt > MaksStørrelse Then ST = True
Case Else
MsgBox " Du har ikke valg en korrekt betegnelse for Art"
End Select
Ialt = (((f.Size / 1024) / 1024) / 1024)
If ST = True Then
  MsgBox "I Biblioteket( " & UCase(Profile_Folder) & " )" & vbCrLf _
  & "er der brugt " & Format(Ialt, "0#.###0") & " GB" _
  & " og maksimum er " & MaksStørrelse & " " & Art, , "Advarsel"
Exit Sub

End If

'denne bruges hvis du ikke overskrider maks størrelsen
    s = UCase(Profile_Folder) & " indeholder " & Format(Ialt, "0#.###0") & " GB"
    MsgBox s, 0, "Folder Size Info"

End Sub
Avatar billede acp Nybegynder
14. juli 2004 - 18:08 #10
Hej

Hvad er den letteste måde at bare søge for at værdierne er rundet op eller ned så det er et lige tal?

-Anders.
Avatar billede kabbak Professor
14. juli 2004 - 18:30 #11
"0#.0" = 1 dicimal
"0#.#0" = 2 dicimaler
"0#" = ingen dicimal
Avatar billede kabbak Professor
14. juli 2004 - 18:30 #12
den runder op
Avatar billede acp Nybegynder
14. juli 2004 - 18:43 #13
okay Cool,

Hvordan vil du gøre det kan den sættes ind i Brugt værdien?

-Anders.
Avatar billede kabbak Professor
14. juli 2004 - 18:55 #14
Brugt variablen, er bare mellemregninger nu, så den skal vel ikke ændres.

Den reelle brugte plads er i Varablen Ialt

Format(Ialt, "0#.###0") = 4 decimaler

Format(Ialt, "0") = 0 decimaler
Avatar billede acp Nybegynder
15. juli 2004 - 08:43 #15
Hej Kabbak,

Jeg har lige testet din kode... enten om man har overskredet MAXværdien eller ikke så kommer den og siger at det er i GB, derudover så er Brugt = XX.XXXX, jeg vil gerne bare have at jeg har et lige tal, altså som 2 GB, 100 MB, 50 Kb eller andet...
Avatar billede kabbak Professor
15. juli 2004 - 10:00 #16
rettet sidste del

End Select
If ST = True Then
  MsgBox "I Biblioteket( " & UCase(Profile_Folder) & " )" & vbCrLf _
  & "er der brugt " & Format(Brugt, "0#") & Bem _
  & " og maksimum er " & MaksStørrelse & " " & Art, , "Advarsel"
Exit Sub

End If

'denne bruges hvis du ikke overskrider maks størrelsen
    s = UCase(Profile_Folder) & " indeholder " & Format(Brugt, "0#") & Bem
    MsgBox s, 0, "Folder Size Info"

End Sub
Avatar billede acp Nybegynder
15. juli 2004 - 10:15 #17
Hej med dig,

Det er kanont, det virker jo som det skal nu, det eneste som jeg kan se er at den ikke regner om til GB men benytter MB.... Fx du har en mappe som er på 2144 MB, det fortæller programmet at mappen er på 2144 MB, det er OK, hvis det ikke kan rettes til at vise 2 GB....

Du får i hverfald dine point...

Tak for hjælpen...

Hilsen Anders.
Avatar billede kabbak Professor
15. juli 2004 - 10:55 #18
Den regner i den størrelse du angiver din maks størrelse i
Avatar billede kabbak Professor
15. juli 2004 - 10:55 #19
og tak for point ;-))
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester