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.
  • 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