RAM Auslastung auslesen Fehler ?

  • VB.NET

Es gibt 14 Antworten in diesem Thema. Der letzte Beitrag () ist von LukaSoftware.

    RAM Auslastung auslesen Fehler ?

    Hi Leute ;)
    Ich schreibe gerade ein Programm, welches den aktuellen Physikalischen Nutzwert auslesen soll.
    Der Nutzwert von dem CPU funktioniert einwandfrei genauso wie die e-pot.
    Nur beim Arbeitsspeicher spackt das Programm völlig :)


    VB.NET-Quellcode

    1. Dim max_ram As String = My.Computer.Info.TotalPhysicalMemory
    2. Dim ver_ram As String = My.Computer.Info.AvailablePhysicalMemory
    3. Dim nuz_ram As String = max_ram - ver_ram
    4. Dim nutzram As String
    5. nutzram = Format(((nuz_ram) / 1048576) / 1024.ToString(), "#.##")
    6. ramanzeige.Text = nutzram
    7. Dim Prozentram As String
    8. Prozentram = Val(nutzram * 100)
    9. Dim Prozentram2 As String = Val(Prozentram / max_ram)
    10. ramanzeige.Text = Prozentram2

    hoffe ihr versteht meinen Code und das er nicht zu umständlich geschrieben ist.
    Er liest den vollen Ram aus (4GB)
    Er liest den noch verfügbaren Ram aus bsp:(2,7GB)
    Er subtrahiert beide werte = 1,3GB
    der Wert beträgt jetzt bsp = 1,31014234191239
    dann wird es mit durch 1048576 (das ist 1024 * 1024) genommen der Rest erklärt sich von selbst.

    So weit geht alles noch :)

    Aber das Dann in Prozentzahlen umrechnen... Da hackt es.

    Normal heißt es ja bei den verfügbaren werten so: (1,3 * 100)/4
    Aber das funktioniert nicht ^^
    Ich bitte um hilfe.

    MfG Lukas

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

    ja aber wenn ich es verwende sieht es immer so komisch aus

    VB.NET-Quellcode

    1. Dim max_ram As String = My.Computer.Info.TotalPhysicalMemory
    2. Dim ver_ram As String = My.Computer.Info.AvailablePhysicalMemory
    3. Dim nuz_ram As String = max_ram - ver_ram
    4. Dim nutzram As String
    5. nutzram = Format(((nuz_ram) / 1048576) / 1024.ToString(), "#.##")
    6. ramanzeige.Text = nutzram
    7. Dim Prozentram As String
    8. Prozentram = Val(nutzram * 100)
    9. Dim Prozentram2 As String = Val(Prozentram / max_ram)
    10. ramanzeige.Text = Prozentram2



    hmmm sonst ist es immer anders formatiert in 3 Zeilen. Aber jetzt geht es :) keine Ahnung warum es manchmal nicht geht. Sorry


    MfG Lukas

    LukaSoftware schrieb:

    Das in % zahlen umrechnen das möchte nicht funktionieren.

    Die Berechnung funktioniert nicht? Und jemand sagt dir, dass man mit Strings nicht rechnet? Aber das kann das Problem nicht sein?

    Vlt sitzt das Problem VOR dem Monitor?

    Denn es gibt nicht EINEN Grund, die ZAHLEN die man erhält in String umzuwandeln um damit dann was zu berechnen!
    Oh :) Ich mag so freundliche Menschen :) Du bist anscheinend ein sehr netter der die ganze Zeit nur herumschreit :wacko: . Welche von deiner Sorte braucht man öfters !
    Wenn man die Strings durch Integer ersetzt erscheint eine % Zahl von 100... und das hatte ich schon.
    Nachtrag: Long und Short geht auch nicht, sowie UInteger ULong und UShort alles schon durchgekaut.

    Warum bekommt man hier nicht die Antwort auf eine Frage ? Das habe ich in keinen Forum so schlimm erlebt wie hier.

    LukaSoftware schrieb:

    Warum bekommt man hier nicht die Antwort auf eine Frage ?

    Weil.
    1: Geht nicht, keine Fehlerbeschreibung ist.
    2: Die debugging Funktionen der IDE das step-by-step durchlaufen erlauben
    3: Du den (mindestens) ersten Teil der antwort bereits bekommen hast.


    Das habe ich in keinen Forum so schlimm erlebt wie hier.

    Knuddels.de?
    Geh doch mal in ein C++ Forum (aber kein Wannebee C forum!), da haut man dir deinen xxxx-Code so um die Ohren, dass dir die augen bluten.

    EDIT BTW:
    DEIN Code komplett ohne die String-Sch... gibt bei mir 56 aus. WENN man halt mit ZAHLEN rechnet, rechnet man. Ansonsten murkst man!

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

    Danke SystemUnknow,


    aber laut diesen Beitrag von Wikibooks bräuchte ich Long und das hatte ich schon getestet und es geht immer noch nicht.
    So und nicht das jetzt jemand sagt das ich wieder alles falsch mache...



    VB.NET-Quellcode

    1. Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
    2. Dim usedMemory As Double
    3. With My.Computer.Info
    4. usedMemory = (.TotalPhysicalMemory - .AvailablePhysicalMemory) / 1048576 / 1024
    5. End With
    6. ramanzeige.Text = usedMemory.ToString("N") & " GB"
    7. Dim Prozentram As Long
    8. Prozentram = My.Computer.Info.AvailablePhysicalMemory * 100
    9. Dim Prozentram2 As Integer = Val(Prozentram / My.Computer.Info.TotalPhysicalMemory)
    10. Dim neuer As String = String.Format(Prozentram2)
    11. ramanzeige.Text = neuer
    12. Dim a As Integer = Integer.Parse(Format(perfCounter.NextValue, "##0"))
    13. ProgressBar1.Value = a
    14. cpuanzeige.Text = a & " %"
    15. cpubar.Text = a & " %"
    16. End Sub


    Normal sollte der Code funktionieren...
    MfG Lukas

    /ignore picoflop



    PS: Ganz toll picoflop wenn mein Code bei dir funktioniert und bei mir immer noch 100 herausgibt obwohl der Leistungsindex bei mir 37% sagt. Ist das Forum nicht da um jemanden weiterzuhelfen und nicht sagen "bei mir geht des", "dein Code ist (entschuldige die Wortwahl) im Arsch", "bist du nicht zu jung für VB lass es einfach mit VB" oder ähnliches.
    Ich will immer noch wissen was bei mir schief läuft.

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

    LukaSoftware schrieb:

    Ich will immer noch wissen was bei mir schief läuft.

    Du verwendest den Debugger nicht? Breakpoint auf die erste Zeile, dann per F11 jede Zeile einzeln durchlaufen und dabei immer prüfen, welche Variable gerade welchen Wert hat. In dem Moment, wo es "merkwürdig" wird, schaut man sich die betreffende Zeile halt mal GAAAAAAAAANNNNNZZ genau an!

    SO schwer ist das ganze halt nicht. Immerhin reden wir hier von nem Einzeiler!
    Die Formatierung der Ausgabe soll man der ToString-Methode überlassen (mehr dazu siehe MSDN):

    VB.NET-Quellcode

    1. Dim ausgabe As New System.Text.StringBuilder
    2. With My.Computer
    3. ausgabe.AppendLine("Arbeitsspeicher vom " & .Name)
    4. ausgabe.AppendLine("===========================" & vbCrLf)
    5. With .Info
    6. ausgabe.AppendLine("Gesamt: " & (.TotalPhysicalMemory / 1024 / 1024).ToString("N") & " MB")
    7. ausgabe.AppendLine("--------------------------------------")
    8. ausgabe.AppendLine("Frei: " & (.AvailablePhysicalMemory / 1024 / 1024).ToString("N") & " MB")
    9. ausgabe.AppendLine("Prozentual: " & (.AvailablePhysicalMemory / .TotalPhysicalMemory).ToString("P"))
    10. ausgabe.AppendLine("--------------------------------------")
    11. ausgabe.AppendLine("Verwendet: " & ((.TotalPhysicalMemory - .AvailablePhysicalMemory) / 1024 / 1024).ToString("N") & " MB")
    12. ausgabe.AppendLine("Prozentual: " & ((.TotalPhysicalMemory - .AvailablePhysicalMemory) / .TotalPhysicalMemory).ToString("P"))
    13. End With
    14. End With
    15. MessageBox.Show(ausgabe.ToString)