Laden...

ProgressBar - der Belegte Speicher einer Festplatte als Prozentsatz berechnen

Erstellt von csharp-user vor 8 Jahren Letzter Beitrag vor 8 Jahren 2.646 Views
Thema geschlossen
C
csharp-user Themenstarter:in
63 Beiträge seit 2011
vor 8 Jahren
ProgressBar - der Belegte Speicher einer Festplatte als Prozentsatz berechnen

Hallo zusammen,

ich möchte gerne den Value vom ProgressBar nach einem bestimmten Intervall setzen. Also je nachdem, wie der freie Festplattenspeicher aussieht.
Der ProgressBar soll nur so viel anzeigen (noch verfügbare Kapazität), wie es auf der Festplatte belegt ist.

ObjectQuery query = new ObjectQuery("SELECT FreeSpace FROM Win32_LogicalDisk where DeviceID = 'C:'");

foreach (ManagementObject m in queryCollection)
{
    freeSpace = Math.Round((Convert.ToDecimal(m["FreeSpace"]) / 1073741824), 2);
}

FreeSpace ist: 159 GB
Die Gesamtgröße der Festplatte ist: 449 GB

Wie kann ich nun das Ganze als Prozentsatz berechnen und den Value vom ProgressBar entsprechend setzen?

progressBar1.Value = ?

Der Value soll NUR den belegten Speicher (als Prozent) von 449 GB anzeigen.

Vielen Dank im Voraus.

5.658 Beiträge seit 2006
vor 8 Jahren

Hi csharp-user,

wo liegt das Problem? Bei der Prozentrechnung oder bei der Verwendung der Progressbar?

Christian

Weeks of programming can save you hours of planning

6.911 Beiträge seit 2009
vor 8 Jahren

Hallo csharp-user,

auch im Grundlagenforum kann Prozentrechnung vorausgesetzt werden.


// freier Speicher
progressBar1.Value = (int)(freeSpace / 449d * 100d);

// belegter Speicher
progressBar1.Value = (int)((1.0 - freeSpace / 449d) * 100d);

Das Convert.ToDecimal kannst du dir auch sparen das es nicht nötig ist.

Das d bei 449 gibt an, dass es sich um ein double handelt.

mfG Gü

Stellt fachliche Fragen bitte im Forum, damit von den Antworten alle profitieren. Daher beantworte ich solche Fragen nicht per PM.

"Alle sagten, das geht nicht! Dann kam einer, der wusste das nicht - und hat's gemacht!"

C
csharp-user Themenstarter:in
63 Beiträge seit 2011
vor 8 Jahren

Vielen Dank. Ich werde es testen und mich noch melden.

C
csharp-user Themenstarter:in
63 Beiträge seit 2011
vor 8 Jahren
// belegter Speicher
progressBar1.Value = (int)((1.0 - freeSpace / 449d) * 100d);

freeSpace ist 159GB.

(int)((1.0 - 159 / 449d) * 100d)

liefert mir 64. Wie soll ich diese Zahl interpretieren? Ist 64 der Prozentsatz?

Wenn ich die Festplattengröße unter Windows anschaue, dann steht dort:

Gesamtgröße (Speicherkapazität) der Festplatte: 449 GB
Freier Speicher: 159 GB
Belegter Speicher: 290 GB

Also, 64% von 449 GB ist zurzeit belegt oder?

Was ist mit:

progressBar1.Minimum =  
und 
progressBar1.Maximum = 

Muss ich diese Werte setzen?

Ich möchte, dass der progressBar zeigt: so und soviel Prozent% von 449 GB ist zurzeit belegt. Und bei 100% ist erreicht der progressBar das Maximum.

Danke.

T
64 Beiträge seit 2011
vor 8 Jahren

Ist jetzt nicht böse gemeint aber vielleicht solltest du dich wirklich erst einmal mit den Grundlagen der Prozentrechnung beschäftigen bevor du dich an ein solches Problem wagst.
Du hast von gfoidl eigentlich eine sehr gute Lösung für das Problem erhalten, welche dir den Prozentsatz des belegten Speichers ausgibt.

Nach kurzer Überlegung solltest du auch drauf kommen was bei Minimum und Maximum eingesetzt werden sollte. Wie viel Prozent deiner Festplatte wären den belegt wenn diese leer oder voll ist?

5.658 Beiträge seit 2006
vor 8 Jahren

Damit ist alles gesagt und hier zu. Bitte beachte unseren [Hinweis] Wie poste ich richtig? , besonders Punkt 1. Was die Minimum- und Maximum-Eigenschaften betrifft, hättest du bei einem Blick in die Doku schneller eine Antwort bekommen.

Christian

Weeks of programming can save you hours of planning

Thema geschlossen