Skip to content
  • Categories
  • Recent
  • Tags
  • Popular
  • World
  • Users
  • Groups
Skins
  • Light
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Default (No Skin)
  • No Skin
Collapse
Code Project
  1. Home
  2. General Programming
  3. Visual Basic
  4. I am trying to port this code from VBScript to C#

I am trying to port this code from VBScript to C#

Scheduled Pinned Locked Moved Visual Basic
csharphelpquestioncareer
14 Posts 7 Posters 0 Views 1 Watching
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • S Steve Messer

    Unfortunately I am not familiar with any languages with a "V" in name...

    Function zGetFolder( sFolder )
    On Error Resume Next
    Set zGetFolder = oFso.GetFolder( sFolder )
    If Err.Number <> 0 Then
    Wscript.Echo "Error connecting to: " & sFolder & VBlf & "[" & Err.Number & "]" & Err.Description
    Wscript.Quit Err.Number
    End If
    End Function

    Questions: The line I don't understand is: Set zGetFolder = oFso.GetFolder(sFolder) Why would you "Set" a call to oFso.GetFolder with "zGetFolder" the name of the function you are currently in??? I am also not quite sure what "On Error Resume Next" accomplishes with this construct.

    D Offline
    D Offline
    Dave Kreskowiak
    wrote on last edited by
    #2

    In VBScript, if a function returns an instance of a class or any object, you have to SET the variable to that instance. Also, "On Error Resume Next" is error handling, which would be a try/catch block in C#. Resume Next just tells VB to continue executing code even if an error occurs. It also sets the values of the Err object if an error does occur. Basically, all that code boils down to this in C#:

    var zGetFolder = new DirectoryInfo(sFolder);
    

    You can find the documentation on the DirectoryInfo class here[^].

    Asking questions is a skill CodeProject Forum Guidelines Google: C# How to debug code Seriously, go read these articles.
    Dave Kreskowiak

    S Richard DeemingR 2 Replies Last reply
    0
    • D Dave Kreskowiak

      In VBScript, if a function returns an instance of a class or any object, you have to SET the variable to that instance. Also, "On Error Resume Next" is error handling, which would be a try/catch block in C#. Resume Next just tells VB to continue executing code even if an error occurs. It also sets the values of the Err object if an error does occur. Basically, all that code boils down to this in C#:

      var zGetFolder = new DirectoryInfo(sFolder);
      

      You can find the documentation on the DirectoryInfo class here[^].

      Asking questions is a skill CodeProject Forum Guidelines Google: C# How to debug code Seriously, go read these articles.
      Dave Kreskowiak

      S Offline
      S Offline
      Steve Messer
      wrote on last edited by
      #3

      Thanks for the explanation. What you said makes perfect sense. I still don't understand why you would do this: Set zGetFolder = oFso.GetFolder( sFolder ) When zGetFolder is the name of the function that line of code is in. Does this zGetFolder only exist in the scope of the function?

      M L R D 5 Replies Last reply
      0
      • S Steve Messer

        Thanks for the explanation. What you said makes perfect sense. I still don't understand why you would do this: Set zGetFolder = oFso.GetFolder( sFolder ) When zGetFolder is the name of the function that line of code is in. Does this zGetFolder only exist in the scope of the function?

        M Offline
        M Offline
        Mycroft Holmes
        wrote on last edited by
        #4

        I think you'll find that the function is designed to return the folder to the calling method. Therefore

        Steve Messer wrote:

        Set zGetFolder = oFso.GetFolder( sFolder )

        should return the folder (it will be a variable in the calling function).

        Never underestimate the power of human stupidity RAH

        1 Reply Last reply
        0
        • S Steve Messer

          Thanks for the explanation. What you said makes perfect sense. I still don't understand why you would do this: Set zGetFolder = oFso.GetFolder( sFolder ) When zGetFolder is the name of the function that line of code is in. Does this zGetFolder only exist in the scope of the function?

          L Offline
          L Offline
          Lost User
          wrote on last edited by
          #5

          Steve Messer wrote:

          When zGetFolder is the name of the function that line of code is in.

          No they are different. The resulting variable is named zGetFolder (leading z), but the function is named GetFolder (no leading z).

          1 Reply Last reply
          0
          • S Steve Messer

            Thanks for the explanation. What you said makes perfect sense. I still don't understand why you would do this: Set zGetFolder = oFso.GetFolder( sFolder ) When zGetFolder is the name of the function that line of code is in. Does this zGetFolder only exist in the scope of the function?

            L Offline
            L Offline
            Lost User
            wrote on last edited by
            #6

            Steve Messer wrote:

            When zGetFolder is the name of the function that line of code is in.

            That is how a function returns data to its caller. The name of the function is an alias for the name of the variable to return. So setting the name in that way, the caller of the function will receive the value obtained by GetFolder.

            1 Reply Last reply
            0
            • S Steve Messer

              Thanks for the explanation. What you said makes perfect sense. I still don't understand why you would do this: Set zGetFolder = oFso.GetFolder( sFolder ) When zGetFolder is the name of the function that line of code is in. Does this zGetFolder only exist in the scope of the function?

              R Offline
              R Offline
              Ralf Meier
              wrote on last edited by
              #7

              The GetFolder-Method comes from oFso. This must be declared somewhere else and means the FileSystemObject (Example : Set FSO = CreateObject("Scripting.FileSystemObject") ). If you come from VBScript you will find a lot of differences (not only with the Code-Syntax) to .Net (it is independant if you take VB.NET or C#.Net).

              1 Reply Last reply
              0
              • D Dave Kreskowiak

                In VBScript, if a function returns an instance of a class or any object, you have to SET the variable to that instance. Also, "On Error Resume Next" is error handling, which would be a try/catch block in C#. Resume Next just tells VB to continue executing code even if an error occurs. It also sets the values of the Err object if an error does occur. Basically, all that code boils down to this in C#:

                var zGetFolder = new DirectoryInfo(sFolder);
                

                You can find the documentation on the DirectoryInfo class here[^].

                Asking questions is a skill CodeProject Forum Guidelines Google: C# How to debug code Seriously, go read these articles.
                Dave Kreskowiak

                Richard DeemingR Offline
                Richard DeemingR Offline
                Richard Deeming
                wrote on last edited by
                #8

                Dave Kreskowiak wrote:

                Basically, all that code boils down to this in C#:

                Almost. :) The GetFolder Method[^] generates an error if the folder doesn't exist. The DirectoryInfo constructor doesn't. You'd need to check the Exists property, and either display a message or throw an exception if it returns False.


                "These people looked deep within my soul and assigned me a number based on the order in which I joined." - Homer

                "These people looked deep within my soul and assigned me a number based on the order in which I joined" - Homer

                D 1 Reply Last reply
                0
                • Richard DeemingR Richard Deeming

                  Dave Kreskowiak wrote:

                  Basically, all that code boils down to this in C#:

                  Almost. :) The GetFolder Method[^] generates an error if the folder doesn't exist. The DirectoryInfo constructor doesn't. You'd need to check the Exists property, and either display a message or throw an exception if it returns False.


                  "These people looked deep within my soul and assigned me a number based on the order in which I joined." - Homer

                  D Offline
                  D Offline
                  Dave Kreskowiak
                  wrote on last edited by
                  #9

                  Yeah, I know. There are other issues with the OP's understanding that I just didn't directly address because of time.

                  Asking questions is a skill CodeProject Forum Guidelines Google: C# How to debug code Seriously, go read these articles.
                  Dave Kreskowiak

                  1 Reply Last reply
                  0
                  • S Steve Messer

                    Thanks for the explanation. What you said makes perfect sense. I still don't understand why you would do this: Set zGetFolder = oFso.GetFolder( sFolder ) When zGetFolder is the name of the function that line of code is in. Does this zGetFolder only exist in the scope of the function?

                    D Offline
                    D Offline
                    Dave Kreskowiak
                    wrote on last edited by
                    #10

                    zGetFolder is NOT the name of a function. It's just a variable holding a value or, in this case, and object returned by the call to the GetFolder() function. The GetFolder() function is a member of the FileSystemObject class instance that the variable oFso holds.

                    Asking questions is a skill CodeProject Forum Guidelines Google: C# How to debug code Seriously, go read these articles.
                    Dave Kreskowiak

                    S 1 Reply Last reply
                    0
                    • D Dave Kreskowiak

                      zGetFolder is NOT the name of a function. It's just a variable holding a value or, in this case, and object returned by the call to the GetFolder() function. The GetFolder() function is a member of the FileSystemObject class instance that the variable oFso holds.

                      Asking questions is a skill CodeProject Forum Guidelines Google: C# How to debug code Seriously, go read these articles.
                      Dave Kreskowiak

                      S Offline
                      S Offline
                      Steve Messer
                      wrote on last edited by
                      #11

                      So basically: 1. 'On Error Resume Next' turns on user error handling as the default behavior is to exit on errors 2. If the call to oFso.GetFolder returns an error the function will Echo out the error code and continue execution instead of the normal behavior of exiting This would make since as this is part of an ETL process which is just copying backups to a shared drive. The process doesn't need to stop if the shared drive is unavailable for some reason. Thanks everyone!

                      Richard DeemingR 1 Reply Last reply
                      0
                      • S Steve Messer

                        So basically: 1. 'On Error Resume Next' turns on user error handling as the default behavior is to exit on errors 2. If the call to oFso.GetFolder returns an error the function will Echo out the error code and continue execution instead of the normal behavior of exiting This would make since as this is part of an ETL process which is just copying backups to a shared drive. The process doesn't need to stop if the shared drive is unavailable for some reason. Thanks everyone!

                        Richard DeemingR Offline
                        Richard DeemingR Offline
                        Richard Deeming
                        wrote on last edited by
                        #12

                        Steve Messer wrote:

                        the function will Echo out the error code and continue execution instead of the normal behavior of exiting

                        Not quite. The Wscript.Quit Err.Number line following the Wscript.Echo ... line will cause the script to quit, with no possibility for error handling code further up the stack to handle the error.


                        "These people looked deep within my soul and assigned me a number based on the order in which I joined." - Homer

                        "These people looked deep within my soul and assigned me a number based on the order in which I joined" - Homer

                        S 1 Reply Last reply
                        0
                        • Richard DeemingR Richard Deeming

                          Steve Messer wrote:

                          the function will Echo out the error code and continue execution instead of the normal behavior of exiting

                          Not quite. The Wscript.Quit Err.Number line following the Wscript.Echo ... line will cause the script to quit, with no possibility for error handling code further up the stack to handle the error.


                          "These people looked deep within my soul and assigned me a number based on the order in which I joined." - Homer

                          S Offline
                          S Offline
                          Steve Messer
                          wrote on last edited by
                          #13

                          I didn't notice Wscript.Quit, In my mind I just saw to lines with Echo. That takes all the mysteries out. Thanks again!!

                          1 Reply Last reply
                          0
                          • S Steve Messer

                            Unfortunately I am not familiar with any languages with a "V" in name...

                            Function zGetFolder( sFolder )
                            On Error Resume Next
                            Set zGetFolder = oFso.GetFolder( sFolder )
                            If Err.Number <> 0 Then
                            Wscript.Echo "Error connecting to: " & sFolder & VBlf & "[" & Err.Number & "]" & Err.Description
                            Wscript.Quit Err.Number
                            End If
                            End Function

                            Questions: The line I don't understand is: Set zGetFolder = oFso.GetFolder(sFolder) Why would you "Set" a call to oFso.GetFolder with "zGetFolder" the name of the function you are currently in??? I am also not quite sure what "On Error Resume Next" accomplishes with this construct.

                            O Offline
                            O Offline
                            oblondel
                            wrote on last edited by
                            #14

                            Hi, I think, it's because of visual basic sripting (which is equal to VB 6) The "SET" is for instancing the fso object ofso (Filesystem object i guess) The on error resume next is a poor "try catch" implementation.

                            1 Reply Last reply
                            0
                            Reply
                            • Reply as topic
                            Log in to reply
                            • Oldest to Newest
                            • Newest to Oldest
                            • Most Votes


                            • Login

                            • Don't have an account? Register

                            • Login or register to search.
                            • First post
                              Last post
                            0
                            • Categories
                            • Recent
                            • Tags
                            • Popular
                            • World
                            • Users
                            • Groups