On May 23, 2006, at 11:10 AM, Charles Yeomans wrote:
On May 23, 2006, at 11:47 AM, Chris Jett wrote:
Let me see if I can break down this Byref issue I'm having as
simply as possible.
I have an array called ScanQueue. This is an array of a custom
class named "Message" which has a FolderItem property called
MessageFile. I have a method (called VirusScan) that I want to
pass the first element of the array to Byref so that it operates
on that element of the array directly. The VirusScan method
returns true if the Message object it was passed is not infected
with a virus, but it also needs to change some properties of the
Message object it is passed.
Here's my code where I get an error on compile:
if VirusScan(ScanQueue(0)) then
ScanQueue(0).MessageFile.MoveFileTo IncomingMailFolder
ScanQueue.Remove(0)
else
Here's the error message I get on compile: "You can't pass an
expression as a parameter that is defined as ByRef."
Um... OK. Why not?
--
Because the compiler says you can't. Basically, you can only pass
dot-free expressions by reference. Why this is so has been beaten
to death before. As I recall, the reason is to ensure that the
object passed exists during the life of the subroutine. While it
might be possible to change this, it would be complicated to
implement (and probably to maintain) and you'd have lots of special
cases to remember. The current system works and the rules are easy
to remember.
In your case, you don't need to pass the VirusScan parameter by
reference; you can always change properties of a parameter; passing
by reference is needed only to change the parameter itself. You
might take a look at <http://www.declaresub.com/Articles/
ObjectReferences.html>.
Thanks. I'll take a look at the article.
--
Chris Jett
[EMAIL PROTECTED]
_______________________________________________
Unsubscribe or switch delivery mode:
<http://www.realsoftware.com/support/listmanager/>
Search the archives of this list here:
<http://support.realsoftware.com/listarchives/lists.html>