Maximalwert bzw Höchstwert anzeigen

  • VB.NET

Es gibt 6 Antworten in diesem Thema. Der letzte Beitrag () ist von ElBarto.

    Maximalwert bzw Höchstwert anzeigen

    Hallo Leute

    Was Visual Basic angeht bin ich noch ein absoluter Neuling.
    Learning
    by Doing, verschiedene Guides und das www haben mir schon viel geholfen,
    aber nun hänge ich seit nunmehr fast einem Tag an einem Problem fest
    und ich finde einfach keine Lösung.

    Mit folgendem Code ist es mir gelungen die aktuelle CPU Auslastung darzustellen:
    lblCpulastmax.Text = pcCpulast.NextValue

    Kurze erklärung:
    Die
    Abfrage wird mit einem Timer einmal pro Sekunde getätigt. Die aktuelle
    CPU Auslastung wird über den performence Counter "pcCpulast.NextValue"
    in dem Label "lblCpulastmax.Text" angezeigt.
    Das funktioniert auch wunderbar! :)

    Allerdings
    ist das nicht mein eigentliches Ziel. Ich möchte nämlich garnicht den
    aktuellen Wert im Label haben, sondern den höchsten, der bisher
    ausgelesen wurde.
    Beispiel: Die CPU Auslastung steht bei 10%, so soll im Label 10% stehen. Bei der nächsten Abfrage liegt sie bei 51%, jetzt soll im Label auch 51% stehen. Nun fällt sie auf 2%, im Label soll weiterhin 51% angezeigt werden.

    Bin schon ne ganze Weile am herumprobieren, aber nichts klappt. Echt frustrierend :(

    Nun hoffe ich von euch etwas Hilfe zu bekommen. Ein fertiger Code wäre natürlich ne feine Sache. Aber mir würde es schon reichen wenn mir ein paar Tipps gegeben werden, wie ich an die Sache rangehen muss.
    1. Option Strict On
    2.

    VB.NET-Quellcode

    1. Private lastValue As Integer = 0
    2. Private Sub XXX()
    3. lastValue = Math.Max(pcCpulast.NextValue, lastValue)
    4. lblCpulastmax.Text = lastValue.ToString
    5. End Sub
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    Hi!
    Du kannst, bevor Du den neuen Wert in's lblCpulastmax einträgst schauen, ob der neue Wert größer ist und erst dann eintragen.

    ... den Rest spar ich mir, Rod war wieder einmal schneller :huh:
    Gruß & ...
    Lächle heut, morgen wird's schlimmer !!!

    Buch lesen | Bitte VB Tags benutzen - was ist damit gemeint? |
    WoW. Das ging ja sehr fix.

    Hab da zwar noch einige Probleme aber wird wohl werden. Jetzt geht nämlich meine aktuelle Anzeige des CPU Wertes nicht mehr :D . Einmal nicht aufgepasst und schon verhunst.

    VB wollte auch deinen Code aus Zeile 3 so nicht akzeptieren. Und hat mir den Vorschlag gemacht ihn so zu schreiben:

    lastValue = CInt(Math.Max(pcCpulast.NextValue, lastValue))


    Ich habe das ganze aber auch mal für meine RAM Abfrage umgesetzt und da funktioniert es auch. :)
    Nun wollte ich da aber auch ein Label mit einem Minimalwert füllen. Habe dazu CInt(Math.Max (....)) in CInt(Math.Min (....)) geändert. Allerdings bleibt der Wert bei 0, obwohl mein RAM deutlich voller als 0MB ist... hat da noch jemand einen Tipp?

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „ElBarto“ ()

    Anstatt Math.Max() könntest du auch den Bedingungsoperator verwenden.

    VB.NET-Quellcode

    1. Private maxValue As Integer = 0
    2. Private lastValue As Integer = 0
    3. Private Sub XXX()
    4. lastValue = pcCpulast.NextValue
    5. maxValue = if(lastValue > maxValue, lastValue, maxValue)
    6. lblCpulastmax.Text = lastValue.ToString
    7. End Sub
    Von meinem iPhone gesendet

    VB.NET-Quellcode

    1. Private lastValueMax As Integer = 0
    2. Private lastValueMin As Integer = Integer.MaxValue ' @@@ das hier
    3. Private Sub XXX()
    4. lastValueMax = Math.Max(pcCpulast.NextValue, lastValueMax)
    5. lastValueMin = Math.Min(pcCpulast.NextValue, lastValueMin)
    6. lblCpulastmax.Text = lastValue.ToString
    7. End Sub
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!