Home All Groups Group Topic Archive Search About

Using Eval to set dynamic object names



Author
13 Jul 2006 10:30 AM
webteam
I've ran into a little trouble with Eval, hoping someone can point it
out to me

This code works :

var_ktml = "textarea2"
Set ktml_textarea2 = new ktml4
Eval("ktml_" & var_ktml).Init var_ktml

This code doesn't :

var_ktml = "textarea2"
Set Eval("ktml_" & var_ktml) = new ktml4
Eval("ktml_" & var_ktml).Init var_ktml


Can anyone point out the error of my ways ?

Cheers,
Mark

Author
13 Jul 2006 11:00 AM
Anthony Jones
<webt***@gt4web.co.uk> wrote in message
Show quote
news:1152786649.208524.278840@i42g2000cwa.googlegroups.com...
> I've ran into a little trouble with Eval, hoping someone can point it
> out to me
>
> This code works :
>
> var_ktml = "textarea2"
> Set ktml_textarea2 = new ktml4
> Eval("ktml_" & var_ktml).Init var_ktml
>
> This code doesn't :
>
> var_ktml = "textarea2"
> Set Eval("ktml_" & var_ktml) = new ktml4
> Eval("ktml_" & var_ktml).Init var_ktml
>
>
> Can anyone point out the error of my ways ?
>

Simple, stop using Eval.

Use an array or even Scripting.Dictionary to collect and lookup objects


Show quote
> Cheers,
> Mark
>
Author
13 Jul 2006 1:14 PM
Bob Barrows [MVP]
webt***@gt4web.co.uk wrote:
Show quote
> I've ran into a little trouble with Eval, hoping someone can point it
> out to me
>
> This code works :
>
> var_ktml = "textarea2"
> Set ktml_textarea2 = new ktml4
> Eval("ktml_" & var_ktml).Init var_ktml
>
> This code doesn't :
>
> var_ktml = "textarea2"
> Set Eval("ktml_" & var_ktml) = new ktml4
> Eval("ktml_" & var_ktml).Init var_ktml
>
>
> Can anyone point out the error of my ways ?
>
Sure. You see that line that starts with "Eval ... "? That's the problem
right there*.
Try this instead:

dim var_ktml,ktml_objs, ktml_obj
set ktml_objs = createobject("scripting.dictionary")
var_ktml = "textarea2"
Set ktml_obj = new ktml4
ktml_objs.Item("ktml_" & var_ktml) = ktml_obj


When you want to use the object:

Set ktml_obj = ktml_objs.Item("ktml_" & var_ktml)
ktml_obj.Init var_ktml
ktml_objs.Item("ktml_" & var_ktml) = ktml_obj

Bob Barrows
* http://blogs.msdn.com/ericlippert/archive/2003/11/01/53329.aspx
--
Microsoft MVP -- ASP/ASP.NET
Please reply to the newsgroup. The email account listed in my From
header is my spam trap, so I don't check it very often. You will get a
quicker response by posting to the newsgroup.

AddThis Social Bookmark Button