Home | Contact Us | FAQ | Search & Site Map | Link to Us
Sign In | Join | Other 45 Sites in Network
HomeAnnouncementsFree MagazinesWhite PapersSubmit Content
Discussion GroupsASP.NETWindows FormsLanguages.NET FrameworkVisual Studio.NET
Articles.NET FrameworkASP.NETToolsWindows Forms
.NET DirectoryOpen Source ProjectsUser GroupsWeb Resources
Related Topics
Visual Basic 6SQL ServerMS AccessOther DB ProductsMS Server ProductsMore Topics ...

.NET Forum / Languages / VB.NET / November 2006

Tip: Looking for answers? Try searching our database.

how to make cookies into an array?

Thread view: 
Enable EMail Alerts  Start New Thread
Thread rating: 
André - 29 Nov 2006 14:48 GMT
Hi,

I need several cookies depending of an variable (x), so i defined a
HttpCookie() as an array.
My problems:
1)I get the error: Object reference not set to an instance of an object.
2)My second question is: how to request those cookies, because there is no
name?

Thanks
André

I did:
x=5
Dim cok(x) As New HttpCookie        'can't give a name to the cookie
....

for k=1 to x
cok(k).Value = "cookie" & k
Response.Cookies.Add(cok(k))
next

-----------------------------------
recovering the cookies?
for i=1 to x
cok(i) = Request.Cookies("??")
next
Tim Patrick - 29 Nov 2006 15:49 GMT
If you are using VB2005, you can switch to one of the Generic collections
that includes a key so that you can look up the cookie by name.

  Dim allCookies As Generic.Dictionary(Of String, HttpCookie)

Add new cookies to the dictionary this way:

  allCookies.Add(cookieName, theCookieItself)

Access the cookie this way:

  theRetrievedCookie = allCookies(cookieName)

-----
Tim Patrick - www.timaki.com
Start-to-Finish Visual Basic 2005

> Hi,
>
[quoted text clipped - 21 lines]
> cok(i) = Request.Cookies("??")
> nex
André - 29 Nov 2006 17:04 GMT
Hi,

thanks for replying ...

I tried this (it must be a loop because i never don't know in advance how
many cookies i need)
But i get the error: "value of type string cannot be converted to
system.web.httpcookie"
How can i give the value of the cookie?
Thanks

Dim allCookies As Generic.Dictionary(Of String, HttpCookie)
       Dim i As Integer
       Dim cc(5) As String
       For i = 1 To 5
           allCookies.Add(cc(i), "test" & i)
       Next

> If you are using VB2005, you can switch to one of the Generic collections
> that includes a key so that you can look up the cookie by name.
[quoted text clipped - 38 lines]
>> cok(i) = Request.Cookies("??")
>> next
Tim Patrick - 29 Nov 2006 17:44 GMT
But you are trying to convert "test1" to a cookie. That is a string, not
a cookie. You must specifically create an instance of HttpCookie, fill in
its constructor or fields as needed, and then store it. I haven't used that
object myself, but the code would be something like this.

Dim allCookies As Generic.Dictionary(Of String, HttpCookie)
Dim oneCookie As HttpCookie
Dim i As Integer

For counter = 1 To 5
  oneCookie = New HttpCookie
  ' !!! Fill in all of oneCookie's fields here, then...
  allCookies.Add("test" & counter, oneCookie)
Next counter

-----
Tim Patrick - www.timaki.com
Start-to-Finish Visual Basic 2005

> Hi,
>
[quoted text clipped - 56 lines]
>>> cok(i) = Request.Cookies("??")
>>> nex
André - 29 Nov 2006 19:50 GMT
Ok, thanks

> But you are trying to convert "test1" to a cookie. That is a string, not a
> cookie. You must specifically create an instance of HttpCookie, fill in
[quoted text clipped - 75 lines]
>>>> cok(i) = Request.Cookies("??")
>>>> next
André - 29 Nov 2006 20:38 GMT
Tim, don't become angry (i'm learning), but it still doesn't work ...

If i do what you wrote here, i get an error with the line:
oneCookie = New HttpCookie

the error is: "overload resolution failed because no accessible 'new'
accepts this number of arguments"

so i tried this (and the error is gone): oneCookie = New HttpCookie("ok")
the whole code is:
Dim allCookies As New Generic.Dictionary(Of String, HttpCookie)
Dim i As Integer
Dim oneCookie As HttpCookie
       For i = 1 To 5
           oneCookie = New HttpCookie("ok")
           oneCookie.Value = i
           allCookies.Add("test" & i, oneCookie)
       Next

But now, how can i retrieve the cookies? I did:

Dim allCookies As New Generic.Dictionary(Of String, HttpCookie)
Dim i As Integer
Dim cc(5) As String
Dim retCookie As HttpCookie
       For i = 1 To 5
           retCookie = allCookies("test" & i)
           cc(i) = retCookie.Value
           Response.Write(cc(i) & " ")
       Next

And the error is now: "The given key was not present in the dictionary"
Can you help me a last time? Thanks

> But you are trying to convert "test1" to a cookie. That is a string, not a
> cookie. You must specifically create an instance of HttpCookie, fill in
[quoted text clipped - 75 lines]
>>>> cok(i) = Request.Cookies("??")
>>>> next
Tim Patrick - 30 Nov 2006 01:02 GMT
Since I'm not sure of what you are doing, I'm not fully sure of the answer
to give you. Cookies are normally only used in the context of a web page,
and ASP.NET exposes two collections of cookies, one through the Request object
and one through the Response object. I'm not sure why you want to create
your own disconnected set of cookies.

I would confirm that you have read up on the HttpCookie object and its related
HttpCookieCollection object (instead of Generic.Dictionary). HttpCookie has
its own name, so it seems a collection-specified name isn't really necessary.

Maybe if you could explain your purpose, it would make the problem easier
to diagnose.

-----
Tim Patrick - www.timaki.com
Start-to-Finish Visual Basic 2005

> Tim, don't become angry (i'm learning), but it still doesn't work ...
>
[quoted text clipped - 109 lines]
>>>>> cok(i) = Request.Cookies("??")
>>>>> next
André - 30 Nov 2006 22:00 GMT
Tim, it's ok, i think i understand it now ...

> Since I'm not sure of what you are doing, I'm not fully sure of the answer
> to give you. Cookies are normally only used in the context of a web page,
[quoted text clipped - 127 lines]
>>>>>> cok(i) = Request.Cookies("??")
>>>>>> next

Free Magazines

Get these publications absolutely FREE for up to 12 months. There are no hidden fees and no obligation. Simply choose a title, complete the application form and submit it. Read more ...

Oracle MagazineNetwork ComputingComputer WorldBio-IT WorldeWeekInformation WeekInfosecurity
 
Sign In
Join
My Latest Posts
My Monitored Threads
My Blog
My Photo Gallery
My Profile
My Homepage

Start New Thread
Enable EMail Alerts
Rate this Thread



©2008 Advenet LLC   Privacy Policy - Terms of Use
This website includes both content owned or controlled by Advenet as well as content owned or controlled by third parties.