Forum: Ruby Overloading in ruby

Announcement (2017-05-07): www.ruby-forum.com is now read-only since I unfortunately do not have the time to support and maintain the forum any more. Please see rubyonrails.org/community and ruby-lang.org/en/community for other Rails- und Ruby-related community platforms.
Tomas K. (Guest)
on 2007-02-23 16:13
Hi,

I've been doing some Ruby code interfacing with Windows COM objects and
I've ran into this problem:

I have a COM object method say object.Value(name) which - when i call it
with appropriate "name" value returns some value.

The problem is that the same is used (according to that COM lib
documentation) for setting data to the object - i should write
object.Value(name) = value and it should set the value.

However I have not found a way to do this in Ruby - it gives me (and I
can fully understand why) syntax error when I try to set data to the
object.

Does anybody know if this can be done using Ruby and possibly how?

Thanks, Tom.
Jan S. (Guest)
on 2007-02-23 16:49
(Received via mailing list)
On 2/23/07, Tomas K. <removed_email_address@domain.invalid> wrote:
> object.Value(name) = value and it should set the value.
>
> However I have not found a way to do this in Ruby - it gives me (and I
> can fully understand why) syntax error when I try to set data to the
> object.
>
> Does anybody know if this can be done using Ruby and possibly how?
>
> Thanks, Tom.

try:

object.Value[name] = value

or: have a look at WIN32OLE docs and see if setproperty or invoke
could do what you want

or: post the exact code possibly with the links to the lib
documentation.

I'm not good enough to guess a general case, but I've been playing
with COM a bit so I might be able to guess the particular case.

J.
Tomas K. (Guest)
on 2007-02-23 17:04
Jan,

thanks very much. Setproperty did the trick for me.

Tom.


Jan S. wrote:
> or: have a look at WIN32OLE docs and see if setproperty or invoke
> could do what you want
>
Kyle S. (Guest)
on 2007-02-23 19:47
(Received via mailing list)
When calling methods on com objects in vbscript (ugh! pain ouch ouch
ouch!) the overlaoded methods were accessed by a _number.

Lets say it's the Vacuum object (the object that makes windows suck).
In overloadable languages you can pass a Soul, an Idea, or Creativity
into the Vacuum's suck method.  The order they are defined in is
important because that's the order (as far as I was able to figure
out) that they are indexed in.
To use Vacuum to suck a soul it would be
myVaccum.suck_1(someonesSoul)
an idea would be
myVaccum.suck_2(goodIdeasAboutGuis)

But that was just in vbscript.

--Kyle
This topic is locked and can not be replied to.