Verzia operačného systému   otázka

VB.NET

Mám kód na zistenie verzie operačného systému Windows, ktorý mi do labelu vypíše verziu operačného systému.

  ReadOnly Property GetOSEnv() As String

        Get
            Select Case mPlatform
                Case PlatformID.Win32NT
                    If mVersion.Major = 4 Then
                        Return "Windows NT 4.0"
                    ElseIf mVersion.Major = 3 Then
                        Return "Windows NT 3.51"
                    ElseIf mVersion.Major = 5 Then
                        Select Case mVersion.Minor
                            Case 0
                                Return "Windows 2000"
                            Case 1
                                Return "Windows XP"
                            Case 2
                                Return "XP SP2/Server 2003"
                        End Select
                    Else
                    Select Case mVersion.Minor
                        Case 0
                            Return "Windows Vista/Server 2008"
                        Case 1
                            Return "Windows 7/Server 2008 R2"
                            Case 2
                                Return "Windows 8/Server 2012"
                        End Select
                    End If
                Case PlatformID.Win32Windows
                    If mVersion.Minor = 10 Then
                      If mVersion.Revision.ToString = "2222A" then                       Return "Windows 98 SE"
                      Else
                           Return "Windows 98"
                      End If
                    ElseIf mVersion.Minor = 0 Then
                        Return "Windows 95"
                    Else
                        Return "Windows Me"
                    End If
                Case PlatformID.WinCE
                    Return "Windows CE"
                Case PlatformID.Win32S
                    Return "Windows 16 Bit"
            End Select

        End Get

    End Property

Hlási mi to túto chybu

Warning 1 : Property 'GetOSEnv' doesn't return a value on all code paths. A null reference exception could occur at run time when the result is used.

Kód funguje, label ukazuje správny názov OS, skúšal som to len na XP a 7

Label2.Text = GetOSEnv()

Vedel by mi niekto poradiť čo robím zle, alebo ako sa zbaviť chybovej hlášky ? Vopred ďakujem.

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Nějaký if nebo case nemáte ošetřený a funkce se může ukončit bez toho, aby něco vrátila.

Ale jdete na to zbytečně složitě, .Net obsahuje funkce které vrátí název systému, platformu i číslo buildu.

Podívejte se na tyto funkce, zřejmě Vám výrazně zjednodušší život:


        My.Computer.Info.OSFullName
        My.Computer.Info.OSPlatform
        My.Computer.Info.OSVersion

nahlásit spamnahlásit spam 1 / 1 odpovědětodpovědět

Ten postup mám s knihy "Visual Basic .net - Velká kniha řešení" z ktorej sa učím len som k tomu pridal detekciu WIN8 čo som našiel na stránkach MS. Ale ten OSFullName je presne to čo som potreboval. Ďakujem

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Upozornění v angličtině nechápete? Pak se naučte anglicky.

Upozorňuje vás to na to, že ne všechny větve Select/If vedou k vrácení nějaké hodnoty a v takovém případě to vrátí výchozí hodnotu Nothing. Příklad:

Function X() As String
  Dim b As Boolean
  If b Then
    Return "X"
  End If
End Function

Není zde uvedeno, co se má stát, když b nebude True a v takovém případě to vrátí Nothing, což může být pro začátečníka nečekané. Zapněte si Option Strict On a kompilátor vás přes takovou věc ani nepustí.

nahlásit spamnahlásit spam 1 / 1 odpovědětodpovědět

Ďakujem za radu p.Linhart z toho Vášho príkladu je mi to už úplne jasné, Option Strict som nastavil na ON, hodilo mi to 3 chyby ale tie som odstránil pridaním ".ToString".

nahlásit spamnahlásit spam 1 / 1 odpovědětodpovědět
                       
Nadpis:
Antispam: Komu se občas házejí perly?
Příspěvek bude publikován pod identitou   anonym.
  • Administrátoři si vyhrazují právo komentáře upravovat či mazat bez udání důvodu.
    Mazány budou zejména komentáře obsahující vulgarity nebo porušující pravidla publikování.
  • Pokud nejste zaregistrováni, Vaše IP adresa bude zveřejněna. Pokud s tímto nesouhlasíte, příspěvek neodesílejte.

přihlásit pomocí externího účtu

přihlásit pomocí jména a hesla

Uživatel:
Heslo:

zapomenuté heslo

 

založit nový uživatelský účet

zaregistrujte se

 
zavřít

Nahlásit spam

Opravdu chcete tento příspěvek nahlásit pro porušování pravidel fóra?

Nahlásit Zrušit

Chyba

zavřít

feedback