"GetCelsius" wurde nicht deklariert. ?!

  • VB.NET
  • .NET (FX) 4.0

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

    "GetCelsius" wurde nicht deklariert. ?!

    Hallo, ich mal wieder X/

    Habe diesen Code aus dem Internet.

    VB.NET-Quellcode

    1. Public Function GetDriveTemp() As String
    2. Dim retval As String = ""
    3. Try
    4. Dim searcher As New ManagementObjectSearcher("root\WMI", "Select * from MSAcpi_ThermalZoneTemperature")
    5. Dim Counter As Integer = 1
    6. For Each queryObj As ManagementObject In searcher.Get()
    7. retval &= "DRIVE: " & Counter & "=" & GetCelsius(queryObj.GetPropertyValue("CurrentTemperature")).ToString("00.00")
    8. Counter += 1
    9. Next
    10. Catch ex As ManagementException
    11. MessageBox.Show(ex.Message)
    12. End Try
    13. Return retval
    14. End Function
    15. End Class


    Geht auch soweit alles aber er sagt mir den Fehler:

    Fehler 1 "GetCelsius" wurde nicht deklariert. Auf das Objekt kann aufgrund seiner Schutzstufe möglicherweise nicht zugegriffen werden.


    Gnarf,
    Die Methode ist mehr oder minder selbsterklärend. Meiner Meinung nach sollte allerdings noch eine Konvertierung stattfinden, da der Wert, den queryObj.GetPropertyValue zurückgibt, vom Typ Object sein dürfte.
    Allgemein ist vom Code nicht viel zu halten, da man das sowieso eher in Klassen auftrennen würde, denke ich.

    Viele Grüße
    ~blaze~

    TheVBNoob schrieb:

    Ich liebe es wenn Code im Internet verbreitet wird und nicht erklärt wird was wo passiert
    Ich liebe es, wenn Code aus dem Internet kopiert wird, ohne dass der Kopierer zu verstehen versucht, was er kopiert. ;)

    Das Problem in deinem Fall ist, dass nicht alle Boards bzw. BIOS-Firmwares das Auslesen der CPU-Temperatur unterstützen.
    Wenn das BIOS das nicht unterstützt, wird von WMI die entsprechende Methode auch nicht zur Verfügung gestellt.
    --
    If Not Program.isWorking Then Code.Debug Else Code.DoNotTouch
    --
    das mag auch ein Problem sein - weiß man ja nicht.

    Zunächst mal aber ist das Problem, dass der Code eine Funktion aufruft, dies nicht gibt.
    Mein Vorschlag: Dann halt sone Methode schreiben:

    VB.NET-Quellcode

    1. private Function GetCelsius(avalue As Object) As Object
    2. Return avalue
    3. end Function
    Damit wäre wenigstens der Compilerfehler behoben, und man sieht zumindest, ob und was vom ManagementObjectSearcher geliefert wird.