Samuel Nicholson
Samuel Nicholson

Reputation: 3629

Trying to create a function

So I'm trying to change this sub in to a function so that I can reference it and set a label.text as it's result, this is so I don't have to creating new subs to update different labels.

Dim drive As String = "C"
        Dim disk As ManagementObject = _
            New ManagementObject _
            ("win32_logicaldisk.deviceid=""" + drive + ":""")
        disk.Get()
        Dim serial As String = disk("VolumeSerialNumber").ToString()
        Label1.Text = ("Serial: " & serial)

Can someone tell me how I can change this in to a function? I've tried declaring Serial as an empty String and then changing the last line to read:

Return serial = disk("VolumeSerialNumber").ToString()

At the moment this just sets Label1.Text to display "False", like I've set it as a Boolean or something?!

I'm learning functions at the moment, I'm trying to make things cleaner as up until now I've just been creating different subs to update labels etc...

I'm looking for some tips so I can try and get this myself.

Upvotes: 1

Views: 74

Answers (1)

Steve
Steve

Reputation: 216333

It is really a simple refactoring operation.

Sub Main

    Dim driveLetter = "X"
    Try
        Dim result = DriveSerialNumber(driveLetter)
        Console.WriteLine(result)
    Catch ex as Exception
        Console.WriteLine("Error: drive " & driveLetter & ": " & ex.Message)
    End Try
End Sub


Public Function DriveSerialNumber(drive as String) As String
    Dim disk As ManagementObject = _
            New ManagementObject _
            ("win32_logicaldisk.deviceid=""" + drive + ":""")
    disk.Get()
    return disk("VolumeSerialNumber").ToString()
End Function

However, be prepared to receive Exceptions if you pass an invalid drive letter

Upvotes: 2

Related Questions