Declaring/populating variable arrays in ASP.NET???

Discussion in 'ASP .Net Web Services' started by Friday, May 6, 2005.

  1. Friday

    Friday Guest

    Sorry if this is the wrong group. I tried to find the one I thought
    would be most relevant.

    I'm an old PHP guy, who knows little about asp and NOTHING about
    asp.net, but need to learn at least enough to convert a favorite PHP
    script to work on an ASP.NET site.

    I'm experimenting with simple example scripts that will help me learn
    how to implement each "piece" of the puzzle.

    Doing well so far... one piece of the puzzle at a time.
    I need to create a simple funtion that will check the IP Address of a
    visitor against an "array variable" of banned IPs.

    In asp, it saeems simple enough. Here's the include that contains the
    function to be called (in .asp):

    ##############################
    <%
    Dim sIPAddress
    sIPAddress = Request.ServerVariables("HTTP_X_FORWARDED_FOR")
    if sIPAddress = "" then
    sIPAddress = Request.ServerVariables("REMOTE_ADDR")
    End If
    %>

    <script language="VB" runat=server>

    function BannedIP(sIPAddress)
    Dim sBanned
    sBanned =
    Array("69.202.123.157","216.239.39.5","216.239.37.5","216.239.37.104","2
    16.155.200.231","216.155.200.232","216.155.200.233","216.155.200.234")

    Dim i
    For i = 0 to UBound( [sBanned] )
    If selCriteria(i,1) = cstr(sBanned) Then
    BannedIP = TRUE
    Else
    BannedIP = false
    End Function

    </script>
    ################################

    The function is called from an existing .aspx page thus:
    ################################
    if BannedIP(sIPAddress) then
    ' show it the "SORRY" page
    Server.Execute("sorry.aspx")
    ' Then STOP! (same as PHP's "exit;" statement ???)
    Response.End
    ' otherwise it's cool, go ahead and display this page below
    End If
    ################################

    ASP.NET doesn't like this at all!
    It tells me: "'Array' is a type and cannot be used as an expression."
    :-(

    What is the proper syntax in ASP.NET for:
    variable = Array("value1","value2","value3")

    I would simply use the function as is, written in asp, but the pages
    are VERY .aspx and choke on it.


    ALSO: My next piece of the puzzle will be to tackle this one, using the
    same test script:
    If I want e to ban a violator with a dynamic IP, how do I deal with
    entire C-blocks (e.g.: BannedIP is TRUE if sIPAdress contains
    123.45.6.*)


    Many TIA
    :)
    Friday

    --
    #####################################
    "The people cannot be all, & always well informed. The part which is wrong will
    be discontented in proportion to the importance of the facts they misconceive.
    If they remain quiet under such misconceptions it is a lethargy, the forerunner
    of death to the public liberty. What country before ever existed a century & a
    half without a rebellion? & what country can preserve it's liberties if their
    rulers are not warned from time to time that their people preserve the spirit
    of resistance? Let them take arms... The tree of liberty must be refreshed from
    time to time with the blood of patriots & tyrants"
    -- Thomas Jefferson
    #####################################
     
    Friday, May 6, 2005
    #1
    1. Advertising

  2. > What is the proper syntax in ASP.NET for:
    > variable = Array("value1","value2","value3")



    Dim sBanned() As String =
    {"69.202.123.157","216.239.39.5","216.239.37.5","216.239.37.104","216.155.200.231","216.155.200.232","216.155.200.233","216.155.200.234"}

    Jody


    "Friday" <> wrote in message
    news:060520051306302444%...
    > Sorry if this is the wrong group. I tried to find the one I thought
    > would be most relevant.
    >
    > I'm an old PHP guy, who knows little about asp and NOTHING about
    > asp.net, but need to learn at least enough to convert a favorite PHP
    > script to work on an ASP.NET site.
    >
    > I'm experimenting with simple example scripts that will help me learn
    > how to implement each "piece" of the puzzle.
    >
    > Doing well so far... one piece of the puzzle at a time.
    > I need to create a simple funtion that will check the IP Address of a
    > visitor against an "array variable" of banned IPs.
    >
    > In asp, it saeems simple enough. Here's the include that contains the
    > function to be called (in .asp):
    >
    > ##############################
    > <%
    > Dim sIPAddress
    > sIPAddress = Request.ServerVariables("HTTP_X_FORWARDED_FOR")
    > if sIPAddress = "" then
    > sIPAddress = Request.ServerVariables("REMOTE_ADDR")
    > End If
    > %>
    >
    > <script language="VB" runat=server>
    >
    > function BannedIP(sIPAddress)
    > Dim sBanned
    > sBanned =
    > Array("69.202.123.157","216.239.39.5","216.239.37.5","216.239.37.104","2
    > 16.155.200.231","216.155.200.232","216.155.200.233","216.155.200.234")
    >
    > Dim i
    > For i = 0 to UBound( [sBanned] )
    > If selCriteria(i,1) = cstr(sBanned) Then
    > BannedIP = TRUE
    > Else
    > BannedIP = false
    > End Function
    >
    > </script>
    > ################################
    >
    > The function is called from an existing .aspx page thus:
    > ################################
    > if BannedIP(sIPAddress) then
    > ' show it the "SORRY" page
    > Server.Execute("sorry.aspx")
    > ' Then STOP! (same as PHP's "exit;" statement ???)
    > Response.End
    > ' otherwise it's cool, go ahead and display this page below
    > End If
    > ################################
    >
    > ASP.NET doesn't like this at all!
    > It tells me: "'Array' is a type and cannot be used as an expression."
    > :-(
    >
    > What is the proper syntax in ASP.NET for:
    > variable = Array("value1","value2","value3")
    >
    > I would simply use the function as is, written in asp, but the pages
    > are VERY .aspx and choke on it.
    >
    >
    > ALSO: My next piece of the puzzle will be to tackle this one, using the
    > same test script:
    > If I want e to ban a violator with a dynamic IP, how do I deal with
    > entire C-blocks (e.g.: BannedIP is TRUE if sIPAdress contains
    > 123.45.6.*)
    >
    >
    > Many TIA
    > :)
    > Friday
    >
    > --
    > #####################################
    > "The people cannot be all, & always well informed. The part which is wrong
    > will
    > be discontented in proportion to the importance of the facts they
    > misconceive.
    > If they remain quiet under such misconceptions it is a lethargy, the
    > forerunner
    > of death to the public liberty. What country before ever existed a century
    > & a
    > half without a rebellion? & what country can preserve it's liberties if
    > their
    > rulers are not warned from time to time that their people preserve the
    > spirit
    > of resistance? Let them take arms... The tree of liberty must be refreshed
    > from
    > time to time with the blood of patriots & tyrants"
    > -- Thomas Jefferson
    > #####################################
     
    Jody Gelowitz, May 6, 2005
    #2
    1. Advertising

  3. Friday

    Friday Guest

    In article <>, Jody Gelowitz
    <> wrote:

    > > What is the proper syntax in ASP.NET for:
    > > variable = Array("value1","value2","value3")

    >
    >
    > Dim sBanned() As String =
    >
    > {"69.202.123.157","216.239.39.5","216.239.37.5","216.239.37.104","216.155.200.
    > 231","216.155.200.232","216.155.200.233","216.155.200.234"}
    >
    > Jody


    Many Thanks!
    Can't wait to try it.
    :)
    >
    >
    > "Friday" <> wrote in message
    > news:060520051306302444%...
    > > Sorry if this is the wrong group. I tried to find the one I thought
    > > would be most relevant.
    > >
    > > I'm an old PHP guy, who knows little about asp and NOTHING about
    > > asp.net, but need to learn at least enough to convert a favorite PHP
    > > script to work on an ASP.NET site.
    > >
    > > I'm experimenting with simple example scripts that will help me learn
    > > how to implement each "piece" of the puzzle.
    > >
    > > Doing well so far... one piece of the puzzle at a time.
    > > I need to create a simple funtion that will check the IP Address of a
    > > visitor against an "array variable" of banned IPs.
    > >
    > > In asp, it saeems simple enough. Here's the include that contains the
    > > function to be called (in .asp):
    > >
    > > ##############################
    > > <%
    > > Dim sIPAddress
    > > sIPAddress = Request.ServerVariables("HTTP_X_FORWARDED_FOR")
    > > if sIPAddress = "" then
    > > sIPAddress = Request.ServerVariables("REMOTE_ADDR")
    > > End If
    > > %>
    > >
    > > <script language="VB" runat=server>
    > >
    > > function BannedIP(sIPAddress)
    > > Dim sBanned
    > > sBanned =
    > > Array("69.202.123.157","216.239.39.5","216.239.37.5","216.239.37.104","2
    > > 16.155.200.231","216.155.200.232","216.155.200.233","216.155.200.234")
    > >
    > > Dim i
    > > For i = 0 to UBound( [sBanned] )
    > > If selCriteria(i,1) = cstr(sBanned) Then
    > > BannedIP = TRUE
    > > Else
    > > BannedIP = false
    > > End Function
    > >
    > > </script>
    > > ################################
    > >
    > > The function is called from an existing .aspx page thus:
    > > ################################
    > > if BannedIP(sIPAddress) then
    > > ' show it the "SORRY" page
    > > Server.Execute("sorry.aspx")
    > > ' Then STOP! (same as PHP's "exit;" statement ???)
    > > Response.End
    > > ' otherwise it's cool, go ahead and display this page below
    > > End If
    > > ################################
    > >
    > > ASP.NET doesn't like this at all!
    > > It tells me: "'Array' is a type and cannot be used as an expression."
    > > :-(
    > >
    > > What is the proper syntax in ASP.NET for:
    > > variable = Array("value1","value2","value3")
    > >
    > > I would simply use the function as is, written in asp, but the pages
    > > are VERY .aspx and choke on it.
    > >
    > >
    > > ALSO: My next piece of the puzzle will be to tackle this one, using the
    > > same test script:
    > > If I want e to ban a violator with a dynamic IP, how do I deal with
    > > entire C-blocks (e.g.: BannedIP is TRUE if sIPAdress contains
    > > 123.45.6.*)
    > >
    > >
    > > Many TIA
    > > :)
    > > Friday
    > >
    > > --
    > > #####################################
    > > "The people cannot be all, & always well informed. The part which is wrong
    > > will
    > > be discontented in proportion to the importance of the facts they
    > > misconceive.
    > > If they remain quiet under such misconceptions it is a lethargy, the
    > > forerunner
    > > of death to the public liberty. What country before ever existed a century
    > > & a
    > > half without a rebellion? & what country can preserve it's liberties if
    > > their
    > > rulers are not warned from time to time that their people preserve the
    > > spirit
    > > of resistance? Let them take arms... The tree of liberty must be refreshed
    > > from
    > > time to time with the blood of patriots & tyrants"
    > > -- Thomas Jefferson
    > > #####################################

    >
    >


    --
    #####################################
    "The people cannot be all, & always well informed. The part which is wrong will
    be discontented in proportion to the importance of the facts they misconceive.
    If they remain quiet under such misconceptions it is a lethargy, the forerunner
    of death to the public liberty. What country before ever existed a century & a
    half without a rebellion? & what country can preserve it's liberties if their
    rulers are not warned from time to time that their people preserve the spirit
    of resistance? Let them take arms... The tree of liberty must be refreshed from
    time to time with the blood of patriots & tyrants"
    -- Thomas Jefferson
    #####################################
     
    Friday, May 6, 2005
    #3
  4. Friday

    Friday Guest

    In article <>, Jody Gelowitz
    <> wrote:

    > > What is the proper syntax in ASP.NET for:
    > > variable = Array("value1","value2","value3")

    >
    >
    > Dim sBanned() As String =
    >
    > {"69.202.123.157","216.239.39.5","216.239.37.5","216.239.37.104","216.155.200.
    > 231","216.155.200.232","216.155.200.233","216.155.200.234"}
    >
    > Jody


    Darn...
    Now I'm geting an error: "Expression expected."

    at: Dim sBanned() As String =

    Something else wrong withmy little fndtion.
    Any thoughts?

    Now my little test reads:
    ##############################
    <%
    Dim sIPAddress
    sIPAddress = Request.ServerVariables("HTTP_X_FORWARDED_FOR")
    if sIPAddress = "" then
    sIPAddress = Request.ServerVariables("REMOTE_ADDR")
    End If
    %>

    <script language="VB" runat=server>

    function BannedIP(sIPAddress)

    Dim sBanned() As String =
    ("69.202.123.157","216.239.39.5","216.239.37.5","216.239.37.104","2
    16.155.200.231","216.155.200.232","216.155.200.233","216.155.200.234")

    Dim i
    For i = 0 to UBound( [sBanned] )
    If selCriteria(i,1) = cstr(sBanned) Then
    BannedIP = TRUE
    Else
    BannedIP = false
    End Function

    </script>
    ################################

    The function is called from an existing .aspx page thus:
    ################################
    if BannedIP(sIPAddress) then
    ' show it the "SORRY" page
    Server.Execute("sorry.aspx")
    ' Then STOP! (same as PHP's "exit;" statement ???)
    Response.End
    ' otherwise it's cool, go ahead and display this page below
    End If
    ################################

    --
    #####################################
    "The people cannot be all, & always well informed. The part which is wrong will
    be discontented in proportion to the importance of the facts they misconceive.
    If they remain quiet under such misconceptions it is a lethargy, the forerunner
    of death to the public liberty. What country before ever existed a century & a
    half without a rebellion? & what country can preserve it's liberties if their
    rulers are not warned from time to time that their people preserve the spirit
    of resistance? Let them take arms... The tree of liberty must be refreshed from
    time to time with the blood of patriots & tyrants"
    -- Thomas Jefferson
    #####################################
     
    Friday, May 6, 2005
    #4
  5. Friday

    Brock Allen Guest

    Dim sBan as String() = {...}

    -Brock
    DevelopMentor
    http://staff.develop.com/ballen



    > In article <>, Jody Gelowitz
    > <> wrote:
    >
    >>> What is the proper syntax in ASP.NET for:
    >>> variable = Array("value1","value2","value3")

    >> Dim sBanned() As String =
    >>
    >> {"69.202.123.157","216.239.39.5","216.239.37.5","216.239.37.104","216
    >> .155.200. 231","216.155.200.232","216.155.200.233","216.155.200.234"}
    >>
    >> Jody
    >>

    > Darn...
    > Now I'm geting an error: "Expression expected."
    > at: Dim sBanned() As String =
    >
    > Something else wrong withmy little fndtion.
    > Any thoughts?
    > Now my little test reads:
    > ##############################
    > <%
    > Dim sIPAddress
    > sIPAddress = Request.ServerVariables("HTTP_X_FORWARDED_FOR")
    > if sIPAddress = "" then
    > sIPAddress = Request.ServerVariables("REMOTE_ADDR")
    > End If
    > %>
    > <script language="VB" runat=server>
    >
    > function BannedIP(sIPAddress)
    >
    > Dim sBanned() As String =
    > ("69.202.123.157","216.239.39.5","216.239.37.5","216.239.37.104","2
    > 16.155.200.231","216.155.200.232","216.155.200.233","216.155.200.234")
    >
    > Dim i
    > For i = 0 to UBound( [sBanned] )
    > If selCriteria(i,1) = cstr(sBanned) Then
    > BannedIP = TRUE
    > Else
    > BannedIP = false
    > End Function
    > </script>
    > ################################
    > The function is called from an existing .aspx page thus:
    > ################################
    > if BannedIP(sIPAddress) then
    > ' show it the "SORRY" page
    > Server.Execute("sorry.aspx")
    > ' Then STOP! (same as PHP's "exit;" statement ???)
    > Response.End
    > ' otherwise it's cool, go ahead and display this page below
    > End If
    > ################################
     
    Brock Allen, May 6, 2005
    #5
  6. Friday

    John H W Guest

    Friday, Jody's replied on the Array, but the syntac on your VB code needs a
    couple of tweeks:
    function BannedIP(sIPAddress as String) as Boolean
    Dim sBanned, i as integar

    sBanned = _
    Array("69.202.123.157","216.239.39.5","216.239.37.5","216.239.37.104", _
    "216.155.200.231","216.155.200.232","216.155.200.233","216.155.200.234")

    For i = 0 to UBound( [sBanned] )
    If sIPAddress = cstr(sBanned(i)) Then
    BannedIP = TRUE
    Exit For
    Else
    BannedIP = false
    End If
    Next
    End Function

    I am assuming that you are passing the IPAddress to be checked. Also, if you
    want to check through the whole array, you will want to check each element of
    the array. Also, you will want to break if it finds a banned address.

    Just to let you know, I have 25 years of C, C++, C#, and only 1 year of VB
    (and then only in MS Office. So you might know more about VB than I.

    John H W

    "Friday" wrote:

    > Sorry if this is the wrong group. I tried to find the one I thought
    > would be most relevant.
    >
    > I'm an old PHP guy, who knows little about asp and NOTHING about
    > asp.net, but need to learn at least enough to convert a favorite PHP
    > script to work on an ASP.NET site.
    >
    > I'm experimenting with simple example scripts that will help me learn
    > how to implement each "piece" of the puzzle.
    >
    > Doing well so far... one piece of the puzzle at a time.
    > I need to create a simple funtion that will check the IP Address of a
    > visitor against an "array variable" of banned IPs.
    >
    > In asp, it saeems simple enough. Here's the include that contains the
    > function to be called (in .asp):
    >
    > ##############################
    > <%
    > Dim sIPAddress
    > sIPAddress = Request.ServerVariables("HTTP_X_FORWARDED_FOR")
    > if sIPAddress = "" then
    > sIPAddress = Request.ServerVariables("REMOTE_ADDR")
    > End If
    > %>
    >
    > <script language="VB" runat=server>
    >
    > function BannedIP(sIPAddress)
    > Dim sBanned
    > sBanned =
    > Array("69.202.123.157","216.239.39.5","216.239.37.5","216.239.37.104","2
    > 16.155.200.231","216.155.200.232","216.155.200.233","216.155.200.234")
    >
    > Dim i
    > For i = 0 to UBound( [sBanned] )
    > If selCriteria(i,1) = cstr(sBanned) Then
    > BannedIP = TRUE
    > Else
    > BannedIP = false
    > End Function
    >
    > </script>
    > ################################
    >
    > The function is called from an existing .aspx page thus:
    > ################################
    > if BannedIP(sIPAddress) then
    > ' show it the "SORRY" page
    > Server.Execute("sorry.aspx")
    > ' Then STOP! (same as PHP's "exit;" statement ???)
    > Response.End
    > ' otherwise it's cool, go ahead and display this page below
    > End If
    > ################################
    >
    > ASP.NET doesn't like this at all!
    > It tells me: "'Array' is a type and cannot be used as an expression."
    > :-(
    >
    > What is the proper syntax in ASP.NET for:
    > variable = Array("value1","value2","value3")
    >
    > I would simply use the function as is, written in asp, but the pages
    > are VERY .aspx and choke on it.
    >
    >
    > ALSO: My next piece of the puzzle will be to tackle this one, using the
    > same test script:
    > If I want e to ban a violator with a dynamic IP, how do I deal with
    > entire C-blocks (e.g.: BannedIP is TRUE if sIPAdress contains
    > 123.45.6.*)
    >
    >
    > Many TIA
    > :)
    > Friday
    >
    > --
    > #####################################
    > "The people cannot be all, & always well informed. The part which is wrong will
    > be discontented in proportion to the importance of the facts they misconceive.
    > If they remain quiet under such misconceptions it is a lethargy, the forerunner
    > of death to the public liberty. What country before ever existed a century & a
    > half without a rebellion? & what country can preserve it's liberties if their
    > rulers are not warned from time to time that their people preserve the spirit
    > of resistance? Let them take arms... The tree of liberty must be refreshed from
    > time to time with the blood of patriots & tyrants"
    > -- Thomas Jefferson
    > #####################################
    >
     
    John H W, May 6, 2005
    #6
  7. Friday

    Friday Guest

    In article <>, John H
    W <> wrote:

    > Friday, Jody's replied on the Array, but the syntac on your VB code needs a
    > couple of tweeks:
    > function BannedIP(sIPAddress as String) as Boolean
    > Dim sBanned, i as integar


    I see. Thank You.
    But.... do I use Jody's example for declaring the variable or the
    following example [variable=Array(...)]???
    >
    > sBanned = _
    > Array("69.202.123.157","216.239.39.5","216.239.37.5","216.239.37.104", _
    > "216.155.200.231","216.155.200.232","216.155.200.233","216.155.200.234")
    >
    > For i = 0 to UBound( [sBanned] )
    > If sIPAddress = cstr(sBanned(i)) Then
    > BannedIP = TRUE
    > Exit For
    > Else
    > BannedIP = false
    > End If
    > Next
    > End Function
    >
    > I am assuming that you are passing the IPAddress to be checked.


    Yes.

    > Also, if you
    > want to check through the whole array, you will want to check each element of
    > the array. Also, you will want to break if it finds a banned address.
    >
    > Just to let you know, I have 25 years of C, C++, C#, and only 1 year of VB
    > (and then only in MS Office. So you might know more about VB than I.
    >


    Not quite.
    Just an old PHP guy.

    --
     
    Friday, May 6, 2005
    #7
  8. Friday

    John H W Guest

    I have not used Array as such. How I do it is:

    Dim sIPAddress(8) as String
    I would use 8 or some other amount that I would not exceed. I then use
    another function to fill it from an XML or other "formated" file, passing the
    array, i.e.,

    brtn = FillBannedAddresses(sIPAddress())

    Then declare the other function as
    public function FillBannedAddresses(ByRef sIPAddress() as string) as Boolean
    I then return a true if filled (false if a problem)

    In this other function, I would open the file, parse it and load the
    addresses into the passed array (byref).

    I am leaving work now or I would give you some more "pointers."

    John H W

    "Friday" wrote:

    > In article <>, John H
    > W <> wrote:
    >
    > > Friday, Jody's replied on the Array, but the syntac on your VB code needs a
    > > couple of tweeks:
    > > function BannedIP(sIPAddress as String) as Boolean
    > > Dim sBanned, i as integar

    >
    > I see. Thank You.
    > But.... do I use Jody's example for declaring the variable or the
    > following example [variable=Array(...)]???
    > >
    > > sBanned = _
    > > Array("69.202.123.157","216.239.39.5","216.239.37.5","216.239.37.104", _
    > > "216.155.200.231","216.155.200.232","216.155.200.233","216.155.200.234")
    > >
    > > For i = 0 to UBound( [sBanned] )
    > > If sIPAddress = cstr(sBanned(i)) Then
    > > BannedIP = TRUE
    > > Exit For
    > > Else
    > > BannedIP = false
    > > End If
    > > Next
    > > End Function
    > >
    > > I am assuming that you are passing the IPAddress to be checked.

    >
    > Yes.
    >
    > > Also, if you
    > > want to check through the whole array, you will want to check each element of
    > > the array. Also, you will want to break if it finds a banned address.
    > >
    > > Just to let you know, I have 25 years of C, C++, C#, and only 1 year of VB
    > > (and then only in MS Office. So you might know more about VB than I.
    > >

    >
    > Not quite.
    > Just an old PHP guy.
    >
    > --
    >
     
    John H W, May 6, 2005
    #8
  9. John H W <> wrote:
    > I have not used Array as such. How I do it is:
    >
    > Dim sIPAddress(8) as String
    > I would use 8 or some other amount that I would not exceed. I then use
    > another function to fill it from an XML or other "formated" file, passing the
    > array, i.e.,
    >
    > brtn = FillBannedAddresses(sIPAddress())
    >
    > Then declare the other function as
    > public function FillBannedAddresses(ByRef sIPAddress() as string) as Boolean
    > I then return a true if filled (false if a problem)
    >
    > In this other function, I would open the file, parse it and load the
    > addresses into the passed array (byref).


    Yuk. Exceptions are there precisely to indicate problems without you
    needing to pass anything by reference or check return values all the
    time.

    Mind you, if you know how many you're going to parse beforehand, you
    wouldn't need to pass the array variable by reference anyway...

    --
    Jon Skeet - <>
    http://www.pobox.com/~skeet
    If replying to the group, please do not mail me too
     
    Jon Skeet [C# MVP], May 6, 2005
    #9
  10. Friday

    John H W Guest

    Jon [C# MVP]:

    I use exceptions, but sometimes I like the old, tried and true methods (25
    years of writing code, starting with cobal, then C, C++, C# & VB.Net). In
    the called funtion, I could use an exception, but opening a file, while
    testing whether it is open, saves five or six lines for an exception.

    Then while reading in the addresses, I check at each read, again testing in
    the same if statement, saving even more lines it would take to "switch" to
    another exception.

    In thinking about what I wrote below while driving home, instead of using
    the boolean, I would return the number of addresses read, so my code would
    look like:

    nNumberRead = FillBannedAddresses(sIPAddress())
    if nNumberRead > 0 then
    For i = 0 to nNumberRead then
    ...
    Next
    end if

    Of course, in C#, I would just write:

    AddressList *sIPAddress; // where AddressList is a structure for a linked list
    if (nNumberRead = FillBannedAddresses(sIPAddress)) > 0 {
    ... }

    Don't forget, Jon, we are giving pointers to a person who is new to VB, but
    has plenty of programming experience. When this is the case, I like to give
    small directions or pointers and letting the persons use his own experience.
    Introducing expections is too great a leap and can cause problems relating to
    expections.

    I also like "small" functions. Problems are easier and quicker to find.
    Therefore, because of memory scope, you have to pass a reference or the info
    he needs will "disappear" when he needs to use it. I am fairly new to VB
    myself, but when I did try to return a "string array" from a function
    [myarray = FunctionReturnString()] contained only the first element - all the
    other elements were empty. While it is possible I did not do it correctly,
    passing myarray by reference worked [FunctionReturnString(myarray) and
    FunctionReturnString(byref myarray as string)].

    But I would like to thank you for all your help in these newsgroups.

    John H W

    "Jon Skeet [C# MVP]" wrote:

    > John H W <> wrote:
    > > I have not used Array as such. How I do it is:
    > >
    > > Dim sIPAddress(8) as String
    > > I would use 8 or some other amount that I would not exceed. I then use
    > > another function to fill it from an XML or other "formated" file, passing the
    > > array, i.e.,
    > >
    > > brtn = FillBannedAddresses(sIPAddress())
    > >
    > > Then declare the other function as
    > > public function FillBannedAddresses(ByRef sIPAddress() as string) as Boolean
    > > I then return a true if filled (false if a problem)
    > >
    > > In this other function, I would open the file, parse it and load the
    > > addresses into the passed array (byref).

    >
    > Yuk. Exceptions are there precisely to indicate problems without you
    > needing to pass anything by reference or check return values all the
    > time.
    >
    > Mind you, if you know how many you're going to parse beforehand, you
    > wouldn't need to pass the array variable by reference anyway...
    >
    > --
    > Jon Skeet - <>
    > http://www.pobox.com/~skeet
    > If replying to the group, please do not mail me too
    >
     
    John H W, May 6, 2005
    #10
  11. John H W <> wrote:
    > I use exceptions, but sometimes I like the old, tried and true methods (25
    > years of writing code, starting with cobal, then C, C++, C# & VB.Net).


    You mean tried and failed - how many bugs have you seen because people
    have failed to look at the return value of a function call? I've
    certainly seen loads. Heck, just look at the number of people who don't
    use the return value of Stream.Read, and that's giving actual
    information beyond just success/failure!

    > In the called funtion, I could use an exception, but opening a file, while
    > testing whether it is open, saves five or six lines for an exception.


    Well, you've still got to be able to handle the exception anyway...
    even if you test for whether or not it's open, it could be opened
    immediately after that.

    > Then while reading in the addresses, I check at each read, again testing in
    > the same if statement, saving even more lines it would take to "switch" to
    > another exception.


    Are you considering handling the exception at each point? I wouldn't -
    chances are if the operation fails, that should be an exception going
    up to the next stack layer anyway - if you fail to read the list of
    banned IPs, do you really want to just asssume that the visitor is
    allowed?

    > In thinking about what I wrote below while driving home, instead of using
    > the boolean, I would return the number of addresses read, so my code would
    > look like:
    >
    > nNumberRead = FillBannedAddresses(sIPAddress())
    > if nNumberRead > 0 then
    > For i = 0 to nNumberRead then
    > ...
    > Next
    > end if


    Why not just return the array in the first place? You could always
    return null or an empty array if you absolutely had to.

    > Of course, in C#, I would just write:
    >
    > AddressList *sIPAddress; // where AddressList is a structure for a linked list
    > if (nNumberRead = FillBannedAddresses(sIPAddress)) > 0 {
    > ... }


    Do you mean in C/C++? Or are you considering using unsafe code?

    > Don't forget, Jon, we are giving pointers to a person who is new to VB, but
    > has plenty of programming experience. When this is the case, I like to give
    > small directions or pointers and letting the persons use his own experience.
    > Introducing expections is too great a leap and can cause problems relating to
    > expections.


    Whereas not introducing exceptions can cause problems relating to
    failing to look at return values, and persists the error-prone error
    handling from "the bad old days". Why not show best practice right from
    the start? Personally I'd suggest that if exceptions are a problem, the
    OP should suspend his ASP.NET work and start learning the basics of
    ..NET properly, starting with some console apps and working up from
    there.

    > I also like "small" functions. Problems are easier and quicker to find.
    > Therefore, because of memory scope, you have to pass a reference or the info
    > he needs will "disappear" when he needs to use it.


    a) There's a difference between passing an array reference and passing
    a parameter *by* reference.
    b) The information wouldn't disappear - while the caller has a
    reference to the array, the array and everything within it won't
    be garbage collected.

    > I am fairly new to VB
    > myself, but when I did try to return a "string array" from a function
    > [myarray = FunctionReturnString()] contained only the first element - all the
    > other elements were empty. While it is possible I did not do it correctly,
    > passing myarray by reference worked [FunctionReturnString(myarray) and
    > FunctionReturnString(byref myarray as string)].


    That's certainly a failure in your code. It's hard to say exactly what
    the failure was without seeing the code, but passing things by
    reference isn't the best solution. Passing by reference should be very
    rare.

    > But I would like to thank you for all your help in these newsgroups.


    My pleasure.

    --
    Jon Skeet - <>
    http://www.pobox.com/~skeet
    If replying to the group, please do not mail me too
     
    Jon Skeet [C# MVP], May 7, 2005
    #11
  12. Friday

    Cor Ligthert Guest

    Friday,

    I never use the notation from you. I use for Net1.1

    Dim sBanned() As String =
    ("69.202.123.157","216.239.39.5","216.239.37.5","216.239.37.104","2
    16.155.200.231","216.155.200.232","216.155.200.233","216.155.200.234")
    For i as integer = 0 to sBanned.length - 1
    If sBanned(i) = selCriteria Then
    BannedIP = True
    Else
    BannedIP = False
    End Function

    I hope this helps,

    Cor
     
    Cor Ligthert, May 7, 2005
    #12
  13. Friday

    Cor Ligthert Guest

    doh,

    my previous code would only test the last one. This is better in my opinion.

    \\\\
    Dim sBanned() As String =
    ("69.202.123.157","216.239.39.5","216.239.37.5","216.239.37.104","2
    16.155.200.231","216.155.200.232","216.155.200.233","216.155.200.234")
    For i as integer = 0 to sBanned.length - 1
    If sBanned(i) = selCriteria Then
    BannedIP = True
    'take action
    exit for
    end if
    End for
    ////

    I hope this helps,

    Cor
    >
    >
     
    Cor Ligthert, May 7, 2005
    #13
  14. Cor Ligthert <> wrote:
    > I never use the notation from you. I use for Net1.1
    >
    > Dim sBanned() As String =
    > ("69.202.123.157","216.239.39.5","216.239.37.5","216.239.37.104","2
    > 16.155.200.231","216.155.200.232","216.155.200.233","216.155.200.234")
    > For i as integer = 0 to sBanned.length - 1
    > If sBanned(i) = selCriteria Then
    > BannedIP = True
    > Else
    > BannedIP = False
    > End Function


    Just to find an element within an array, I'd suggest using
    Array.IndexOf. (In this case, Array.IndexOf(sBanned, selCriteria).) If
    the return value is -1, the element isn't found. Otherwise, it is.

    --
    Jon Skeet - <>
    http://www.pobox.com/~skeet
    If replying to the group, please do not mail me too
     
    Jon Skeet [C# MVP], May 7, 2005
    #14
  15. Friday

    Cor Ligthert Guest

    Jon,

    > Just to find an element within an array, I'd suggest using
    > Array.IndexOf. (In this case, Array.IndexOf(sBanned, selCriteria).) If
    > the return value is -1, the element isn't found. Otherwise, it is.
    >

    I have never thought of using it in that way, however you are right, I will
    remember it.

    :)

    Cor
     
    Cor Ligthert, May 7, 2005
    #15
  16. Friday

    Friday Guest

    In article <>, Cor Ligthert
    <> wrote:

    > doh,
    >
    > my previous code would only test the last one. This is better in my opinion.
    >
    > \\\\
    > Dim sBanned() As String =
    > ("69.202.123.157","216.239.39.5","216.239.37.5","216.239.37.104","2
    > 16.155.200.231","216.155.200.232","216.155.200.233","216.155.200.234")
    > For i as integer = 0 to sBanned.length - 1
    > If sBanned(i) = selCriteria Then
    > BannedIP = True
    > 'take action
    > exit for
    > end if
    > End for
    > ////
    >
    > I hope this helps,
    >
    > Cor
    > >
    > >

    GREAT advice from everyone!
    Thank You.
    :)

    But....

    NOW I'm getting: "BC30198: ')' expected"
    Where in the _WORLD_ does it expect a ')'???
    (This little experiment doesn't seem that complicated 8-P)

    If this were PHP, I would suspect a problem on the preceeding line:
    "function BannedIP(sIPAddress as string) as Boolean"
    hmmm...

    Anyway, here's what I have on the included page with the function:
    #######################
    <%
    Dim sIPAddress
    ' check for proxies
    sIPAddress = Request.ServerVariables("HTTP_X_FORWARDED_FOR")
    if sIPAddress = "" then
    sIPAddress = Request.ServerVariables("REMOTE_ADDR")
    End If
    %>

    <script language="VB" runat=server>

    function BannedIP(sIPAddress as string) as Boolean

    ' The following line is where the error occurs [expecting ')']
    Dim sBanned() As String =
    ("69.202.123.157","216.239.39.5","216.239.37.5","216.239.37.104","2
    16.155.200.231","216.155.200.232","216.155.200.233","216.155.200.234")
    ' No line breaks, missing commas, or quotation marks in above line
    For i as integer = 0 to sBanned.length - 1
    If sBanned(i) = selCriteria Then
    BannedIP = True
    exit for
    end if
    End for

    End Function
    </script>
    ########################

    And here is how the function is called from other .aspx pages:

    ########################
    <!--#include file = "inc/IsBanned.aspx"-->
    <%
    if BannedIP(sIPAddress) THEN
    ' show it the GET LOST page
    Server.Execute("get-lost.aspx")
    ' Then STOP! (same as PHP's "exit;" statement ???)
    Response.End
    ' otherwise it's cool, serve up the page below:
    End If
    %>

    <%@ import Namespace="StoreFront.StoreFront" %>
    <%@ assembly name="StoreFront" %>
    blah... blah... blah....
    ########################

    Thanks to everyone for their patience.
    Hard to teach an old L.A.M.P. dog new trix.
    (Who thought Windows would ever catch on????)
    ;-)

    --
    #####################################
    "The people cannot be all, & always well informed. The part which is wrong will
    be discontented in proportion to the importance of the facts they misconceive.
    If they remain quiet under such misconceptions it is a lethargy, the forerunner
    of death to the public liberty. What country before ever existed a century & a
    half without a rebellion? & what country can preserve it's liberties if their
    rulers are not warned from time to time that their people preserve the spirit
    of resistance? Let them take arms... The tree of liberty must be refreshed from
    time to time with the blood of patriots & tyrants"
    -- Thomas Jefferson
    #####################################
     
    Friday, May 9, 2005
    #16
  17. Friday

    Friday Guest

    In article <>, Jon Skeet
    [C# MVP] <> wrote:

    > Cor Ligthert <> wrote:
    > > I never use the notation from you. I use for Net1.1
    > >
    > > Dim sBanned() As String =
    > > ("69.202.123.157","216.239.39.5","216.239.37.5","216.239.37.104","2
    > > 16.155.200.231","216.155.200.232","216.155.200.233","216.155.200.234")
    > > For i as integer = 0 to sBanned.length - 1
    > > If sBanned(i) = selCriteria Then
    > > BannedIP = True
    > > Else
    > > BannedIP = False
    > > End Function

    >
    > Just to find an element within an array, I'd suggest using
    > Array.IndexOf. (In this case, Array.IndexOf(sBanned, selCriteria).) If
    > the return value is -1, the element isn't found. Otherwise, it is.


    That's very interestinf Jon.
    Thx.

    How exactly would I use time-saver? i.e.: where and how would I define
    the strings contained within the array (array variable?)?

    Just as shown above?
    Then simply replace the "IF" statement with your examle?

    Thnx Again
    Friday

    --
    #####################################
    "The people cannot be all, & always well informed. The part which is wrong will
    be discontented in proportion to the importance of the facts they misconceive.
    If they remain quiet under such misconceptions it is a lethargy, the forerunner
    of death to the public liberty. What country before ever existed a century & a
    half without a rebellion? & what country can preserve it's liberties if their
    rulers are not warned from time to time that their people preserve the spirit
    of resistance? Let them take arms... The tree of liberty must be refreshed from
    time to time with the blood of patriots & tyrants"
    -- Thomas Jefferson
    #####################################
     
    Friday, May 9, 2005
    #17
  18. Friday

    Friday Guest

    In article <>, Brock Allen
    <> wrote:

    > Dim sBan as String() = {...}
    >
    > -Brock
    > DevelopMentor
    > http://staff.develop.com/ballen
    >
    >
    >

    Thanks Brock. That seems to be the concensus of the proper way to do it.
    Still... I'm now getting an error "expecting ')' "
    Where in the world it wants a ')' is beyond me.
    There are no open parenthesis. (Then again, this isn't perl, is it -not
    that I miss Perl.)
    8-P
    Please see my most recent post.
    Drat.

    --
    #####################################
    "The people cannot be all, & always well informed. The part which is wrong will
    be discontented in proportion to the importance of the facts they misconceive.
    If they remain quiet under such misconceptions it is a lethargy, the forerunner
    of death to the public liberty. What country before ever existed a century & a
    half without a rebellion? & what country can preserve it's liberties if their
    rulers are not warned from time to time that their people preserve the spirit
    of resistance? Let them take arms... The tree of liberty must be refreshed from
    time to time with the blood of patriots & tyrants"
    -- Thomas Jefferson
    #####################################
     
    Friday, May 9, 2005
    #18
  19. Friday

    Friday Guest

    In article <>, John H
    W <> wrote:

    > I have not used Array as such. How I do it is:
    >
    > Dim sIPAddress(8) as String
    > I would use 8 or some other amount that I would not exceed. I then use
    > another function to fill it from an XML or other "formated" file, passing the
    > array, i.e.,
    >
    > brtn = FillBannedAddresses(sIPAddress())
    >
    > Then declare the other function as
    > public function FillBannedAddresses(ByRef sIPAddress() as string) as Boolean
    > I then return a true if filled (false if a problem)
    >
    > In this other function, I would open the file, parse it and load the
    > addresses into the passed array (byref).
    >
    > I am leaving work now or I would give you some more "pointers."
    >
    > John H W


    Thanks John.
    Interesting, but seems pretty heavy on the CPU.
    Still...
    I'm curious. Where and how would I format the "list" to parse the known
    IPs?
    I don't need to learn XML too do I?

    Gosh I remember when a little Perl (YUCK!) and a good knowledge of PHP
    and MySQL would carry the day.
    8-P

    Enquiring minds want to know.

    Thanks Againm
    Friday

    --
    #####################################
    "The people cannot be all, & always well informed. The part which is wrong will
    be discontented in proportion to the importance of the facts they misconceive.
    If they remain quiet under such misconceptions it is a lethargy, the forerunner
    of death to the public liberty. What country before ever existed a century & a
    half without a rebellion? & what country can preserve it's liberties if their
    rulers are not warned from time to time that their people preserve the spirit
    of resistance? Let them take arms... The tree of liberty must be refreshed from
    time to time with the blood of patriots & tyrants"
    -- Thomas Jefferson
    #####################################
     
    Friday, May 9, 2005
    #19
  20. Friday

    Friday Guest

    In article <090520051741005617%>, Friday
    <> wrote:

    > In article <>, Cor Ligthert
    > <> wrote:
    >
    > > doh,
    > >
    > > my previous code would only test the last one. This is better in my opinion.
    > >
    > > \\\\
    > > Dim sBanned() As String =
    > > ("69.202.123.157","216.239.39.5","216.239.37.5","216.239.37.104","2
    > > 16.155.200.231","216.155.200.232","216.155.200.233","216.155.200.234")
    > > For i as integer = 0 to sBanned.length - 1
    > > If sBanned(i) = selCriteria Then
    > > BannedIP = True
    > > 'take action
    > > exit for
    > > end if
    > > End for
    > > ////
    > >
    > > I hope this helps,
    > >
    > > Cor
    > > >
    > > >

    > GREAT advice from everyone!
    > Thank You.
    > :)
    >
    > But....
    >
    > NOW I'm getting: "BC30198: ')' expected"
    > Where in the _WORLD_ does it expect a ')'???
    > (This little experiment doesn't seem that complicated 8-P)
    >
    > If this were PHP, I would suspect a problem on the preceeding line:
    > "function BannedIP(sIPAddress as string) as Boolean"
    > hmmm...
    >
    > Anyway, here's what I have on the included page with the function:
    > #######################
    > <%
    > Dim sIPAddress
    > ' check for proxies
    > sIPAddress = Request.ServerVariables("HTTP_X_FORWARDED_FOR")
    > if sIPAddress = "" then
    > sIPAddress = Request.ServerVariables("REMOTE_ADDR")
    > End If
    > %>
    >
    > <script language="VB" runat=server>
    >
    > function BannedIP(sIPAddress as string) as Boolean
    >
    > ' The following line is where the error occurs [expecting ')']
    > Dim sBanned() As String =
    > ("69.202.123.157","216.239.39.5","216.239.37.5","216.239.37.104","2
    > 16.155.200.231","216.155.200.232","216.155.200.233","216.155.200.234")
    > ' No line breaks, missing commas, or quotation marks in above line
    > For i as integer = 0 to sBanned.length - 1
    > If sBanned(i) = selCriteria Then
    > BannedIP = True
    > exit for
    > end if
    > End for
    >
    > End Function
    > </script>
    > ########################
    >
    > And here is how the function is called from other .aspx pages:
    >
    > ########################
    > <!--#include file = "inc/IsBanned.aspx"-->
    > <%
    > if BannedIP(sIPAddress) THEN
    > ' show it the GET LOST page
    > Server.Execute("get-lost.aspx")
    > ' Then STOP! (same as PHP's "exit;" statement ???)
    > Response.End
    > ' otherwise it's cool, serve up the page below:
    > End If
    > %>
    >
    > <%@ import Namespace="StoreFront.StoreFront" %>
    > <%@ assembly name="StoreFront" %>
    > blah... blah... blah....
    > ########################
    >



    OK! Now I'm getting somewhere.
    When I replace the () in the array with containers {}, the compiler
    gets happy.
    :)
    (WTF?! Oh well.)
    Thenit tells me I need a NXT statement to balance the FOR

    OK, I'm down with that.

    So, now I have:
    #################################
    <script language="VB" runat=server>

    Dim sBanned() As String =
    ("69.202.123.157","216.239.39.5","216.239.37.5","216.239.37.104","2
    16.155.200.231","216.155.200.232","216.155.200.233","216.155.200.234")

    selCriteria = sIPAddress
    For i as integer = 0 to sBanned.length - 1
    If sBanned(i) = selCriteria Then
    BannedIP = True
    exit for
    end if
    Next
    End for

    End Function
    </script>
    #########################################

    And the sever tells me:
    Name 'selCriteria' is not declared.

    I was under the impression selCriteria was a built-in function...
    No?

    So, I add:
    Dim selCriteria As String

    Good! Good!
    SH*T

    Error: 'End' statement not valid.

    Something out of order. Let's get rid of the "end for" since we
    al;ready have "exit for"

    and...
    and...
    something is happening!
    Lookslike it might be working.

    I'll get back to you after I plkug my oen IP in there and see what
    happens.

    Keep your fingers crossed!
    :)


    TIA
    AGAIN!
    :)
    Friday

    --
    #####################################
    "The people cannot be all, & always well informed. The part which is wrong will
    be discontented in proportion to the importance of the facts they misconceive.
    If they remain quiet under such misconceptions it is a lethargy, the forerunner
    of death to the public liberty. What country before ever existed a century & a
    half without a rebellion? & what country can preserve it's liberties if their
    rulers are not warned from time to time that their people preserve the spirit
    of resistance? Let them take arms... The tree of liberty must be refreshed from
    time to time with the blood of patriots & tyrants"
    -- Thomas Jefferson
    #####################################
     
    Friday, May 9, 2005
    #20
    1. Advertising

Want to reply to this thread or ask your own question?

It takes just 2 minutes to sign up (and it's free!). Just click the sign up button to choose a username and then you can ask your own questions on the forum.
Similar Threads
  1. Friday
    Replies:
    35
    Views:
    5,510
    Friday
    May 10, 2005
  2. JNY
    Replies:
    6
    Views:
    276
    Keith Thompson
    Dec 29, 2004
  3. joe
    Replies:
    3
    Views:
    347
  4. andreyvul

    Declaring structs with anonymous arrays

    andreyvul, Sep 30, 2008, in forum: C Programming
    Replies:
    7
    Views:
    431
    andreyvul
    Sep 30, 2008
  5. Philipp
    Replies:
    21
    Views:
    1,134
    Philipp
    Jan 20, 2009
Loading...

Share This Page