Re: lingo-l resourceid reserved word?

2004-09-29 Thread Robert Tweed
- Original Message - 
From: roymeo [EMAIL PROTECTED]

 Never, EVER depend upon the capitalization of #symbols.

For network operations, you don't even need to use symbols, so the problem
is easily avoided. I always do something like this:

vArgs = [:]
vArgs[ resourceid ] = 123
vArgs[ HelloWorld ] = Hello, World!
netID = postNetText( theURL, vArgs )
...

- Robert
[To remove yourself from this list, or to change to digest mode, go to 
http://www.penworks.com/lingo-l.cgi  To post messages to the list, email [EMAIL 
PROTECTED]  (Problems, email [EMAIL PROTECTED]). Lingo-L is for learning and helping 
with programming Lingo.  Thanks!]


Re: lingo-l Buddy API

2004-09-19 Thread Robert Tweed
- Original Message - 
From: roymeo [EMAIL PROTECTED]

 And You should NEVER presume that you know my project better than I do.

You seem to have misunderstood the scope of my argument. Since I apparently
wasn't clear enough about it, I was only talking about freely distributed
software. Kiosks, as I said, are exceptions. There are other things that are
exceptions for the same reason that kiosks are exceptions: they are not
freely distributed software.

 If the Client wants to reset the laptop resolution of those 50
 sales-people to 800x600, that is the Client's right to pay me to
 implement.  it might even make sense.

The reason this is a special case in the same way that a kiosk is a special
case is that the client *is* the end user. It doesn't matter what the
salesperson thinks because it's not their laptop. If the client wants to
install this on the home PCs of their sales force then we are back to the
general case and no, you should not do that even if the client wants it
because the client doesn't have the right to make that decision for the
end-users. It simply comes down to who owns/administers the systems on which
the projector is being installed.

For everyday end-users in receipt of freely distributed software, they have
no special pre-standing agreements with you about what you may or may not do
to their computer so you simply do not have a right to go making assumptions
about what is acceptable and what isn't. Anything that can potentially break
their system simply isn't acceptable unless it is a user-instigated option.
I do not see this as a difficult concept to understand or accept.

If a client comes to you with a project that includes spyware in breach of
all sorts of privacy laws (which obviously vary from country to country, but
they do exist and this is hypothetical) should you break the law and develop
that software for them anyway? No, you shouldn't. Even if it's not illegal
to do something that can potentially damage a computer should you do that?
No, it's not illegal but it's definitely unethical.

In fact, even though changing the monitor resolution is assumed to be
perfectly legal, you (either the developer or the client) may be legally
liable for any damage that might be caused. However, since there has never
to my knowledge been a legal test case to prove that, I'm not asserting it
to be true: just saying it's something to consider, and ask whether it's a
risk worth taking.

Do specific contracts with the end-users make a difference? Yes, of course
they do. Employees of your client are to a lesser or greater degree, the
same entity, and may have signed away specific rights. In that case you can
get away with more, if that's what the client wants and it's not illegal or
unethical to do so. If however, the end-users have no special legal
contracts with you or your client then they are not a special case.

I hope I have now made it quite clear where I draw the line on this one and
that I still do not agree that there are exceptions to the rule about not
f!*king with hardware settings without permission: the only exception I
have made here concerns how permission is actually granted, but you still
have prior permission of the *user* (who may or may not be the same entity
as the client: understanding the difference is quite important).

- Robert

[To remove yourself from this list, or to change to digest mode, go to 
http://www.penworks.com/lingo-l.cgi  To post messages to the list, email [EMAIL 
PROTECTED]  (Problems, email [EMAIL PROTECTED]). Lingo-L is for learning and helping 
with programming Lingo.  Thanks!]


Re: lingo-l Secure Sandbox (was: Buddy API)

2004-09-19 Thread Robert Tweed
- Original Message - 
From: Stephen Ingrum [EMAIL PROTECTED]

 First of all, I generally agree with you. But, there are ways to make it
 work.

I know, which is why I feel it is important to get the point across to the
casual developers out there who might not weigh up the pros  cons properly,
exactly how much of a Bad Thing this is.

 Have you noticed that the Macromedia Shockwave games (Lemonade Tycoon 2)
 reset your video?

Yes, and this is probably why so many corporate/goverment sysadmins will not
allow Shockwave installation on their networks: anyone can mark an Xtra as
Shockwave safe, even if it clearly breaks the secure sandbox model.
Macromedia could do with adding another level of security for Xtras signed 
verified by Macromedia (at additional cost to any 3rd party Xtra developer).

The actual costs involved in this would probably be quite high, but this
wouldn't matter, as Xtras signed using the current self-certification system
would be good enough for most purposes. This would though, allow sysadmins
to prevent self-signed Xtras from running on their network, which would most
likely improve overall adoption of the player itself, even if certain
3rd-party Xtras can't be installed in those environments that would
otherwise not have Shockwave at all.

Note: For this to be completely effective, Macromedia would probably have to
publish a complete list of approved 3rd party Xtras with each player
release, and create a minor sub-revision release whenever that list changes.
That would allow for compliance with some of the ultra-strict certification
requirements that some bodies have where each application/plugin has to be
individually tested for compliance. Anything that isn't tested (i.e., the
latest version of Flash) can't be installed until someone gets around to
manually checking it for compliance.

- Robert

[To remove yourself from this list, or to change to digest mode, go to 
http://www.penworks.com/lingo-l.cgi  To post messages to the list, email [EMAIL 
PROTECTED]  (Problems, email [EMAIL PROTECTED]). Lingo-L is for learning and helping 
with programming Lingo.  Thanks!]


Re: lingo-l Buddy API

2004-09-18 Thread Robert Tweed
- Original Message - 
From: KLGC Studio [EMAIL PROTECTED]

[ snip: about changing monitor resolutions ]
 The key is to be very polite and informative about doing so.

The key is to give an *option* to do so, which the user can choose to
ignore. Of course, this doesn't apply to kiosk-type presentation, but an
application should never, ever, change any of the user's hardware settings
without *asking* the user first, and falling back gracefully if the user has
some reason why they don't want this to happen.

Even giving the user such an option should be considered very carefully
before implementing, simply because you never know what sort of idiots might
be looking at your app and if there are enough who would say yes to an
option they should have said no to then you could have a problem.

Why am I so strict about this? Simply, you can *never* presume to know
enough about the user's environment to know that it is safe to change
resolutions. On a laptop running at 800x600, you may find out that the video
card supports 1024x768, but you may not realise that changing to that
resolution causes the display to switch to a virtual desktop mode. On a CRT,
the video card may support the resolution and the monitor may *think* that
it can support the refresh rate, but as soon as you switch the user is
looking at a dead monitor because the refresh rate is unsupported. In the
worst case scenario, this can cause physical damage to the monitor, although
I have never seen this happen, so I think it only applies to very old ones.

- Robert

[To remove yourself from this list, or to change to digest mode, go to 
http://www.penworks.com/lingo-l.cgi  To post messages to the list, email [EMAIL 
PROTECTED]  (Problems, email [EMAIL PROTECTED]). Lingo-L is for learning and helping 
with programming Lingo.  Thanks!]


Re: lingo-l Buddy API

2004-09-18 Thread Robert Tweed
- Original Message - 
From: KLGC Studio [EMAIL PROTECTED]

 I like the way you base your argument on a convenient snippet (taken in
 part and out of context),

I was essentially arguing the same point, but disagreeing with the opinion
that there are occasions when it is OK to change the user's hardware
settings without asking (or even that asking is in itself a suitable get-out
for doing so inappropriately). At first glance it appears that this is what
you were saying, but having re-read your post it seems I may have been wrong
about this, in which case I apologise if my reply seemed unnecessarily
argumentative.

Still, applications that change the screen settings without asking or refuse
to work at a different resolution are a pet hate of mine so I will not agree
with anyone who says there are times when it is acceptable outside of a
kiosk. It is not, and programmer laziness or lack of budget is not a good
excuse. An option to change resolution should be just that: an *option*,
instigated by the user _at their request_, that is all.

- Robert

[To remove yourself from this list, or to change to digest mode, go to 
http://www.penworks.com/lingo-l.cgi  To post messages to the list, email [EMAIL 
PROTECTED]  (Problems, email [EMAIL PROTECTED]). Lingo-L is for learning and helping 
with programming Lingo.  Thanks!]


lingo-l XPOST: Bugs, bugs, bugs!

2004-07-29 Thread Robert Tweed
Originally posted on macromedia.director.lingo - replies to the NG where
possible, to keep everything in one place.
--

Well, it's bug announcing time again. This message contains details of two
new (AFAIK) bugs. I'd be grateful if people could independently verify the
bugs on their systems before I forward this thread on to Macromedia. Please
say what results you get, what version of Director you are using, and what
your OS is.

--[ BUG 1 ]--

Since Ziggi tested for the /new/ bug in the XML parser that had previously
been spotted, but was unverified, I can confirm that we have *both* now
independently verified the bug. I did some slightly more extensive tests
that Ziggi's, so I will give a bit more information. The repro movie is
here:

http://www.killingmoon.com/director/bugs/xml_parser/xml_test.dir
(download: do not attempt to run from website; best run as a projector)

My results (Windows 2000 only, so far):

Test  D85   MX2004
1   no OK
2a no no
2b no no
3a OKOK
3b no OK

Details of these tests are in the movie.

What this means is that in D85, you can call makeList as often as you like,
although it's unlikely you'll ever want to call it more than once without
parsing a new document. In DMX2004, the parseString memory leak *has* been
fixed, so you can parse as many XML documents as you like, and as long as
you stick to makeList and accessing the parsed XML as a list only, there is
no memory leak. However, if you access any element of the XML parser object,
such as child[1], etc., then this causes a memory leak. In short, if using
DMX2004, use makeList, do not access nodes through the XML object.

--[ BUG 2 ]--

In doing this test, I turned up another, unrelated bug. It seems that if you
quit a movie by hitting the [X] button in Windows, endSprite is called in
the *middle* of whatever handler is running at the time, then control goes
back to that function (even though objects may have been destroyed or data
invalidated). As far as I can tell, none of the following causes this bug:
pressing ESC; pressing CTRL+F4; double-clicking on the control button. The
following movie demonstrates the problem:

http://www.killingmoon.com/director/bugs/endsprite/endsprite_test.dir
(MUST be run as a projector to demonstrate the bug)

Note: There are fairly detailed comments in the movie.

BTW, I'd be interested to know if this is a Windows only thing, or even a
Win2K thing. I've verified the problem with D851 and the MX2004 trial on
Windows 2000. I'm pretty sure I've seen this bug occur intermittently with
CD-ROM projects in the past, but it's been so intermittent I haven't been
able to tell that this was what was causing it.

- Robert

[To remove yourself from this list, or to change to digest mode, go to 
http://www.penworks.com/lingo-l.cgi  To post messages to the list, email [EMAIL 
PROTECTED]  (Problems, email [EMAIL PROTECTED]). Lingo-L is for learning and helping 
with programming Lingo.  Thanks!]


Re: lingo-l [OT] Autoresponders

2004-07-09 Thread Robert Tweed
- Original Message - 
From: Tab Julius [EMAIL PROTECTED]

 (1) PLEASE turn off autoresponders, or unsubscribe.
 (2) If you see an autoresponder, TELL ME, but DON'T reply back to the list
 - that just makes more traffic and creates another autoresponder thread.

This made me think about something since I am working on my own mailinglist
manager for openLingo: automatically ban anyone who sends the same post to
the list 3 times in a row*. Send them a reply saying you have been banned,
click the following link to remove the ban. This has been done because it
looks like you have left an autoresponder subscribed to the list.

Many auto-responders will only respond once to the same address anyway, so
this technique simply bans the lame ones (like James'), which keep sending
out the same message, without the need for anyone to inform the list admin.
Don't know if this can be done with any of the main standard mailinglist
managers, but it's an easy thing to build in if you are writing your own,
so I think I'll build this in.

BTW: Just noticed something interesting checking the headers in James'
emails: they have an X-Autorespond: header. Don't know how widely used
this header is, but it would make sense for the list to automatically ban
posts containing that header.

- Robert

* A more advanced version would check the references and in-reply-to headers
to see if the messages are the same but in reply to different posts, in
which case a ban could be enforced on the second post rather than having to
wait until two had been sent out to the list. Another thing I would probably
add is automatically filtering multiple identical posts, which newbies tend
to do occasionally, particularly on moderated lists, because they don't take
account of propagation time and think their email was not received. If
someone sends the same post more than once (whether or not they are banned
for apparently being an auto-responder) then the list still doesn't need to
see their post more than once.

[To remove yourself from this list, or to change to digest mode, go to 
http://www.penworks.com/lingo-l.cgi  To post messages to the list, email [EMAIL 
PROTECTED]  (Problems, email [EMAIL PROTECTED]). Lingo-L is for learning and helping 
with programming Lingo.  Thanks!]


Re: lingo-l [OT] Html Editor

2004-07-09 Thread Robert Tweed
- Original Message - 
From: Rodrigo [EMAIL PROTECTED]

 The HTMLArea is a what you see... editor. You only see the code if you
 want to. It's developed in html and javascript.

Only problem is that it's not very good: I tested it on IE 6 and Mozilla
1.6, both on Windows: the editor worked in neither browser, despite
supposedly being compatible with IE 5.5 or greater on Windows. I suspect
it utilises some bug or another in IE 5.5 to work (notoriously one of the
buggiest browsers in existance) that do not exist in any other browser,
which is why it doesn't work in 6.0. From a brief look at the source it
contains lots of document.all references, so it's clearly IE specific code.
My evalution: nice idea, poor execution.

- Robert
[To remove yourself from this list, or to change to digest mode, go to 
http://www.penworks.com/lingo-l.cgi  To post messages to the list, email [EMAIL 
PROTECTED]  (Problems, email [EMAIL PROTECTED]). Lingo-L is for learning and helping 
with programming Lingo.  Thanks!]


Re: lingo-l detect sprites with a certain property

2004-07-02 Thread Robert Tweed
- Original Message - 
From: Christoffer Enedahl [EMAIL PROTECTED]
 
 but this fails when a sprite has no properties  as it returns a handler
 not in object error.
 so is it poosible to test for whether a sprite has any custom properties
 at all or not.

 try:
 if not voidP( sprite(k)[#myBuiltInCursor] ) then

Note that you cannot call sprite(x).getaProp(y) (using square brackets calls
getaProp internally) unless the sprite has entries in the
scriptInstanceList. So, to avoid script errors, first check
sprite(x).scriptInstanceList.count, then check for the property. It can't
have the property if the scriptInstanceList is empty anyway. For example:

on mouseUp me
  repeat with i = 1 to the lastChannel
if( sprite(i).scriptInstanceList.count ) then
  if( not voidP( sprite(i)[ #myBuiltInCursor ] ) ) then
sprite(i).cursor = sprite(i).myBuiltInCursor
  end if
end if
  end repeat
end

- Robert

[To remove yourself from this list, or to change to digest mode, go to 
http://www.penworks.com/lingo-l.cgi  To post messages to the list, email [EMAIL 
PROTECTED]  (Problems, email [EMAIL PROTECTED]). Lingo-L is for learning and helping 
with programming Lingo.  Thanks!]


lingo-l [XPOST] ANN: LingoFish update - PHP source

2004-06-18 Thread Robert Tweed
A quick announcement for anyone who is using or would like to use Blowfish
to encrypt communications between Director and PHP. I've just written some
doumentation for my pure PHP implementation of the cipher (useful if you
don't have mcrypt installed on your server), and uploaded it to my site. I
was going to add a PHP section to my site (will probably do so later), but
in the meantime I've just bundled the whole thing with instructions in a
zip, and linked to it from the LingoFish pages.

It's all here:
http://www.killingmoon.com/director/lingofish/

- Robert

PS: If you reply to this, please delete the extra groups from the xpost -
don't reply to all of them.

PPS: Sorry if this is a double-post, but I was a twat and sent from the
wrong mail account.

[To remove yourself from this list, or to change to digest mode, go to 
http://www.penworks.com/lingo-l.cgi  To post messages to the list, email [EMAIL 
PROTECTED]  (Problems, email [EMAIL PROTECTED]). Lingo-L is for learning and helping 
with programming Lingo.  Thanks!]


Re: lingo-l Event processing (was: pass with prepareMovie notpossible?)

2004-06-11 Thread Robert Tweed
- Original Message - 
From: James Newton [EMAIL PROTECTED]

   3D worlds get certain events that only apply to them
  Got a list? Still haven't got into the 3D stuff yet.

 You'll find a list at the RegisterForEvent entry in the Lingo dictionary.

Cheers. I'll look into the 3D events in more detail later.

 Also, don't forget the primary event handlers:
[snip]

Oh, forgot about those as well! Thanks.

BTW, this article just started off as the basic event order for
prepareMovie, beginSprite, etc., and it's ended up covering everything!

- Robert
[To remove yourself from this list, or to change to digest mode, go to 
http://www.penworks.com/lingo-l.cgi  To post messages to the list, email [EMAIL 
PROTECTED]  (Problems, email [EMAIL PROTECTED]). Lingo-L is for learning and helping 
with programming Lingo.  Thanks!]


Re: lingo-l pass with prepareMovie not possible?

2004-06-10 Thread Robert Tweed
- Original Message - 
From: Jakob Hede Madsen [EMAIL PROTECTED]
 
 Unfortunately, you can't.

 Well, like I wrote previously; HE CAN.

 May I suggest that you test it yourself?

Hmm, interesting, I've just checked it out in D85 and it does work - I'm
surprised no-one came up with that when it was discussed before (you should
have been on the list!). OpenLingo presently gets around the problem of
requiring start-up code by using lazy instatiation instead, as part of the
wrapper script: when you call a package for the first time it is
initialised. Cleanup code on shutdown might be a good thing, but if the user
puts a stopMovie handler in the internal cast and forgets to put a pass
statement at the end then the openLingo stopMovie will be ignored anyway. So
far there isn't anything that _needs_ shutdown code, and it may be that we
can get by without it anyway.

- Robert

[To remove yourself from this list, or to change to digest mode, go to 
http://www.penworks.com/lingo-l.cgi  To post messages to the list, email [EMAIL 
PROTECTED]  (Problems, email [EMAIL PROTECTED]). Lingo-L is for learning and helping 
with programming Lingo.  Thanks!]


Re: lingo-l Event processing (was: pass with prepareMovie not possible?)

2004-06-10 Thread Robert Tweed
- Original Message - 
From: Jakob Hede Madsen [EMAIL PROTECTED]

 Hi James, I'm still a little baffled that everyone seems to agree
 that 'pass' doesn't work for movieEvents.

I've actually just been investigating the order of event propagation for a
short article I'm writing - I started putting my stuff about dynamic puppets
up on the web and ended up writing a whole bunch of related stuff that I
haven't finished yet, one of which covers the Director event model.

What I came up with is this: Director checks for handlers at different
priority levels. If it doesn't find a handler at priority 1, it goes on to
priority 2, etc. The priorities are:

1 - Sprites (highest sprite has priority)
2 - Frame script
3 - Movie script

One caveat is that each level can only have one handler, so a pass passes
control on to the next priority level, never to another handler with the
same priority. For example, if you have a mouseUp handler on two overlapping
sprites, pass will pass control from the top sprite to the frame or a
movie script, but not to the lower sprite.

It looks like the only part of this model that I got wrong is that each
castlib has it's own priority level, so the order is actually:

1 - Sprites (highest sprite has priority)
2 - Frame script
3 - Movie script: castLib 1
(n+2) - Movie script: castLib n

JFTR, I tested and this does work with sprite-level events such as mouseUp,
as well movie-level events like prepareMovie.

Does this sound about right, or does anyone have any further insights to
offer about the event processing model? In particular, can anyone think of
any further peculiarities relating to MIAWs, LDMs or anything else where
cast references might be skewed in some way?

- Robert

[To remove yourself from this list, or to change to digest mode, go to 
http://www.penworks.com/lingo-l.cgi  To post messages to the list, email [EMAIL 
PROTECTED]  (Problems, email [EMAIL PROTECTED]). Lingo-L is for learning and helping 
with programming Lingo.  Thanks!]


Re: lingo-l Event processing (was: pass with prepareMovie not possible?)

2004-06-10 Thread Robert Tweed
- Original Message - 
From: Alex da Franca [EMAIL PROTECTED]

 AFAIK the moviescripts in the same castlib as the
 object lives in, which the event came from, are
 given precedence, and THEN the castlibs are
 processed in their order.
 but you have to test it, because I am not 100% sure about that

That's true if you call a function from another function, in which case it
scans from the cast where the calling function is located first.

However, as far as events passing by pass goes, it always processes from
castlib 1 first. I checked this before the last post to make sure I had it
right.

- Robert
[To remove yourself from this list, or to change to digest mode, go to 
http://www.penworks.com/lingo-l.cgi  To post messages to the list, email [EMAIL 
PROTECTED]  (Problems, email [EMAIL PROTECTED]). Lingo-L is for learning and helping 
with programming Lingo.  Thanks!]


Re: lingo-l Event processing (was: pass with prepareMovie not possible?)

2004-06-10 Thread Robert Tweed
- Original Message - 
From: Buzz Kettles [EMAIL PROTECTED]

 1.5 - CAST MEMBER scripts (scripts attached TO the cast member
 themselves) -
 these have officially been deprecated, but they are still in wide
 usage - especially in legacy work  newbie projects.

Good point, I totally forgot about those.

 the pass concept applies primarily for the processing of mouse-related
 events
 frame events get to all the levels without the need of a pass
 movie events only get to their appropriate movie script
 (- the first one encountered within all the casts, while searching
 starting with castLib 1)

This is a good point too; I've already got the events split into different
categories, but I think I better revise the categories since there are
basically 3 types of propagation: global events (e.g. enterFrame,
exitFrame), interrupts (e.g. mouseUp, prepareMovie) and local messages (e.g.
beginSprite, stepFrame).

There are some exceptions to the basic rules, but I'd rather stick to simple
categories and then point out the exceptions rather than complicate things.

  3D worlds get certain events that only apply to them

Got a list? Still haven't got into the 3D stuff yet.

  timeout objects get a selected set ...

Another good point, according to the help the list is:
prepareMovie, startMovie, stopMovie, prepareFrame, and exitFrame

Odd that they don't get enterFrame events. Another one for the list of
peculiar exceptions.

 Also the beginSprite/enterFrame stuff is screwy in frame 1, etc.

Can you elaborate on this at all? I've heard a lot of people talk about
problems with frame 1 in the past, but I've never been able to replicate a
problem myself - I think a lot of the time it is fear of a bug that no
longer exists, or confusion over the event order.

No matter what tests I do, the order is always: [prepareMovie] beginSprite,
prepareFrame, [startMovie] enterFrame, exitFrame - although obviously if you
don't use frame one then beginSprite/prepareFrame will be called after
startMovie rather than before. The fact that it's actually the other way
around does seem to confuse a lot of people though.

One odd thing I did spot in doing a quick test just now is that if you put a
halt statement in an exitFrame handler in the last frame of your movie,
the playhead actually moves back to frame one and fires the beginSprite
handler(s) before quitting. Doesn't do it if you put the halt statement in
enterFrame instead though.

- Robert

[To remove yourself from this list, or to change to digest mode, go to 
http://www.penworks.com/lingo-l.cgi  To post messages to the list, email [EMAIL 
PROTECTED]  (Problems, email [EMAIL PROTECTED]). Lingo-L is for learning and helping 
with programming Lingo.  Thanks!]


Re: lingo-l pass with prepareMovie not possible?

2004-06-09 Thread Robert Tweed
- Original Message - 
From: Roland Schroth [EMAIL PROTECTED]

 It is important that I can have more than one movie script with
 preapareMovie and startMovie procedures.

Unfortunately, you can't. Lingo doesn't allow you to have two movie script
functions with the same name, it just takes the first one it finds and
ignores the rest. There have been discussions about this in the past on the
openLingo list to try to find a workaround, but so far no-one has managed to
find one.

- Robert

[To remove yourself from this list, or to change to digest mode, go to 
http://www.penworks.com/lingo-l.cgi  To post messages to the list, email [EMAIL 
PROTECTED]  (Problems, email [EMAIL PROTECTED]). Lingo-L is for learning and helping 
with programming Lingo.  Thanks!]


Re: lingo-l scriptList vs. scriptInstanceList

2003-11-11 Thread Robert Tweed
- Original Message -
From: Jeremy Aker [EMAIL PROTECTED]

 What is the proper method for removing objects from a sprite's
 scriptInstanceList?
 I've been using a script such as the following with good results:

repeat with i = 1 to sprite(mySprite).scriptInstanceList.count
  sprite(mySprite).scriptInstanceList[i] = VOID
end repeat
sprite(mySprite).scriptInstanceList = []

Unless you need to delete just one specicif behaviour, you can skip most of
that and just go straight to:

sprite(mySprite).scriptInstanceList = []

However: *never* do this from a behaviour attached to that sprite. Another
sprite is OK, or the frame, or a timeout, whatever; but if you do it from a
behaviour that is in the scriptInstanceList you are modifying then it will
not be properly deleted and will cause a memory leak.

- Robert

[To remove yourself from this list, or to change to digest mode, go to 
http://www.penworks.com/lingo-l.cgi  To post messages to the list, email [EMAIL 
PROTECTED]  (Problems, email [EMAIL PROTECTED]). Lingo-L is for learning and helping 
with programming Lingo.  Thanks!]


Re: lingo-l The value of void?

2003-04-03 Thread Robert Tweed
- Original Message -
From: Tim MacDonald [EMAIL PROTECTED]

 t = call(#undefined, the actorList)

 put t
 -- Null

 (This is one way I know of producing this value -- I'm sure there are
 others)

 put ilk(t)
 -- #void

[snip]

 Is this an example of a dirty void? Or just another lingo idiosyncracy?

Interesting, you could be onto something here. I thought NULL was just a
synonym for VOID, but not so it would seem. It's interesting that ilk and
voidP() give different results. Here's my own version of your tests:

a = call( #undefined, [] )
put a
-- Null
put voidP(a)
-- 0
put ilk( a, #void )
-- 1
put a=true
-- 0
put afalse
-- 1

( I wonder if you get the same results on the Mac? )

I don't know whether the difference between ilk and voidP is intentional so
people can distinguish VOID from NULL, or if that is a bug in voidP.
Certainly it seems a bit strange that the ilk should be called #void if it
is not of the #void type.

Actually, this result makes me suspect that all 0's is a NULL, and VOID has
a different ilk bytecode - either that or VOID has a special integer code,
and both NULL and VOID really are of type #void. I say this since it's
unlikely that a random return code that is anything other than zero would
result in a type such as NULL, it would more likely result in a random
number or something. It's much more likely that the default undefined return
code is binary zero.

One notable point here is that Kerry's fix would not work in this case,
because voidP does not work. You'd need to use this instead:

if( ilk( nullVar, #void ) ) then nullVar = false

- Robert

[To remove yourself from this list, or to change to digest mode, go to 
http://www.penworks.com/lingo-l.cgi  To post messages to the list, email [EMAIL 
PROTECTED]  (Problems, email [EMAIL PROTECTED]). Lingo-L is for learning and helping 
with programming Lingo.  Thanks!]


Re: lingo-l Re: void and stuff

2003-04-03 Thread Robert Tweed
- Original Message -
From: [EMAIL PROTECTED]

 This kind of issue would be solved if Macromedia gave us decent exception
 handling, so that we could stay in the scope of any anticipated errors
when and
 where they happened without being catapulted into the nebulous world of
 alerthook, which pops the entire call stack. (Does anyone ever use the
 alertHook?)

Christoffer has a try/catch object in his files area at openLingo
(www.openlingo.org). It's a start, but it's not perfect. AFAIK, it only
works properly in projectors.

Personally, I would like some form of exception handling built into Lingo,
but not like the clunky try/catch blocks in Java that make a simple 1 line
function into about 10 lines of exception handlers. Perhaps something more
like VBScript's on error... although I don't really know how good that is
because I don't do much VB.

Still, the main thing is that for the most part when scripting, errors can
simply be ignored. As long as we know that VOID = 0 = false, and functions
return VOID on error, then we can usually write code that doesn't care about
the difference between VOID and 0. The only reason we would care is if we
have a specific reason to care, or after this thread, because it seems that
the aforementioned does not hold true in Lingo.

- Robert

[To remove yourself from this list, or to change to digest mode, go to 
http://www.penworks.com/lingo-l.cgi  To post messages to the list, email [EMAIL 
PROTECTED]  (Problems, email [EMAIL PROTECTED]). Lingo-L is for learning and helping 
with programming Lingo.  Thanks!]


Re: lingo-l The value of void?

2003-04-02 Thread Robert Tweed
- Original Message -
From: Kerry Thompson [EMAIL PROTECTED]
 
  Then you will get different results depending on the apparently random
  output from this function with a single known input. That's not good
  from
  an engineering POV.

 Ah, but you will get consistent results with your code. You're testing
 for void first, just like I found I needed to do.

No, that's not the problem here. The problem is that value() *randomly*
returns 0 or VOID, when it should clearly always return one or the other (it
doesn't matter which, as long as the same input gives the same output).

Secondly, I am quite aware of the exact nature of VOID. VOID is a special
type/value. The VOID /type/ can have one value: VOID. The /value/ VOID is
numerically equivalent to the value 0 for the integer type, or 0.0 for the
floating point type. These are not /identical/, because the types are
different. However, there is implict casting between all 3 types for all
arithmetic and logical operations in Lingo. As I said before, 0 = 0.0 =
VOID. However, 0 !== 0.0 !== VOID.

VOID is not the absense of a value at all, it is a perfectly valid value.
The only problem with that statement is that in practise it can cause
problems with list properties whose values are set as VOID since Lingo
doesn't have any good functions to /distinguish/ between that condition and
the complete absence of the property. I'm talking about the fact that
getaProp returns VOID for non-existant properties, and this is sometimes the
only way to check. This could be solved by the addition of an isAProp
proplist function, but its not something that can be done in Lingo, it must
be added to the language.

BTW, you should not confuse VOID in Lingo with void in C: they are quite
different. In C it /does/ indicate the absence of a value (but don't confuse
a void pointer with a null pointer either, they are also quite different).
However, the C void keyword has two possible and quite different meanings,
depending on the context, but there is no VOID type, nor is there a VOID
value.

Regarding your bug, I'm *very* surpised if MACR marked:

if( VOID ) then
  -- Never execute this code
  -- But it runs on Windows
end if

as NAB, because it clearly is a bug, if the above statement were true.
However, it doesn't evaluate as true on any Windows system I've ever tested
(I even double checked on mine just now to be sure). I expect that the bug
actually lay in your conditional expression, which may not have been
returning VOID as you believe. I'd be interested to see the /exact/
conditional expression though, if you still have a note of it.

- Robert

[To remove yourself from this list, or to change to digest mode, go to 
http://www.penworks.com/lingo-l.cgi  To post messages to the list, email [EMAIL 
PROTECTED]  (Problems, email [EMAIL PROTECTED]). Lingo-L is for learning and helping 
with programming Lingo.  Thanks!]


Re: lingo-l xtraP( instance ) ?

2003-04-02 Thread Robert Tweed
- Original Message -
From: Daniel Plaenitz [EMAIL PROTECTED]

 I could test for  string( instance ) contains Xtra  but that seems to
 consume a lot of cpu cycles

It could also be buggy in the extising form - what about a script whose name
contains Xtra, or Extra?

I don't think there's a better way though. Rewrite it as if(
string(instance) begins Xtra ) instead of using contains. It should be
slightly faster too as it doesn't have to scan the entire string, but not
much, certainly nowhere near as fast as a predicate.

If you're worried about the performance of this, I would ask why you need to
know that the object is an Xtra in the first place, and why don't you
already know anyway? There may be a better way to do what you want without
the test.

- Robert

[To remove yourself from this list, or to change to digest mode, go to 
http://www.penworks.com/lingo-l.cgi  To post messages to the list, email [EMAIL 
PROTECTED]  (Problems, email [EMAIL PROTECTED]). Lingo-L is for learning and helping 
with programming Lingo.  Thanks!]


Re: lingo-l xtraP( instance ) ?

2003-04-02 Thread Robert Tweed
- Original Message - 
From: Daniel Plaenitz [EMAIL PROTECTED]
 
 because:
 
 put x.count
 -- 0
 put y.count
  script error 

put getaProp( y, #count )
-- Void

(at least, I think it works with Xtras - I've never actually tried)

- Robert
[To remove yourself from this list, or to change to digest mode, go to 
http://www.penworks.com/lingo-l.cgi  To post messages to the list, email [EMAIL 
PROTECTED]  (Problems, email [EMAIL PROTECTED]). Lingo-L is for learning and helping 
with programming Lingo.  Thanks!]


Re: lingo-l The value of void?

2003-04-02 Thread Robert Tweed
[ Long email warning - some may find the low-level programming stuff at the
end interesting, others may want to avoid ]

- Original Message -
From: Kerry Thompson [EMAIL PROTECTED]

 As I said, the debate became rather acrimonious, to the point that some
 people, including MM engineers, left the list. Several people on the
 list now were around for the brouhaha--Alex de Franca remembers ^_^

I'm sure it was due to the shame of having to follow the party line on this
whole VOID=true business. That *is* what it comes down to - they are saying
that VOID is undefined when that is simply not true, except in a buggy
language implementation.

  I might check the documentation

 Don't bother. Your search will return void.

:-)

 True, except when it's NULL ;-)

 x=NULL
 put x
 -- Void

AFAIK, NULL is simply a constant representation of the VOID type - the same
as TRUE in Lingo is actually the integer 1 and FALSE is the integer 0. Some
other loosely typed languages such as PHP actually have a boolean type, so
FALSE !== 0. TRUE is a more complex one than =1 or != 1, since TRUE is
generally represented by -1 since that is the bitwise inverse of FALSE (0).
At least, most C programmers do it that way, more out of convention than
anything (much like the convention to use the variable name me in Lingo
instead of the more traditional this in all other OOP).

 I can't reproduce it now either, on the systems I have. I wish I could.
 The bottom line, though, is that you should check for voidP before doing
 any Booleans, at least in Lingo.

That's a shame. At the very least, it is undesirable behaviour. I would
still regard it as a bug, even if Macromedia were too lazy to fix it that
week. What should happen in any aritmetic expression is that types should
follow a known order of implicit up-casting. For instance, VOID upcasts to
int, and int upcasts to float, wherever required to do so by an arithmetic
or logical operator. Not doing this somewhat limits the usefulness of any
scripting language.

There is no point in a scripting language that /requires/ type checking
before every statement. You might as well write all your code in C or Java
because at least then you'd know what the types are in advance.

 In another post, I mentioned that void was the absence of a value, and
 you said that it is a specific value. Actually, I think we're both
 correct. I don't have my Kernighan  Ritchie handy (we just moved, and
 boxes are everywhere), but C and Lingo do treat it differently. I was
 going by Macromedia's documentation, which says voidP determines
 whether the variable specified by variableName has any value. Since
 this is a Lingo list, I was referring to void in Lingo. You're right
 in other contexts, though. Maybe we should all go back to twiddling bits
 in 6502 assembler.
-
From: Howdy-Tzi [EMAIL PROTECTED]

 But void is not zero, any more than, in C:

int foo;

 makes foo a valid variable. You don't know what's in it and testing it
 without first stuffing a value into it:

int foo = 3;

 can lead to all kinds of weird problems.

Just to get the record completely straight on the different meanings of void
or VOID - the following is a lengthy and technical discussion of points that
you may all be aware of, but may also clear up a few ambiguities:

In C everything is typed. So, the declaration:

  int foo;

Allocates a 2-byte block of memory and foo is set as a static pointer to
that memory location. However, what that statement does not do, is put any
specific value in the 2-bytes of memory, so at runtime it could contain
anything. This is known as undefined - that is *not* a specific value
(unlike VOID), nor is it the absence of value either, it is the absence of
prior *knowledge* of what the value should be.

  int foo = 3;

Does exactly the same, except that it always starts with 0x0003 in the 2
bytes set aside for the variable foo, so we know what the value is.

The keyword void in C is also unlike VOID in Lingo. In C, this indicates
an unknown, or don't care value. There are 2 possible uses, one to indicate
that a function does not return a value, and another which is the void
pointer:

void *voidpointer = 0xb800;

This example is a base-address pointer to the colour text mode video memory
on the PC. Pointer aritmetic on a void pointer is performed in bytes, so
*( voidpointer + 100 ) means the value at the 100th byte in the video
memory. However, since the pointer is void, we don't know how many bytes to
read from that base address, so some casting is required (often done
implicitly by the compiler when the pointer is assigned to a variable, but
it depends on the strictness settings).

This is different to typed pointers like:

int *intpointer = 0xb800;

in which pointer arithmetic operations are automatically multiplied by the
size of the type. In this case sizeof(int) = 2, so (int)*( voidpointer +
100 ) is precisely equivalent to *( intpointer + 50 ). Internally that
compiles into (int)*( 

Re: lingo-l escape key code

2003-04-02 Thread Robert Tweed
- Original Message -
From: Kerry Thompson [EMAIL PROTECTED]

  Does anyone know what the ESC keycode is? Where can I find a list
  that corresponds to teh numbers Director uses?
 
  Sorry -
 
  In my previous response I sent the ANSI table 
  I should have sent ASCII (right Kerry?)

  so the number you want is 29

 Ummm... actually, escape is ASCII 27. And ANSI 27.

Just to confuse matters, keyCodes are neither ASCII, ANSI, nor are they the
same as the hardware scancodes sent by the keyboard. They use some F!'d up
system that Macromedia smoked up one day, the reference is here:

http://www.macromedia.com/support/director/ts/documents/keycodes.htm

Notably, ESC isn't in that list, but a quick test reveals it's keyCode to be
53.

- Robert

[To remove yourself from this list, or to change to digest mode, go to 
http://www.penworks.com/lingo-l.cgi  To post messages to the list, email [EMAIL 
PROTECTED]  (Problems, email [EMAIL PROTECTED]). Lingo-L is for learning and helping 
with programming Lingo.  Thanks!]


Re: lingo-l The value of void?

2003-04-02 Thread Robert Tweed
- Original Message -
From: Kerry Thompson [EMAIL PROTECTED]

 I stop short of saying it undermines Lingo's credibility, though. It's a
 known issue, with a known workaround, and just about every scripting
 language I've used has issues like this. Lingo remains a powerful and
 flexible language, albeit with some quirks. After all, that's what they
 pay us those big bucks for ^_^

You mean we can get big bucks for this now? ;-)

Actually, I do think it undermines Lingo's credibility, to a greater or
lesser extent, depending on how you look at it. As you can probably tell, I
like to know how things work, so when I write some code I know it's going to
do what I expect it to do. I don't like lots of things being left undefined,
just because the Macromedia engineers are too lazy to address what is
clearly a bug, so they do a Microsoft a re-label it as a feature.

Sorry, but in this case it's not acceptable, and it can seriously complicate
what should otherwise be simple code. Scripting languages are for exactly
that - writing simple elegant code that reads easily. They are not for
writing mammoth chunks of code that explicitly work around every possible
bug-causing case - the language itself is by design, supposed to negate the
need for all that.

You also made the point that we should test for an empty string before
passing it to value(), but I don't see why that should be necessary either.
Again this comes down the the amount of work we are expected to do in our
scripts - really that work should be delegated the the built-in functions,
so something like value() should always return a known value, it doesn't
matter what, as long as it is consistent. I don't mind the return value
being undefined if the input is not a string, but an empty string is still a
string, so it's well within the function's working specification.

[snip]
 That corresponds with my experience. I believe I mentioned that I found
 the problem in a function call. This is way, way oversimplified, but it
 was essentially this:

 x = someFunction()
 if x = FALSE then
 -- do something
   else
 -- do something else
 end if

 on someFunction
   --do something
   --but don't return anything
 End

Ah, so rather than returning VOID it actually doesn't return anything -
that's a bit different. You are basically returning an undefined value,
which may or may not be VOID. Having said that, I believe Lingo does
normally put a VOID in as the return value for you, which is really what it
should do to make everything nice  robust - no-one want's to deal with
undefined's in a scripting language, which is why we have VOID in the first
place.

Anyway, if that is where the problem is creeping in, there is still no need
for dirty VOIDs the be handled incorrectly.

- Robert

[To remove yourself from this list, or to change to digest mode, go to 
http://www.penworks.com/lingo-l.cgi  To post messages to the list, email [EMAIL 
PROTECTED]  (Problems, email [EMAIL PROTECTED]). Lingo-L is for learning and helping 
with programming Lingo.  Thanks!]


Re: lingo-l The value of void?

2003-04-01 Thread Robert Tweed
- Original Message -
From: [EMAIL PROTECTED]

 Will someone please decide once and for all what value(void) will return?
 I've got three different results, all on the same machine.

For the rest of the list; anyone who can't see the JPEGs, the question
should have been what is the value of EMPTY?. The problem in the
screenshots has nothing to do with value(VOID), which AFAIK always returns
VOID. Also, there are only two different results shown. These are as
follows:

-- Test 1:
put value(  )
-- Void

-- Test 2:
put value(  )
-- 0

Smells like BUG to me.

I tried a test movie that runs this line of code continuously. Before
saving, it always returned VOID. After saving, it always returned 0. Anyone
encountered anything similar, or got different results?

FWIW, I don't try to rely to much on anything that is returned by value(),
but it would still be nice to have a conclusive idea of what it returns for
empty strings and pure whitespace strings, under what circumstances.

- Robert
[To remove yourself from this list, or to change to digest mode, go to 
http://www.penworks.com/lingo-l.cgi  To post messages to the list, email [EMAIL 
PROTECTED]  (Problems, email [EMAIL PROTECTED]). Lingo-L is for learning and helping 
with programming Lingo.  Thanks!]


Re: lingo-l The value of void?

2003-04-01 Thread Robert Tweed
- Original Message -
From: Colin Holgate [EMAIL PROTECTED]

 Except that you can't see that the first one is option-space. The
 message was apparently written a few days ago, but perhaps this is a
 developing April Fools joke.

??? My post was written yesterday in response to Pranav  Tab's posts (also
dated April 1). Neither myself nor Pranav are using Macs, so we don't have
option keys, and even if we did, you'd be able to see *something* not just
an empty string (I assume option+space produces an extended ASCII character
that looks like a space) Note that there is *no* space in the string, it is
an empty double-quotes .

It's definitely a real bug, but it seems to be intermittent. I just tried to
reproduce it again and this time I just get 0's, no VOID. It's weird. I have
to say, it's not exactly a critical bug, but it's definitely not an April
fools joke. It's now April the 2nd and 17 minutes, so if it were a joke I'd
have to tell you - that's the law.

I did manage to reproduce the problem here earlier though, so if Pranav is
making it up, he's doing a really thorough job...

- Robert

[To remove yourself from this list, or to change to digest mode, go to 
http://www.penworks.com/lingo-l.cgi  To post messages to the list, email [EMAIL 
PROTECTED]  (Problems, email [EMAIL PROTECTED]). Lingo-L is for learning and helping 
with programming Lingo.  Thanks!]


Re: lingo-l The value of void?

2003-04-01 Thread Robert Tweed
- Original Message -
From: Daniel Plaenitz [EMAIL PROTECTED]

 Even subtle details may matter here. Therefore, the above notation has to
 be corrected. Pranav's example
 (http://www.geocities.com/pranav_negandhi/freaky_chakra_2.jpg) reads:

 -- Welcome to Director --
 put value()
 -- Void

Well, I don't think that's important. If you look at the way I reproduced
Pranav's original results, I typed my own code into an exitFrame handler and
ran it. It continually returned VOID. Then I saved it, closed it and opened
it again, with *no changes* either to the movie, my version of Director, or
my system - that time it gave 0's. I have not since been able to get it to
return VOID, but the *exact same code* gave different results at different
times with the exact same configuration.

A bug is one thing, but an intermittent bug is somewhat more worrying - it
suggests the bug is not related to the value function so much as the way the
reference to the static string value  is handled, which could have wider
implications.

Most likely what we are seeing is a problem in the reference table where two
identical but separate strings are accidentally given the same reference, or
two strings with the same reference are incorrectly believed to be two
identical but separate strings. That could potentially lead to inexplicable
crashes that cannot be reproduced easily, as well as bugs like the one we
are seeing. I can't think of anything else that could cause it, other than
code with something really stupid in it, like:

if random(100)2 then return silly result

I don't think that's likely though.

One thing that may be important is whether or not your code is the first
thing to ever refer to the static string . That can be the difference
between a reference to an existing string, or the creation of a new one.
Because the value is static, there is nothing to say that Director is
creating a new string each time, it may simply be recycling references,
which is where the sort of bug I suspect may be causing this could creep in.
I suspect that saving the movies sorted out these static references, which
produced the differing results that I saw.

I'm going to try reproducing the result again later after a cold boot to see
if that makes a difference. There may be things hanging around in memory
that make a difference.

- Robert

[To remove yourself from this list, or to change to digest mode, go to 
http://www.penworks.com/lingo-l.cgi  To post messages to the list, email [EMAIL 
PROTECTED]  (Problems, email [EMAIL PROTECTED]). Lingo-L is for learning and helping 
with programming Lingo.  Thanks!]


Re: lingo-l The value of void?

2003-04-01 Thread Robert Tweed
- Original Message -
From: Colin Holgate [EMAIL PROTECTED]

 I guess I imagined it then. The JPEG looks like there's something
 between the quotes, more of a   than a . I can't exactly match
 the font or size, but screen shooting it and comparing what I can
 type still makes it seem like there's a gap, but not as wide as a
 regular space.

Try setting the font to Courier New which is the font for the message
window on the PC. I don't know what it is on the Mac, but the reason for the
extra space is that Courier is fixed-width, and a  is somewhat thinner than
an M. It didn't even look odd to me, so I can only assume the font is
totally different on your system.

Incidentally, one of the reasons we all generally use fixed-width fonts for
code is that you can easily tell that there is no space. Simply look at the
characters immediately above the quotes and you will see that there are
exactly two in the same horizontal space. Since all the characters are
vertically aligned in a grid-like fashion, there cannot be an extra
character between the quotes, or the quotes would span the width of 3
characters.

- Robert

[To remove yourself from this list, or to change to digest mode, go to 
http://www.penworks.com/lingo-l.cgi  To post messages to the list, email [EMAIL 
PROTECTED]  (Problems, email [EMAIL PROTECTED]). Lingo-L is for learning and helping 
with programming Lingo.  Thanks!]


Re: lingo-l The value of void?

2003-04-01 Thread Robert Tweed
- Original Message -
From: Kerry Thompson [EMAIL PROTECTED]

 In some cases, someCondition could be Void. On the Mac, that boolean
 evaluated to FALSE. On Windows, it evaluated to TRUE.

Are you sure it was always evaluating to VOID? Perhaps the problem was that
it was evaluating to something else because of some function or whatever
that gives a different result on each platform. Generally, using the =
operator:

0 = 0.0 = VOID

All of theese are different types, but each has a value that is considered
equal to zero. That said, it's always a good idea to make sure your
expressions actually evaluate to booleans, rather than using any shorthand,
which I normally do like so:

-- old
if( someCondition ) then ...
-- new
if( someCondition  false ) then ...

This way, VOID, 0 and false will all evaluate as false, and everything else
will evaluate to true, which is the expected behaviour if you are used to
C/JavaScript, etc. Since Lingo isn't too clever about handling non-booleans
in expressions, you will get a script error if the type is anything other
than a float, integer, or VOID, even though logically any such thing should
simply evaluate as true. The only problem with this is that most people
would expect  to evaluate as false, but it doesn't.

What is also a shame is that Lingo doesn't have an equivalent to the ===
operator for exactly equal and  !== for not-exactly-equal. These are found
in PHP and a few other loosely-typed scripting languages and allow you to do
type-safe comparsions. Mind you, you can get the same effect in lingo with a
couple of simple functions:

on eq( a, b )
  if( ilk( a, ilk( b ) ) ) then
return a = b
  else
return false
  end if
end

on ne( a, b )
  if( ilk( a, ilk( b ) ) ) then
return a  b
  else
return true
  end if
end

This way, eq( 0, 0 ) will return 1, but eq( 1, 1.0 ) will return 0, eq( 0,
VOID ) will return 0, etc.

- Robert

[To remove yourself from this list, or to change to digest mode, go to 
http://www.penworks.com/lingo-l.cgi  To post messages to the list, email [EMAIL 
PROTECTED]  (Problems, email [EMAIL PROTECTED]). Lingo-L is for learning and helping 
with programming Lingo.  Thanks!]


Re: lingo-l The value of void?

2003-04-01 Thread Robert Tweed
- Original Message -
From: Kerry Thompson [EMAIL PROTECTED]

 I think it has more to do with trying to use a void for anything
 useful. There have been long, sometimes acrimonious, threads about this.

You miss the point here. If the value returned is sometimes VOID and
sometimes 0, then if you do:

if( voidP( result ) ) then
  -- do something
else if( result = 0 ) then
  -- do something else
end if

Then you will get different results depending on the apparently random
output from this function with a single known input. That's not good from an
engineering POV.

- Robert

[To remove yourself from this list, or to change to digest mode, go to 
http://www.penworks.com/lingo-l.cgi  To post messages to the list, email [EMAIL 
PROTECTED]  (Problems, email [EMAIL PROTECTED]). Lingo-L is for learning and helping 
with programming Lingo.  Thanks!]


Re: lingo-l The value of void?

2003-04-01 Thread Robert Tweed
- Original Message -
From: Daniel Plaenitz [EMAIL PROTECTED]

 the *exact same code* is only what you see. I have had at least one case
 where directors symbol table was influenced by snippets of code that had
 been *deleted* but *still* were part of the .dir file. Invisible from
 within director. Visible as a string when examining the .dir with a hex
 editor. Valid in defining if  symbol(Paul)  would return  #paul  or
#Paul.

Yes, that's a known issue. Director always saves the symbol table and does
not delete obsolete entries.

The point in this case is that it was not changed: only saved, closed and
reopened. I fully expect that there may have been changes to the internal
static references (no symbols involved though) due to saving, but there have
been no instances of stuff being added and then deleted. I simply created
the test movie from scratch, although I have not since been able to
reproduce the results, even after cold booting a couple of times.

What I suspect is going on (and this is all conjecture based on the way
other languages such as C++ work) is that static strings are normally stored
in a resource area that is similar in many respects to the symbols table. So
when you see  in code, it might as well be a symbol called #, because it
refers to a single chunk of memory set aside for each occurance of that
static string. There is generally only one copy of each identical string to
save space in the .exe file.

So, you might have two bits of code with the static string Hello, but
unless you actually modify one of them, they will both point to the same
physical memory location. What may be happening is that these references are
getting mixed up and the value function is internally comparing the wrong
string references.

FWIW, the only thing I have in my movie is an unnamed frame-loop script
containing:

on exitFrame me
  a = value()
  put a
  go to the frame
end

Rather than post the movie, it might be better if people try creating their
own from scratch, as my saved movie is consistently outputting 0's now.

- Robert

[To remove yourself from this list, or to change to digest mode, go to 
http://www.penworks.com/lingo-l.cgi  To post messages to the list, email [EMAIL 
PROTECTED]  (Problems, email [EMAIL PROTECTED]). Lingo-L is for learning and helping 
with programming Lingo.  Thanks!]


Re: lingo-l Image size

2003-03-27 Thread Robert Tweed
- Original Message -
From: Bertil Flink [EMAIL PROTECTED]

 Or use Save for Web and choose png24 + transparancy (= 32bit).

 Seems to work OK so far.
 I haven't compared PS  FW png:s side-by-side yet

We are told that Fireworks is better, because of the Photoshop precalulated
alpha issue (there's a technote somewhere, but I can't find it). This
difference was definitely noticeable in Photshop 5. The technote states that
PS6 still uses precalculated alpha, but I haven't been able to tell (by
looking) that there is anything wrong with PNGs produced using save for web
in PS6.

- Robert

[To remove yourself from this list, or to change to digest mode, go to 
http://www.penworks.com/lingo-l.cgi  To post messages to the list, email [EMAIL 
PROTECTED]  (Problems, email [EMAIL PROTECTED]). Lingo-L is for learning and helping 
with programming Lingo.  Thanks!]


Re: lingo-l Text fields can wrap on a space?

2003-03-26 Thread Robert Tweed
- Original Message -
From: Adam [EMAIL PROTECTED]

 Also, does anyone know the best way to place the cursor in a field using
 lingo? The only way I have found so far is to set the 'selection' property
 of the field to an array of two equal numbers, such as [2,2].

That's about right, except that it only works with text members. For fields,
there are the globals the selStart and the selEnd, which do much the same
thing. What works with a field does not work with a text member and
vice-versa.

- Robert

[To remove yourself from this list, or to change to digest mode, go to 
http://www.penworks.com/lingo-l.cgi  To post messages to the list, email [EMAIL 
PROTECTED]  (Problems, email [EMAIL PROTECTED]). Lingo-L is for learning and helping 
with programming Lingo.  Thanks!]


Re: lingo-l Embedded fonts

2003-03-24 Thread Robert Tweed
- Original Message -
From: Phil Gross [EMAIL PROTECTED]

   I think you need to be careful doing this. IIRC, if you open the font
 cast member again, Director tosses the name you previously gave it and
 sets it back to the original font name followed by the *. Leaving your
 text using a non-existant font (missing). The safest thing to do is
 accept the default name (the one with the *).

I normally give the embedded fonts completely different names, such as
_plain, _strong, _title, etc., which correspond to the pupose rather than
the specific typeface. I always start my names with an underscore rather
than an asterisk, but that's just force-of-habit as I use that for a lot of
other things and prefer the way it looks.

There are two main advantages to this approach. Firstly, if the job needs to
be rebranded at any time, it is a simple question of re-embedding different
fonts with the same names to fit the new design (usually). Secondly, it's
easier to quickly spot which text is set to the embedded version and which
is not, as the names are completely different.

I've been doing it this way for a while and never had a major problem - but
you are correct about how Director changes the name if you re-open the font.
This can be really annoying (especially the first time), but it's just one
of those things you need to watch out for and remember to change the name
back if you make any changes.

If Director does lose an embedded font because of this, you need to rename
it correctly, then close and reopen the project. An annoyance yes, but not a
life-threatening bug. Still, it makes me prefer not to mess with any font
after it's been embedded unless there's a very good reason to do so. It's
very easy to forget.

- Robert

[To remove yourself from this list, or to change to digest mode, go to 
http://www.penworks.com/lingo-l.cgi  To post messages to the list, email [EMAIL 
PROTECTED]  (Problems, email [EMAIL PROTECTED]). Lingo-L is for learning and helping 
with programming Lingo.  Thanks!]


lingo-l X-Post: Req: Performance testing

2003-03-20 Thread Robert Tweed
I wrote a little blur filter a while ago and decided to use it in my current
project. Unfortunately, this is a total rush job so I have virtually no time
for testing, and I was hoping I could get some feedback about the
performance of my filter on different platforms.

BTW, I will be adding the filter to openLingo soon, along with (hopefully) a
generic, high-speed gaussian blur filter (any size) which I have yet to
code, but I have already spend a couple of days working out the theory for
it. There is no source for this ATM, but it is definitely coming as soon as
I've tidied up the code a bit.

The demo:
http://www.killingmoon.com/temp/

If people could email me (might as well do it off-list to save spamming
everyone else) with the spec of their system (CPU, memory, video chipset,
VRAM, OS) and let me know which of the 3 filters run OK (or not) on their
system, that would really help me work out what the approximate minimum
requirements for each transition are.

TIA,
- Robert

PS: The transitions are listed fastest first. The quickbur is not 100%
accurate, but uses 8 copypixels operations. Blur is an accurate blur
filter, requiring 12 copypixels.

[To remove yourself from this list, or to change to digest mode, go to 
http://www.penworks.com/lingo-l.cgi  To post messages to the list, email [EMAIL 
PROTECTED]  (Problems, email [EMAIL PROTECTED]). Lingo-L is for learning and helping 
with programming Lingo.  Thanks!]


Re: lingo-l X-Post: Req: Performance testing

2003-03-20 Thread Robert Tweed
- Original Message -
From: Colin Holgate [EMAIL PROTECTED]

 It crashed Netscape the first time I tried it, but now it works ok.
 It's slightly slow, but quite tolerable. 450 MHz G4, Mac OS 9.1.

Hmm, might be a preloading problem under Netscape. I had a problem initially
where the images weren't being loaded before I used them, which was causing
a crash. I fixed that by using a dummy frame, with the members on the stage,
and forcing a preload before doing any of the imaging Lingo. I'm not too
worried about fixing that at this stage as the same problem shouldn't occur
in a projector.

From the results I've been sent so far, it looks like I can get away with
the quickBlur if I say the minimum spec is P3/500. I think we can live with
that. This CD will be PC only, but it's useful to know how the Mac compares
for future reference.

- Robert

[To remove yourself from this list, or to change to digest mode, go to 
http://www.penworks.com/lingo-l.cgi  To post messages to the list, email [EMAIL 
PROTECTED]  (Problems, email [EMAIL PROTECTED]). Lingo-L is for learning and helping 
with programming Lingo.  Thanks!]


Re: lingo-l X-Post: Req: Performance testing

2003-03-20 Thread Robert Tweed
- Original Message -
From: Robert Tweed [EMAIL PROTECTED]

 From the results I've been sent so far, it looks like I can get away with
 the quickBlur if I say the minimum spec is P3/500.

Actually, I've just realised how easy it will be to do a speed test and
fallback routine, so slow machines get the fade transitions, and you only
get the blurs if your system is fast enough to handle it. Generally I'll be
using quickblur, as the fault is only noticeable when there are large
areas of solid colour (the quickblur actually has a slight bias in one
direction, but you can't see it on a photo). There is an outtro on a solid
white background where I was going to use the slow blur, but I can make the
image smaller to compensate.

- Robert

[To remove yourself from this list, or to change to digest mode, go to 
http://www.penworks.com/lingo-l.cgi  To post messages to the list, email [EMAIL 
PROTECTED]  (Problems, email [EMAIL PROTECTED]). Lingo-L is for learning and helping 
with programming Lingo.  Thanks!]


Re: lingo-l Carriage return using numeric keypad ENTER key

2003-03-19 Thread Robert Tweed
- Original Message -
From: Howdy-Tzi [EMAIL PROTECTED]

  put RETURN after sprite(the currentSpritenum).member.text
...
 That returns an error. Dot syntax and put after do not get along.

Actually, it's not that, it's yet another odd quirk. Full verbose syntax
doesn't work either, you need to drop the .text part. This works perfectly:

  put RETURN after sprite( me.spriteNum ).member

That is definitely the correct syntax for a field, but it also happens to
work with text members, despite the fact that it shouldn't work without the
.text.

BTW, put...after is [very] significantly faster than using the concatenation
operator, so should be used instead whenever possible.

- Robert

[To remove yourself from this list, or to change to digest mode, go to 
http://www.penworks.com/lingo-l.cgi  To post messages to the list, email [EMAIL 
PROTECTED]  (Problems, email [EMAIL PROTECTED]). Lingo-L is for learning and helping 
with programming Lingo.  Thanks!]


Re: lingo-l on hyperlinkClicked

2003-03-19 Thread Robert Tweed
- Original Message -
From: Howdy-Tzi [EMAIL PROTECTED]

 Actually it's a quirk, so no, it's won't be documented.

That's because Director would cost at least twice as much, and there would
be far less trees left in the rainforests if they had to use enough paper to
document all the quirks ;-)

- Robert

[To remove yourself from this list, or to change to digest mode, go to 
http://www.penworks.com/lingo-l.cgi  To post messages to the list, email [EMAIL 
PROTECTED]  (Problems, email [EMAIL PROTECTED]). Lingo-L is for learning and helping 
with programming Lingo.  Thanks!]


Re: lingo-l Text/Integers?

2003-03-19 Thread Robert Tweed
- Original Message -
From: Alex da Franca [EMAIL PROTECTED]

 I don't know exactly how to test this with lingo only

You could test for this easily by simply timing how long it takes to call a
function with strings of varying lengths (say, 1 char, 100 chars and 1
chars) one function returns the string untouched, while another does
something with it's local copy.

You should see a dramatic difference in the timings when the string is
physically copied compared with the reference passing. You should not see
any difference in times for different lengths of string when passed by
reference, but when passed by value, the longer strings will take more time
to copy.

FWIW, Delphi has used the same method you describe to pass strings since
version 2, so it's fairly likely that they could have done the same thing
with Lingo.

- Robert

[To remove yourself from this list, or to change to digest mode, go to 
http://www.penworks.com/lingo-l.cgi  To post messages to the list, email [EMAIL 
PROTECTED]  (Problems, email [EMAIL PROTECTED]). Lingo-L is for learning and helping 
with programming Lingo.  Thanks!]


Re: lingo-l symbol(s01.mp3) vs. symbol(01.mp3)

2003-02-26 Thread Robert Tweed
- Original Message -
From: Charlie Fiskeaux II [EMAIL PROTECTED]


 yes, it is automatically converted to a symbol.

No it isn't. It remains exactly as whatever string you use, including any
character that are illegal in symbols. I use it all the time with
postNetText to emulate HTML forms.

- Robert

[To remove yourself from this list, or to change to digest mode, go to 
http://www.penworks.com/lingo-l.cgi  To post messages to the list, email [EMAIL 
PROTECTED]  (Problems, email [EMAIL PROTECTED]). Lingo-L is for learning and helping 
with programming Lingo.  Thanks!]


Re: lingo-l Methods for converting longInt from binary files?

2003-02-17 Thread Robert Tweed
- Original Message -
From: Andreas Gaunitz [EMAIL PROTECTED]

 I'm not sure how the floats are represented though.

Do a search on Google for IEEE 754. I'd suggest a link, but there doesn't
seem to be a single one that covers the standard completely. You can't just
look it up on the IEEE website either, annoyingly, you have to pay them for
a printed copy of the standard (I really hate that).

However, as I mentioned before, you'll have a hard time getting direct
binary access to floats in Lingo without an Xtra.

- Robert

[To remove yourself from this list, or to change to digest mode, go to 
http://www.penworks.com/lingo-l.cgi  To post messages to the list, email 
[EMAIL PROTECTED]  (Problems, email [EMAIL PROTECTED]). Lingo-L is for 
learning and helping with programming Lingo.  Thanks!]



Re: lingo-l barcode reader and other devices

2003-02-06 Thread Robert Tweed
- Original Message -
From: Rodrigo Peres [EMAIL PROTECTED]

 Does anyone knows if it's possible interact director with devices like
 barcode reader and credit card machines? How it can be done? there's
anybody
 else around with crazy ideas like this? :-)

Barcode readers (at least, like the one I used to have) are really easy -
they simply emulate the keyboard and type the barcode value (preceeded by
a special keycode that tells you it's a barcode) into the currently selected
field or whatever. In the case of serial devices, you'll want a serial IO
Xtra such as serialXtra to communicate with the device.

- Robert

[To remove yourself from this list, or to change to digest mode, go to 
http://www.penworks.com/lingo-l.cgi  To post messages to the list, email 
[EMAIL PROTECTED]  (Problems, email [EMAIL PROTECTED]). Lingo-L is for 
learning and helping with programming Lingo.  Thanks!]



Re: lingo-l barcode reader and other devices

2003-02-06 Thread Robert Tweed
It's exactly the same as the one I mentioned - it just emulates a keyboard
so the application can't tell the difference between the barcode reader
typing something, or the user doing it on the keyboard - except that it's
usually set up to send some special characters before the barcode so it can
be routed to the correct field automatically.

For example, at a former place-of-work where barcodes were used, we would
write stupid messages, encode them as barcodes, and print them out. Then,
when someone else runs a barcode reader over it, the message will appear in
notepad (or the stock control system, etc.) No special software is needed.

- Robert

- Original Message -
From: Mike Warner [EMAIL PROTECTED]
To: [EMAIL PROTECTED]
Sent: Thursday, February 06, 2003 6:05 PM
Subject: Re: lingo-l barcode reader and other devices


 Wouldn't you still need an xtra to listen to the USB port?  Does the
 DirectCommunication xtra do this?

 Mike

  Message: 4
  Date: Thu, 6 Feb 2003 11:08:19 -0500
  To: [EMAIL PROTECTED]
  From: Colin Holgate [EMAIL PROTECTED]
  Subject: Re: lingo-l barcode reader and other devices
  Reply-To: [EMAIL PROTECTED]
 
  Does anyone knows if it's possible interact director with devices like
  barcode reader and credit card machines? How it can be done? there's
  anybody
  else around with crazy ideas like this? :-)
 
 
  Mostly ignore the other two posts. You can get USB barcode and credit
  card readers, they plug into a USB port (on any platform that
  supports USB) and work right away, without any Xtras. The numbers
  coming from a barcode exactly match what you can read on the label.
  You can configure the barcode reader to put characters before or
  after that, so for example you could append a return character, and
 
 === message truncated ===


 __
 Do you Yahoo!?
 Yahoo! Mail Plus - Powerful. Affordable. Sign up now.
 http://mailplus.yahoo.com
 [To remove yourself from this list, or to change to digest mode, go to
http://www.penworks.com/lingo-l.cgi  To post messages to the list, email
[EMAIL PROTECTED]  (Problems, email [EMAIL PROTECTED]). Lingo-L is
for learning and helping with programming Lingo.  Thanks!]

[To remove yourself from this list, or to change to digest mode, go to 
http://www.penworks.com/lingo-l.cgi  To post messages to the list, email 
[EMAIL PROTECTED]  (Problems, email [EMAIL PROTECTED]). Lingo-L is for 
learning and helping with programming Lingo.  Thanks!]



Re: lingo-l OT: emoticon madness

2003-02-05 Thread Robert Tweed
- Original Message - 
From: Kerry Thompson [EMAIL PROTECTED]


 Localization note: the Japanese have embraced e-mail emoticons with a 
 vengeance. Check this out:
 
 http://club.pep.ne.jp/~hiroette/en/facemarks/body.html#character

They aren't the only ones:

http://www.chatropolis.com/emoticons.html

:-F

- Robert
[To remove yourself from this list, or to change to digest mode, go to 
http://www.penworks.com/lingo-l.cgi  To post messages to the list, email 
[EMAIL PROTECTED]  (Problems, email [EMAIL PROTECTED]). Lingo-L is for 
learning and helping with programming Lingo.  Thanks!]



Re: lingo-l Basic ?

2003-01-13 Thread Robert Tweed
- Original Message -
From: Meiky - [EMAIL PROTECTED]

 if my script looping forever, if there any shortcut to stop it?

If you mean in the code, that depends on the loop. If you mean to stop the
movie when the stop button doesn't work - press ESC. Won't work if the
exitLock is set to true, so don't set this during authoring unless you have
to.

- Robert

[To remove yourself from this list, or to change to digest mode, go to 
http://www.penworks.com/lingo-l.cgi  To post messages to the list, email 
[EMAIL PROTECTED]  (Problems, email [EMAIL PROTECTED]). Lingo-L is for 
learning and helping with programming Lingo.  Thanks!]



Re: lingo-l The long date

2003-01-10 Thread Robert Tweed
- Original Message - 
From: Mendelsohn, Michael [EMAIL PROTECTED]
 
 But FWIW, Howdy-Tzi...what does IIRC stand for?  AFAIK, it's internet
 internet relay chat, right?

IRC - Internet Relay Chat
IIRC - If I Recall Correctly

FWIW: http://www.acronymfinder.com/

- Robert

[To remove yourself from this list, or to change to digest mode, go to 
http://www.penworks.com/lingo-l.cgi  To post messages to the list, email 
[EMAIL PROTECTED]  (Problems, email [EMAIL PROTECTED]). Lingo-L is for 
learning and helping with programming Lingo.  Thanks!]



Re: lingo-l The long date

2003-01-10 Thread Robert Tweed
- Original Message - 
From: Buzz Kettles [EMAIL PROTECTED]

   why aren't these things 
   documented?
 
  Well, actually that call is a good example of undocumented Lingo.
  [snip]

 my understanding is that this is documented

Well, it's in the help - that's about as documented as it gets.

- Robert

[To remove yourself from this list, or to change to digest mode, go to 
http://www.penworks.com/lingo-l.cgi  To post messages to the list, email 
[EMAIL PROTECTED]  (Problems, email [EMAIL PROTECTED]). Lingo-L is for 
learning and helping with programming Lingo.  Thanks!]



Re: lingo-l Imaging vs. Sprites

2003-01-07 Thread Robert Tweed
- Original Message -
From: [EMAIL PROTECTED]

 In our present version, I used imaging lingo to draw the cells,
 but found that the whole thing comes to a grinding halt after a few
 minutes.

The issue probably isn't imaging Lingo so much, as lack of proper
optimisation. It's hard to say what you might be doing that is causing such
poor performance (you're not writing to the stage.image for each sprite, are
you?) but imaging Lingo should be capable of at least equalling the
performance of individual sprites, and is often faster.

As for your second issue, of detecting click positions, this should actually
be an area where you can improve on performance, compared with sprites.
Since many of the sprites will be arranged in a uniform grid, you can use a
simple caclulation to determine which one the mouse is over. This saves
doing a bounds check on every sprite, which for a large number of sprites is
quite time consuming (assuming no other optimisations are used, although
Director probably does optimise this quite a bit anyway).

It's hard to say much more about this without knowing more about what your
code is doing.

BTW, you might be better off asking about this type of thing on DirGames-L.

- Robert

[To remove yourself from this list, or to change to digest mode, go to 
http://www.penworks.com/lingo-l.cgi  To post messages to the list, email 
[EMAIL PROTECTED]  (Problems, email [EMAIL PROTECTED]). Lingo-L is for 
learning and helping with programming Lingo.  Thanks!]



Re: lingo-l Imaging vs. Sprites

2003-01-07 Thread Robert Tweed
- Original Message -
From: [EMAIL PROTECTED]

 Trapping interactions such as rollovers will be easier in sprites with the
 mouseEnter and mouseLeave handlers. I'll need to do a continuous checking
 for that with imaging lingo.

Just remember that easier isn't necessarily faster. If you aren't doing the
checking, then Director is having to do the checking. OK, Director's
internally compiled code is going to be a bit faster than Lingo, but as I
pointed out, you can take shortcuts that Director might not know about.

 I'm a little less keen on using sprites since
 a cell can contain any number of objects. It's much easier to paste them
 all into a single image than having a sprite for each object.

Again, this is a good reason to use IL. You may even be able to introduce
more optimisations around this, particularly if the content of some cells
doesn't change much.

 I was also considering a hybrid solution, using imaging and sprites. Each
 cell object has its own sprite and image object. I can attach behaviors to
 the sprite and let a global appearance manager retrieve the image of each
 cell object to paste onto a common bitmap member or the stage. The canvas
 bitmap can be placed in the topmost channel without any behaviors
attached.
 So I don't waste cycles checking for interactivity, while getting fast
 drawing routines.

I expect that approach will simply give you the worst of both worlds, plus a
lot of extra headaches. I'd do it one way or the other, and from your
description, IL sounds like the better choice. Unfortunately, Director just
isn't really all that fast, but you can push it to get a reasonable
performance out of it. Given the complexity of what you are doing, I expect
using sprites will be just as slow, but you will lose a lot of the potential
to add more optimisations as you go along.

- Robert

[To remove yourself from this list, or to change to digest mode, go to 
http://www.penworks.com/lingo-l.cgi  To post messages to the list, email 
[EMAIL PROTECTED]  (Problems, email [EMAIL PROTECTED]). Lingo-L is for 
learning and helping with programming Lingo.  Thanks!]



Re: lingo-l 3d forum?

2003-01-06 Thread Robert Tweed
- Original Message - 
From: Meiky - [EMAIL PROTECTED]
 
 anyone knows forum or mailinglist address for 3d Director 8.5?

Newsgroup:
macromedia.director.3d

Dir3D-L:
http://nuttybar.drama.uga.edu/mailman/listinfo/dir3d-l

Also, DirGames-L if games-related.

- Robert

[To remove yourself from this list, or to change to digest mode, go to 
http://www.penworks.com/lingo-l.cgi  To post messages to the list, email 
[EMAIL PROTECTED]  (Problems, email [EMAIL PROTECTED]). Lingo-L is for 
learning and helping with programming Lingo.  Thanks!]



Re: lingo-l kazaa

2003-01-03 Thread Robert Tweed
juan colon wrote:


is it possible to make something like Kazaa, edonkey,
winmx in director. if this is possible anyone know
were i can look into.
 

I doubt it, but you could have a look at the source for Gnucleus 
(www.gnucleus.net) if you're interested in P2P. At one time, I was 
thinking about trying a port myself, to learn more about P2P protocols, 
but I don't think Lingo's networking is low-level enough to be able to 
implement it. Possibly with an Xtra or two though.

- Robert

[To remove yourself from this list, or to change to digest mode, go to http://www.penworks.com/lingo-l.cgi  To post messages to the list, email [EMAIL PROTECTED]  (Problems, email [EMAIL PROTECTED]). Lingo-L is for learning and helping with programming Lingo.  Thanks!]


Re: lingo-l kazaa

2003-01-03 Thread Robert Tweed
- Original Message -
From: [EMAIL PROTECTED]


 Why not coupled with the MUXtra?

Possibly, but if you're implementing a Gnutella client, you need to comply
with the Gnutella protocol. I haven't really had a chance to play with MUX
properly yet, so I have no idea whether it is low-level enough to replicate
the protocol, or if it will only work for a completely new P2P system based
on MUS (probably).

I wouldn't recommend anyone go down that route if they want to make
something that will actually be a practical file-sharing client, since you'd
only be able to share with other people running your application. As a test,
maybe; but you'd have a hard time building up a user-base on a completely
new network nowadays.

- Robert

[To remove yourself from this list, or to change to digest mode, go to 
http://www.penworks.com/lingo-l.cgi  To post messages to the list, email 
[EMAIL PROTECTED]  (Problems, email [EMAIL PROTECTED]). Lingo-L is for 
learning and helping with programming Lingo.  Thanks!]



Re: lingo-l randomize

2003-01-03 Thread Robert Tweed
- Original Message -
From: Roland [EMAIL PROTECTED]

 I do have 4 text labels and 4 small graphics (which do belong together)
that
 I would like to place on the stage at random. Could someone give me a
 pointer on how to approach this?

sp1 = sprite( 1 )
sp2 = sprite( 2 )
sp1.loc = point( random( 100 ), random( 100 ) )
sp2.loc = sp1.loc + point( sp1.rect.width + 5, 0 )

This places sprite(1) somewhere random, and puts sprite(2) 5 pixels to the
right of sprite(1). This does however, assume that both sprites have their
regpoint at (0,0), otherwise sp2 may be misaligned.

- Robert

[To remove yourself from this list, or to change to digest mode, go to 
http://www.penworks.com/lingo-l.cgi  To post messages to the list, email 
[EMAIL PROTECTED]  (Problems, email [EMAIL PROTECTED]). Lingo-L is for 
learning and helping with programming Lingo.  Thanks!]



Re: lingo-l A new Mothership?

2002-12-23 Thread Robert Tweed
- Original Message -
From: Agustín María Rodríguez [EMAIL PROTECTED]

  If Microsoft takes over Director, do you think they will make them take
out the Bill is Evil button-style feature?

 I´ve heard (always rumour of course) that´s exatly the reason why
 they´re taking over MM.

It will be replaced with a new easter egg: All your Lingo are belong to
Bill.

Resistance is futile.

- Robert

[To remove yourself from this list, or to change to digest mode, go to 
http://www.penworks.com/lingo-l.cgi  To post messages to the list, email 
[EMAIL PROTECTED]  (Problems, email [EMAIL PROTECTED]). Lingo-L is for 
learning and helping with programming Lingo.  Thanks!]



Re: lingo-l MX opinion!!

2002-12-19 Thread Robert Tweed
- Original Message -
From: Fraser Campbell [EMAIL PROTECTED]

 I don't think everyone agreed - has it been pulled?

 http://www.macromedia.com/software/director/special/trial/

Yes, it has been pulled. Apparently there were too many bugs in the trial
version that was released. Hopefully they'll get a new version up soon. The
full version does not have the bugs that were in the trial version (I'm sure
it has it's own bugs though ;).

- Robert

[To remove yourself from this list, or to change to digest mode, go to 
http://www.penworks.com/lingo-l.cgi  To post messages to the list, email 
[EMAIL PROTECTED]  (Problems, email [EMAIL PROTECTED]). Lingo-L is for 
learning and helping with programming Lingo.  Thanks!]



Re: lingo-l MX opinion!!

2002-12-19 Thread Robert Tweed
- Original Message -
From: Daniel Plaenitz [EMAIL PROTECTED]

 Yes, it has been pulled. Apparently there were too many bugs in the trial
 version that was released. Hopefully they'll get a new version up soon.
The
 full version does not have the bugs that were in the trial version (I'm
sure
 it has it's own bugs though ;).

 This astonishes me. Did you compare the full version and the trial?
 I would rather have expected that the differences between the trial
version
 and the full mainly relate to testing the time bomb on start-up.

Not personally, I'm relaying information from another group. Seemingly a
number of bugs have been reported in the trial version that are not present
in the full version. That's all I know, except that it's definitely been
taken down, despite being available yesterday (I got my copy).

Presumably what has happened is that the trial has been built from an older
release-candidate beta version instead of the final release version. I'm
just guessing at this, but I can't think of another explanation (unless the
time-bomb code actually interferes with the main code in some way, which
seems unlikely).

- Robert

[To remove yourself from this list, or to change to digest mode, go to 
http://www.penworks.com/lingo-l.cgi  To post messages to the list, email 
[EMAIL PROTECTED]  (Problems, email [EMAIL PROTECTED]). Lingo-L is for 
learning and helping with programming Lingo.  Thanks!]



Re: lingo-l To open a new browser window with gotonetpage

2002-12-10 Thread Robert Tweed
- Original Message -
From: Charlie Fiskeaux II [EMAIL PROTECTED]


 _new isn't valid HTML.  Try _blank or new and see if either of those
 works.

Actually, what happens is if you don't specify an existing target you get a
new window with the name specified. This is why _new has become popularly
believed to be correct: it works, but only the first time it is used. The
same would apply to new if you used that. The problem is that with any
such name, when you target it again, the existing window is overwritten with
the new content. The correct target to create a new window every time is
_blank, nothing else.

See the part about magic target names for the list of special targets,
which were introduced along with frames, in Netscape 2:
http://wp.netscape.com/eng/mozilla/2.0/relnotes/demo/target.html

- Robert

[To remove yourself from this list, or to change to digest mode, go to 
http://www.penworks.com/lingo-l.cgi  To post messages to the list, email 
[EMAIL PROTECTED]  (Problems, email [EMAIL PROTECTED]). Lingo-L is for 
learning and helping with programming Lingo.  Thanks!]



Re: lingo-l Irregular shape of rollover 2

2002-12-10 Thread Robert Tweed
- Original Message -
From: Buzz Kettles [EMAIL PROTECTED]

 At 5:53 PM -0500 12/9/02, you wrote:
 Can't you just set a vector sprite's blend to 0?

 Yes - that works, but I automatically rule out blend = 0 for vectors
 since they don't disappear when they play in 16 bit color.

Dunno if this has been suggested already, since I've mostly been ignoring
this thread, but instead of using invisible members, you could do the
polygonal hotspots entirely in Lingo without using any sprites.
Unfortunately, code like that isn't for beginners, but if you can keep all
the polygons convex then it's still /relatively/ simple. Much of the code
required has been posted before IIRC, so it shouldn't be too hard to find an
example.

I wrote some code for intersection with any polygon (convex or concave, any
number of points) a while ago. Unfortunately, although that code was just
good enough to scrape by at the time, it's very messy/buggy (it was
seriously rushed) and I wouldn't be happy about releasing it. I'm sure
someone else out there already has some better code, even if it only does
triangles, it shouldn't be a big deal to manually break the image-map down
into convenient sections.

- Robert

[To remove yourself from this list, or to change to digest mode, go to 
http://www.penworks.com/lingo-l.cgi  To post messages to the list, email 
[EMAIL PROTECTED]  (Problems, email [EMAIL PROTECTED]). Lingo-L is for 
learning and helping with programming Lingo.  Thanks!]



Re: lingo-l Any mySQL guru's on the list?

2002-12-10 Thread Robert Tweed
- Original Message -
From: Jeremy [EMAIL PROTECTED]

 Finally, heres the issue I am having. Since the spawngroupID field in
 the database I am inserting into is not an auto_increment field

Off the top of my head, I think this should do it:

SELECT MAX( spawngroupID ) FROM whicheverTable

You should probably make it an auto-increment if possible, just for speed.
Still, if not, at least make it a unique indexed field. I have no idea what
sort of performance you should expect for a largish table with such a query,
but it's probably a fair bit slower than an auto-increment field.

- Robert

[To remove yourself from this list, or to change to digest mode, go to 
http://www.penworks.com/lingo-l.cgi  To post messages to the list, email 
[EMAIL PROTECTED]  (Problems, email [EMAIL PROTECTED]). Lingo-L is for 
learning and helping with programming Lingo.  Thanks!]



Re: lingo-l Flash Sprite + puppeting

2002-12-05 Thread Robert Tweed
- Original Message -
From: Brad Hile [EMAIL PROTECTED]

 I may be completely off track here but could you use an initialising
script
 on the flash sprite to force the update or in fact to control the sprites
 member - something like:

I don't get the basic principle of what you are suggesting. Could you
explain a bit more please? The problem with the score is that there is no
way (in code) to *tell* the score what member type is has in a particular
sprite channel. Setting the type property simply sets the number (IIRC,
anyway) it doesn't actually force the stage to change its internal
properties. The only thing that does seem to cause the stage to update is a
playhead move. updateStage doesn't work 100% properly either, in case you're
wondering.

- Robert

[To remove yourself from this list, or to change to digest mode, go to 
http://www.penworks.com/lingo-l.cgi  To post messages to the list, email 
[EMAIL PROTECTED]  (Problems, email [EMAIL PROTECTED]). Lingo-L is for 
learning and helping with programming Lingo.  Thanks!]



Re: lingo-l Flash Sprite + puppeting

2002-12-05 Thread Robert Tweed
- Original Message -
From: Charlie Fiskeaux II [EMAIL PROTECTED]

 Why do you have the Flash sprite puppeted?  I thought that since automatic
 puppeting came about, manual puppeting was no longer necessary.

In the original post, fraser said that he was not putting the sprite in the
stage. That makes it a question about dynamic puppets, which is where there
is no sprite in the score, but you puppet the channel and create a sprite on
the fly. This is (a) undocumented behaviour, and (b) doesn't work unless you
puppet the sprite.

Also, contrary to popular belief, there *is* a difference between explicit
puppeting and auto-puppeting, so it's by no means obsolete, as you suggest.
The difference is that auto-puppeted sprites remain under control of the
score.

To illustrate this, try creating a tween, then set the locH property of the
sprite, without puppeting it. The sprite will continue to be controlled by
the score for all properties except locH. OTOH, if you puppet the sprite
first, the sprite will completely stop moving until you un-puppet it.

- Robert

[To remove yourself from this list, or to change to digest mode, go to 
http://www.penworks.com/lingo-l.cgi  To post messages to the list, email 
[EMAIL PROTECTED]  (Problems, email [EMAIL PROTECTED]). Lingo-L is for 
learning and helping with programming Lingo.  Thanks!]



Re: lingo-l Flash Sprite + puppeting

2002-12-05 Thread Robert Tweed
- Original Message -
From: Brad Hile [EMAIL PROTECTED]

 (The flash sprite is puppeted and the frame is sitting on a go the frame
 loop with no playhead movement.)

A go to frame loop counts as playhead movement. The playhead leaves the
frame, then jumps back to it again. The same updates occur as if the
playhead jumped to the next, or any other frame.

The same should apply to updateStage, but updateStage is not a true
playhead move and it doesn't seem to be quite as effective as the latter,
with some things anyway.

 updatestage

That'll be why it works. As I pointed out, it's not always 100% effective,
but it sometimes helps. Obviously this is one of those cases.

- Robert

[To remove yourself from this list, or to change to digest mode, go to 
http://www.penworks.com/lingo-l.cgi  To post messages to the list, email 
[EMAIL PROTECTED]  (Problems, email [EMAIL PROTECTED]). Lingo-L is for 
learning and helping with programming Lingo.  Thanks!]



Re: lingo-l Flash Sprite + puppeting

2002-12-05 Thread Robert Tweed
- Original Message -
From: Buzz Kettles [EMAIL PROTECTED]

 And as you noted if there was no sprite already there to manipulate,
 one must use old-style puppeting to get the member on stage, creating
 the so-called 'dynamic sprite'.

 Of course, even this can be worked around by using placeholder sprites.

That's partly true. However, placeholder sprites are very different from
dynamic puppets. To clear this up fully, I say there are 3 types of sprite
(excluding imaging Lingo):

1 - Simple sprites, or auto-puppets
2 - Explicit puppets
3 - Dynamic puppets (no sprite in the score)

(1) is controlled by the score, but can also be controlled by Lingo (to some
degree).
(2) is completely controlled by Lingo, except that you cannot change the
member type*.
(3) is completely controlled by Lingo without exception. However, the
technique is undocumented and highly quirky.

* People often don't realise this about sprites. According to the
documentation, you cannot change the member type from whatever is in the
score. This is one of the reasons that dynamic puppets are not supposed to
work, and why you have to wait for a playhead move before accessing
type-specific properties. In practise, if you try to change the member type
of a score-based puppet, it will screw up even more than dynamic puppets do.

- Robert

[To remove yourself from this list, or to change to digest mode, go to 
http://www.penworks.com/lingo-l.cgi  To post messages to the list, email 
[EMAIL PROTECTED]  (Problems, email [EMAIL PROTECTED]). Lingo-L is for 
learning and helping with programming Lingo.  Thanks!]



Re: lingo-l Flash Sprite + puppeting

2002-12-04 Thread Robert Tweed
- Original Message -
From: [EMAIL PROTECTED]

 has anyone else come across an issue by which you cannot set the variables
 of a puppeted Flash sprite?

I don't generally use Flash at all, so I can only guess...

 If I put the sprite directly onto the stage then the setVariables command
 is fine, but if it is puppeted then the setVariables command is not
 recognised. Any work arounds?

The trouble with dynamic puppets (and the big reason they are still
undocumented) is that Director sets different sprite properties depending on
the type of the member. With dynamic puppets, it does not know what type the
member is, so type specific properties tend not to work.

This is quite common, and is probably causing the problem you are having
with Flash. Imagine trying to call setVariables with a bitmap; it wouldn't
work. The problem is that Director does not know it's a Flash sprite, so you
can't use Flash specific commands.

The workaround is simple, but annoying. Wait a frame. When the playhead
moves to the next frame (or jumps back to the current frame) the stage
updates the properties of the sprites. Dynamic puppets then begin to act
normally as if they had been placed on the stage.

This simply means you cannot create the sprite and then call the functions
you want. You need to create the sprite first, set a flag to say
sprite-x-needs-updating, then on prepareFrame (in the /next/ frame), call a
handler that does all the member-type specific updates you require and reset
the flag.

BTW, remember that dynamic puppets /are/ undocumented, so if this workaroud
does not work, you may find that there simply is no workaround. That is
unfortunately just the way it is with undocumented stuff. However, I suspect
that it will work, as it solves every similar problem I have come across so
far with other member types.

- Robert

[To remove yourself from this list, or to change to digest mode, go to 
http://www.penworks.com/lingo-l.cgi  To post messages to the list, email 
[EMAIL PROTECTED]  (Problems, email [EMAIL PROTECTED]). Lingo-L is for 
learning and helping with programming Lingo.  Thanks!]



Re: lingo-l a departure, I'm unsubscribing from the list...

2002-12-03 Thread Robert Tweed
- Original Message -
From: Thomas Higgins [EMAIL PROTECTED]

 I'm here to announce that I am going to be leaving the Director Team for
 an extended vacation and sabbatical

You will be missed, but have a good one. I hope we'll see you back on these
lists after your break.

- Robert

[To remove yourself from this list, or to change to digest mode, go to 
http://www.penworks.com/lingo-l.cgi  To post messages to the list, email 
[EMAIL PROTECTED]  (Problems, email [EMAIL PROTECTED]). Lingo-L is for 
learning and helping with programming Lingo.  Thanks!]



Re: lingo-l a departure, I'm unsubscribing from the list...

2002-12-03 Thread Robert Tweed
- Original Message -
From: [EMAIL PROTECTED]

  Tom rocks. His presence will be missed on many lists, and here on the
  Director team. Now who'll get my chorizo burritos for me in the morning?

 What does the job pay?

What, the job of chorizo burrito runner? I dunno, but it sounds easy.
Where do I apply?

- Robert

[To remove yourself from this list, or to change to digest mode, go to 
http://www.penworks.com/lingo-l.cgi  To post messages to the list, email 
[EMAIL PROTECTED]  (Problems, email [EMAIL PROTECTED]). Lingo-L is for 
learning and helping with programming Lingo.  Thanks!]



Re: lingo-l #bytesTotal

2002-12-03 Thread Robert Tweed
- Original Message -
From: Howdy-Tzi [EMAIL PROTECTED]

  the thing is:
  How can I get the 'BYTESTOTAL' information of a file WITHOUT having to
  download or preload this file?

 I don't believe you can. In order to find out about the file, you've
 got to touch it in some way or another. I could be wrong but I think
 you're stuck with that. :\

HTTP includes no method to query the size of a file. Plus, some files will
return a content-length header, and some won't, so bytesTotal is unreliable
at best. Probably the best workaround is a little PHP script; something like
this:

?
fname = $HTTP_GET_VARS[ 'f' ];
echo filesize( fname );
?

Then do getNetText( getsize.php?f=images/bigimage.jpg ), etc. You could,
of course, extend this simple script to query the size of more than one file
in one go, which would be a good idea if you want to load several files
since the TCP/IP connection overhead will far outweigh the download time for
a tiny script like this.

- Robert

[To remove yourself from this list, or to change to digest mode, go to 
http://www.penworks.com/lingo-l.cgi  To post messages to the list, email 
[EMAIL PROTECTED]  (Problems, email [EMAIL PROTECTED]). Lingo-L is for 
learning and helping with programming Lingo.  Thanks!]



Re: lingo-l sin and cosine

2002-12-01 Thread Robert Tweed
- Original Message -
From: mike m [EMAIL PROTECTED]

 I am trying to make my charactor jump forward, obviously (i think) the sin
 and cosine command would be used, but i have no idea how this works or how
 to write it, i cant really find any really useful sites that explain it in
 such a way either.

I wouldn't use sin or cosine. What I would do is to have the left and right
speed controlled by the left and right keys. Then I'd have a button that
makes the character jump: this only needs to concern itself with the upward
movement. This is not realistic physics, but is traditional in games and
keeps the controls intuitive.

So, to do this jump action, I would start with an initial velocity, say 2
pixels per frame. Then I would apply gravity to this velocity every frame
(do this in the exitFrame or enterFrame handler). This will cause the upward
velocity to decrease each frame, say by 0.5 pixels per frame per frame (no,
that is not a typo) until -terminalVelocity is reached. terminalVelocity
determines how fast the character will fall back to the ground under the
force of gravity. This should be about 120mph, but it's probably better to
go for about 5 pixels/frame or something.

Also, every frame, I would subtract the upward velocity from the character's
locV, so it moves up (or down if it is falling). If it's falling, I would
want to test for collisions with the tops of platforms/objects every frame.
If the character hits one, I'd want to reset the velocity property to zero,
so it stops moving, and set the locV correctly, so the character is standing
on top of the object. To be really smart, perhaps add a little landing
animation and/or bounce effect at that point.

- Robert

[To remove yourself from this list, or to change to digest mode, go to 
http://www.penworks.com/lingo-l.cgi  To post messages to the list, email 
[EMAIL PROTECTED]  (Problems, email [EMAIL PROTECTED]). Lingo-L is for 
learning and helping with programming Lingo.  Thanks!]



Re: lingo-l ANN: Director MX

2002-11-28 Thread Robert Tweed
- Original Message -
From: Fabrice Closier [EMAIL PROTECTED]

 i saw DMX wil export dvd, what does this mean exactly? That a projector
 could be exported as Ready to be burned dvd?

No, it's exactly the same as always: you can create DVD-ROM's with Director;
big deal. I think the big DVD(r) logo on the DMX page is *very* misleading
in this respect, especially since the DVD export Xtra that was available for
Director a couple of years ago has apparently been removed from the Market
for quite some time. AFAIK, no-one has come up with a replacement, let alone
bundled it with DMX.

- Robert

[To remove yourself from this list, or to change to digest mode, go to 
http://www.penworks.com/lingo-l.cgi  To post messages to the list, email 
[EMAIL PROTECTED]  (Problems, email [EMAIL PROTECTED]). Lingo-L is for 
learning and helping with programming Lingo.  Thanks!]



Re: lingo-l ANN: Director MX

2002-11-25 Thread Robert Tweed
- Original Message -
From: Thomas Higgins [EMAIL PROTECTED]

  And what about... gXML = new(XML)?

 Yup. I chose not to explicitly mention all objects by name, the list is
long.

Interesting. I take it that this means you could put a stub swf with no
content in your Director movies as a factory for spawning XML parser objects
that work properly? This might be a good thing...

In fact, do you even need an embedded Flash asset to access the Actionscript
object library, or can you just drop them into your code wherever you want
them, like script Xtras? If so, how many other useful objects are there in
Flash that are currently missing from Director, or not working, that this
effectively fixes? How does the performance compare to native Director
objects, and are all the features generally compatible with Lingo (i.e., are
there any datatype conversion issues, etc.)?

On a related topic, one of the biggest questions I want answered about the
new tighter integration of Flash is whether we can now have as many Flash
sprites on the stage as we want without instantly crippling performance. For
instance, if we wanted to replace all our textboxes with Flash sprites for
Unicode support, would it work well enough to be practical?

- Robert

[To remove yourself from this list, or to change to digest mode, go to 
http://www.penworks.com/lingo-l.cgi  To post messages to the list, email 
[EMAIL PROTECTED]  (Problems, email [EMAIL PROTECTED]). Lingo-L is for 
learning and helping with programming Lingo.  Thanks!]



Re: lingo-l Director databases

2002-11-25 Thread Robert Tweed
- Original Message -
From: Jeremy [EMAIL PROTECTED]

 Anyone know of a cheap/free method of communicating to mySQL databases
 with director, and/or some tutorials? Thanks

If you are talking about remote databases, then a good starting place would
be www.shocknet.org.uk. You can use PHP, which works rather well with MySQL
and is free. No Xtras are required in Director either. Local databases might
be a bit more tricky and would almost certainly require an Xtra; never tried
that though.

- Robert

[To remove yourself from this list, or to change to digest mode, go to 
http://www.penworks.com/lingo-l.cgi  To post messages to the list, email 
[EMAIL PROTECTED]  (Problems, email [EMAIL PROTECTED]). Lingo-L is for 
learning and helping with programming Lingo.  Thanks!]



Re: lingo-l advice on parent script location

2002-11-17 Thread Robert Tweed
- Original Message -
From: Brad Hile [EMAIL PROTECTED]

 Is it better practice to locate parent scripts in linked casts

In short, yes. There is no major drawback to this method as far as I am
aware.

- Robert

[To remove yourself from this list, or to change to digest mode, go to 
http://www.penworks.com/lingo-l.cgi  To post messages to the list, email 
[EMAIL PROTECTED]  (Problems, email [EMAIL PROTECTED]). Lingo-L is for 
learning and helping with programming Lingo.  Thanks!]



Re: lingo-l advice on parent script location

2002-11-17 Thread Robert Tweed
- Original Message -
From: Brad Hile [EMAIL PROTECTED]

 Robert Tweed wrote:
   Is it better practice to locate parent scripts in linked casts
 
  In short, yes. There is no major drawback to this method as far as I am
  aware.

 Excellent, that was the answer I was hoping to get!
 thanks Robert.

BTW, one minor thing to watch, if you are using external casts with
Shockwave. Casts containing scripts should be set to load before frame one,
instead of the default of load when needed. Otherwise, the scripts don't
work.

- Robert

[To remove yourself from this list, or to change to digest mode, go to 
http://www.penworks.com/lingo-l.cgi  To post messages to the list, email 
[EMAIL PROTECTED]  (Problems, email [EMAIL PROTECTED]). Lingo-L is for 
learning and helping with programming Lingo.  Thanks!]



Re: lingo-l Definite Bug in IML32.dll/DirAPI.dll v8.5.1.104

2002-11-12 Thread Robert Tweed
- Original Message -
From: roy crisman [EMAIL PROTECTED]

 I'm pretty sure Tom also mentioned using the wish list as a bug reporting
 listfinding that address took enough time, you mean i've got to go
much
 around their site looking for a bug-report address, too?

It is the same. There is a form-mail page here:
http://www.macromedia.com/go/wish/

[To remove yourself from this list, or to change to digest mode, go to 
http://www.penworks.com/lingo-l.cgi  To post messages to the list, email 
[EMAIL PROTECTED]  (Problems, email [EMAIL PROTECTED]). Lingo-L is for 
learning and helping with programming Lingo.  Thanks!]



Re: lingo-l Definite Bug in IML32.dll/DirAPI.dll v8.5.1.104

2002-11-11 Thread Robert Tweed
- Original Message -
From: roy crisman [EMAIL PROTECTED]

 Last week I installed the 2 new Networking Xtras, and the 2 new DLL's
 (IML32 and DIRAPI) in my Director 8.5.1 PC Win2000 developing environment.

Yeah, you shouldn't do that. The files were released to fix a bug in
Shockwave that does not, and never has, affected either the authoring
environment or projectors. I don't know why the technote tells you to copy
the files to your Director folder as well as Shockwave, but it's clearly
wrong.

At least, I'm assuming you're referring to this:
http://www.macromedia.com/support/director/ts/documents/sw_xtraupdate_v106.h
tm

Although it doesn't mention an update to any DLLs, just the Xtras. Where did
the updated DLLs come from?

I had to reinstall Director as a result of this (didn't back up the old
files), but I got an error on startup (as did at least one other poster on
m.d.l). Fortunately, the Xtras do fix the Shockwave problem. However, I
don't know why they haven't updated the standard download yet (auto-update
doesn't work reliably as stated in the technote (at least not immediately):
you have to apply the patch manually to every system).

- Robert

[To remove yourself from this list, or to change to digest mode, go to 
http://www.penworks.com/lingo-l.cgi  To post messages to the list, email 
[EMAIL PROTECTED]  (Problems, email [EMAIL PROTECTED]). Lingo-L is for 
learning and helping with programming Lingo.  Thanks!]



lingo-l LingoFish

2002-11-05 Thread Robert Tweed
OK, I hope this gets through to the list properly. For the benefit of anyone
who is only on Lingo-L and has not seen any of the other messages: The bug
in the first release has been fixed. If you have the buggy version, please
go back to the page and download the new version.

Also, if anyone wants it, I've finished a pure PHP version of Blowfish too,
but won't be releasing it until I've commented the code properly, etc. In
the meantime, email me if you want this code to play with Shockwave/server
communication and can't install mcrypt on your server.

- Robert

[To remove yourself from this list, or to change to digest mode, go to 
http://www.penworks.com/lingo-l.cgi  To post messages to the list, email 
[EMAIL PROTECTED]  (Problems, email [EMAIL PROTECTED]). Lingo-L is for 
learning and helping with programming Lingo.  Thanks!]



lingo-l Re: Blowfish in PHP (was: LingoFish 1.1 Available)

2002-11-04 Thread Robert Tweed
- Original Message -
From: Robert Tweed [EMAIL PROTECTED]

 ... I'm planning to do a pure PHP version too, for anyone who
 cannot install mcrypt (which includes some of my own projects).

In case anyone's interested, I've actually completed this over the weekend.
I've done two versions, a full Blowfish object and litefish that uses
precalculated s-boxes so it only works with one key, but is much faster if
you only need one key (useful for Shockwave games, etc., that use a stored
key to communicate with the server). The full Blowfish script would probably
kill your webserver if you put into heavy use because it takes so long to
initialise a key.

While I was writing these, I also spotted a slight security faux-pas in
LingoFish. It's not a major thing, but the object stores the key in a
property after you set it. In theory, this could make life easier for anyone
who might want to steal your key using a degbugger and reading the RAM. Of
course, this is normally going to be irrelevant since the key must exist in
memory in order to set it. Still, there is no good reason to store it as a
property, so I did a Bad Thing :-(

I'll release a new version later that does not do this, but since it's not a
major concern, I'm not going to release yet another version right away. I
just thought I'd point it out, in case anyone wants totally airtight
security for something and didn't notice that in the source. If anyone wants
to completely avoid storing their key in the movie, I'll probably do a
lite version of LingoFish that uses recalculated s-boxes for a single key.
That would be much harder to crack for a stored key, but I won't have time
to write this for a while.

Anyway, my PHP scripts are finished, but I'm not going to put it on the web
until I've commented the code a bit, etc. In the meantime, if anyone wants
to play with this stuff and can't install mcrypt, let me know and I'll send
you the PHP code.

- Robert

[To remove yourself from this list, or to change to digest mode, go to 
http://www.penworks.com/lingo-l.cgi  To post messages to the list, email 
[EMAIL PROTECTED]  (Problems, email [EMAIL PROTECTED]). Lingo-L is for 
learning and helping with programming Lingo.  Thanks!]



lingo-l LingoFish 1.1 Available

2002-11-04 Thread Robert Tweed
If you need to securely communicate with a server, or store small hidden
keys then strong encryption is a handy thing. This is a highly optimised,
pure Lingo implementation of the Blowfish cipher. I hope a few of you will
find it useful:

http://www.killingmoon.com/director/lingofish/

If you use PHP with mcrypt installed, you can also use Blowfish on the
server side, which could be extremely useful for secure Shockwave
communications. I'm planning to do a pure PHP version too, for anyone who
cannot install mcrypt (which includes some of my own projects).

I announced this quietly earlier this week, only on Lingo-L, in case there
were any bugs. And there was, caused by a small Lingo quirk that is written
up on the site. The bug is now fixed and LingoFish is good to use
cross-platform. Thanks to all who helped resolve the problem.

- Robert

[To remove yourself from this list, or to change to digest mode, go to 
http://www.penworks.com/lingo-l.cgi  To post messages to the list, email 
[EMAIL PROTECTED]  (Problems, email [EMAIL PROTECTED]). Lingo-L is for 
learning and helping with programming Lingo.  Thanks!]



Re: lingo-l ANN: LingoFish available at last!

2002-10-30 Thread Robert Tweed
- Original Message - 
From: Josh Race [EMAIL PROTECTED]
 
 9 out of 34 passed...is that a PASS?

Um, no. Did that really happen or is that an A-level joke?

- Robert

[To remove yourself from this list, or to change to digest mode, go to 
http://www.penworks.com/lingo-l.cgi  To post messages to the list, email 
[EMAIL PROTECTED]  (Problems, email [EMAIL PROTECTED]). Lingo-L is for 
learning and helping with programming Lingo.  Thanks!]



Re: lingo-l sending emails with baOpenURL

2002-10-29 Thread Robert Tweed
Alternatively, you can also just type %0d. I'd use URLencode to encode the
entire string, or simply type the hex code of the character with % in front,
which is all URL encoding does. If you just want individual characters, it's
simpler and faster to do it that way.

- Robert

- Original Message -
From: Bertil Flink [EMAIL PROTECTED]


 You can use urlEncode(RETURN), and is exactly Lingo (-:

 Look up URLEncode in Director Help for more options.


 Bertil Flink
 Creative Media
 [EMAIL PROTECTED]

 Tel: +46 8 544 013 73
 Mob: +46 706 92 18 95


 - Original Message -
 From: Michael von Aichberger [EMAIL PROTECTED]
 To: [EMAIL PROTECTED]
 Sent: Tuesday, October 29, 2002 11:02 PM
 Subject: lingo-l sending emails with baOpenURL


  Hi list!
 
  I want to enable the user of a cd-rom to send emails with his own e-mail
  software such as Outlook.
 
  Fot this I could use buddyAPI's baOpenURL command:
 
  ok = baOpenURL(mailto:;  where  ?subject=  subject  body=
body,
  normal)
 
  This works but the body text appears in one single line only. How do I
  encode a line break in the URL-string?
 
  (RETURN, numToChar(10), numToChar(13) didn't work ...)
 
  I know that this is not exactly Lingo, but it I am sure that some of you
  know the answer to this simple question and it would help me a lot!
 
  Thanks for any help!
 
  Michael
 
  [To remove yourself from this list, or to change to digest mode, go to
http://www.penworks.com/lingo-l.cgi  To post messages to the list, email
[EMAIL PROTECTED]  (Problems, email [EMAIL PROTECTED]). Lingo-L is
for learning and helping with programming Lingo.  Thanks!]
 
 [To remove yourself from this list, or to change to digest mode, go to
http://www.penworks.com/lingo-l.cgi  To post messages to the list, email
[EMAIL PROTECTED]  (Problems, email [EMAIL PROTECTED]). Lingo-L is
 for learning and helping with programming Lingo.  Thanks!]


[To remove yourself from this list, or to change to digest mode, go to 
http://www.penworks.com/lingo-l.cgi  To post messages to the list, email 
[EMAIL PROTECTED]  (Problems, email [EMAIL PROTECTED]). Lingo-L is for 
learning and helping with programming Lingo.  Thanks!]



Re: lingo-l more than 1 ancestor

2002-10-28 Thread Robert Tweed
- Original Message -
From: Irv Kalb [EMAIL PROTECTED]


 Only one.  There is just a single ancestor keyword.

 You can really nest ancestor scripts, but an ancestor script can
 set its own ancestor, etc.  But it sounds like you are looking for
 multiple inheritance - and Lingo does not allow that.

The only close solution is do a recursive search for the base class and add
a new ancestor, like this:

on addAncestor me, newAncestor
  obj = me
  repeat while ObjectP( obj.getaProp( #ancestor ) )
obj = obj.ancestor
  end repeat
  obj.setaProp( #ancestor, newAncestor )
end

It's also worth pointing out that the same code should work as a movie
script, just don't get confused by the use of me.

- Robert

[To remove yourself from this list, or to change to digest mode, go to 
http://www.penworks.com/lingo-l.cgi  To post messages to the list, email 
[EMAIL PROTECTED]  (Problems, email [EMAIL PROTECTED]). Lingo-L is for 
learning and helping with programming Lingo.  Thanks!]



Re: lingo-l more than 1 ancestor

2002-10-28 Thread Robert Tweed
- Original Message -
From: Evan Adelman [EMAIL PROTECTED]


 but you can add scripts to sprites on the fly w/  something like:

  y= new (script newScript)
  sprite(me.spriteNum).scriptInstanceList.add(y)

That reminds me of a multiple inheritance hack that someone pointed out
before. You can set the ancestor of a script to a sprite, and then all the
scripts in the scriptInstanceList of that sprite are considered it's
ancestor by Lingo. A bit of a dirty solution if you ask me, but I'm told
that it does work.

- Robert

[To remove yourself from this list, or to change to digest mode, go to 
http://www.penworks.com/lingo-l.cgi  To post messages to the list, email 
[EMAIL PROTECTED]  (Problems, email [EMAIL PROTECTED]). Lingo-L is for 
learning and helping with programming Lingo.  Thanks!]



Re: lingo-l List archives?

2002-10-25 Thread Robert Tweed
- Original Message -
From: Howdy-Tzi [EMAIL PROTECTED]

 You can see it if you set your mail program to show all header
 contents. That stuff is normally kept hidden, but when you do a show
 all you can see all the links.

Hmm, I also assumed you mistakenly said header instead of footer. I
wonder why the link isn't in the standard footer that is appended to every
message instead of hiding it in the headers? How many people (apart from
trolls) put useful information in the message headers? I'd never have
thought to look there if you hadn't mentioned it.

- Robert

[To remove yourself from this list, or to change to digest mode, go to 
http://www.penworks.com/lingo-l.cgi  To post messages to the list, email 
[EMAIL PROTECTED]  (Problems, email [EMAIL PROTECTED]). Lingo-L is for 
learning and helping with programming Lingo.  Thanks!]



Re: lingo-l List archives?

2002-10-25 Thread Robert Tweed
- Original Message -
From: Howdy-Tzi [EMAIL PROTECTED]

  ... instead of hiding it in the headers?

 I think because Tab hasn't got around to updating it yet. ;)

Spot the subtle hint, heh ;-)

  How many people (apart from
  trolls) put useful information in the message headers?

 It's actually becoming a somewhat common practice for listserv engines.

Interesting, I'll need to check all my list messages to see how many of them
have got the same headers. Maybe we someone could write a mail client (in
Lingo? :) that can automatically display the links from the headers when
reading messages from that list (little unsubscribe, archive buttons in the
corner of the window). In fact, if only they could add similar headers to
spam...

- Robert

[To remove yourself from this list, or to change to digest mode, go to 
http://www.penworks.com/lingo-l.cgi  To post messages to the list, email 
[EMAIL PROTECTED]  (Problems, email [EMAIL PROTECTED]). Lingo-L is for 
learning and helping with programming Lingo.  Thanks!]



Re: lingo-l List archives?

2002-10-25 Thread Robert Tweed
- Original Message -
From: Howdy-Tzi [EMAIL PROTECTED]

  In fact, if only they could add similar headers to
  spam...

 Funny you should mention that. There's a company online now (I don't
 recall the name) that allows subscribers to their service (it's free
 for individual use) send email through their system more or less
 securely; the mail sent has *copyrighted* haiku embedded in its headers.

Nice idea in some ways. Unfortunately it has some dodgy implications for
legitimate users, so I'm not so sure I'd be happy about that myself. I mean,
if I email you a piece of code, would they immediately aquire the copyright?

- Robert

[To remove yourself from this list, or to change to digest mode, go to 
http://www.penworks.com/lingo-l.cgi  To post messages to the list, email 
[EMAIL PROTECTED]  (Problems, email [EMAIL PROTECTED]). Lingo-L is for 
learning and helping with programming Lingo.  Thanks!]



Re: lingo-l List archives?

2002-10-25 Thread Robert Tweed
- Original Message -
From: Howdy-Tzi [EMAIL PROTECTED]

 No, they own the copyright only on the header content. The point is not
 to control email body; the point is to present a header that cannot
 legally be forged, thus allowing spam-detection scripts to work more
 effectively.

Couldn't it be argued that if they don't own the copyright on content that
isn't theirs (i.e., anything that they would not normally own the
copyright to) then they don't own the copyright to the email address, forged
or otherwise, regardless of their copyright notice? Does the header include
some specific legal information regarding the from header?

- Robert

[To remove yourself from this list, or to change to digest mode, go to 
http://www.penworks.com/lingo-l.cgi  To post messages to the list, email 
[EMAIL PROTECTED]  (Problems, email [EMAIL PROTECTED]). Lingo-L is for 
learning and helping with programming Lingo.  Thanks!]



Re: lingo-l Getting rid of Internal?

2002-10-23 Thread Robert Tweed
- Original Message -
From: Rob Romanek [EMAIL PROTECTED]

 a) is no problem, just click on the internal cast to make it the active
 window, then use the Property Inspector to change the name.

D'oh! Why did I think that couldn't be done? I'm certain I must have tried
it before sometime...

 Something else that might be useful is if you could reorder the casts

Yes, that actually would be quite useful because of the fact that Lingo
searches through each cast in order, starting with the first (actually, it
starts with the current cast, and restarts at the first if it misses). This
could be used to optimise your movies a bit.

On thinking mose more, why can't Director just save all the window
positions, including casts? That would make more sense. Then there would be
no need to grumble about the bad choice of primary cast.

- Robert

[To remove yourself from this list, or to change to digest mode, go to 
http://www.penworks.com/lingo-l.cgi  To post messages to the list, email 
[EMAIL PROTECTED]  (Problems, email [EMAIL PROTECTED]). Lingo-L is for 
learning and helping with programming Lingo.  Thanks!]



Re: lingo-l Global vs local

2002-10-23 Thread Robert Tweed
- Original Message -
From: Shailendra Vijayvergia [EMAIL PROTECTED]

 I want to pass a value from one sprite to another sprite located
 in another channel. Is there any way to pass this without
 using global variable, because i don't want to keep that variable
 other than those two frames.

Yes, pass the variable in a list:

on sendMessage me
  theValue = 10
  theList = [ theValue ]
  sendAllSprites( #updateValues, theList )
  theValue = theList[1] -- *
end

* Note that only the list *itself* is passed by reference, so while this
allows you to get values back from other handlers, the variable theValue
is not automatically updated.

Your other handler can simply set theList[1] = someValue and it will be
passed to all the other sprites that receive the event, and finally returned
to this handler afterward.

- Robert

[To remove yourself from this list, or to change to digest mode, go to 
http://www.penworks.com/lingo-l.cgi  To post messages to the list, email 
[EMAIL PROTECTED]  (Problems, email [EMAIL PROTECTED]). Lingo-L is for 
learning and helping with programming Lingo.  Thanks!]



Re: lingo-l Distressflag (request)

2002-10-23 Thread Robert Tweed
- Original Message -
From: Tab Julius [EMAIL PROTECTED]

 Even if it's for a good cause, it's technically a license violation and/or
 illegal, so I have to ask that you not use the list for this sort of
 thing.  Anyone who wishes to respond should not reply via the list.

Couldn't the 30 day trial version be used as a temporary stopgap anyway?

- Robert

[To remove yourself from this list, or to change to digest mode, go to 
http://www.penworks.com/lingo-l.cgi  To post messages to the list, email 
[EMAIL PROTECTED]  (Problems, email [EMAIL PROTECTED]). Lingo-L is for 
learning and helping with programming Lingo.  Thanks!]



Re: lingo-l Getting rid of Internal?

2002-10-23 Thread Robert Tweed
- Original Message -
From: Buzz Kettles [EMAIL PROTECTED]

  why didn't you notice it when I mentioned it early yesterday   ;)

'Cos someone (i.e., you) decided to top and bottom post in the same message
;-) Actually, I just noticed because you mentioned it. At the time I assumed
your top post was all you had to say and didn't scroll down to the bottom
part.

 That would make more sense. Then there would be
 no need to grumble about the bad choice of primary cast.

 What would you suggest for the primary cast?

Whatever /you/ select as the primary cast, external casts being a potential
option. As opposed to what Director arbitrarily imposes on you because it
has always been the default. I used the phrase bad choice because Director
shouldn't be making the choice at all. Hard coding is a Bad Thing.

- Robert

[To remove yourself from this list, or to change to digest mode, go to 
http://www.penworks.com/lingo-l.cgi  To post messages to the list, email 
[EMAIL PROTECTED]  (Problems, email [EMAIL PROTECTED]). Lingo-L is for 
learning and helping with programming Lingo.  Thanks!]



Re: Wishlist gloom (Was lingo-l Getting rid of Internal?)

2002-10-23 Thread Robert Tweed
- Original Message -
From: Howdy-Tzi [EMAIL PROTECTED]

 There are fundamental realities about the Director architecture, and
 the internal cast is one of them. I think what Buzz is indicating is
 that it would essentially require a top-down rewrite of the entire
 Director engine -- while breaking ALL backward compatibility to all
 previous file formats -- to accomplish that.

That would suggest that Director is really badly written. I would only
request something like this on the assumption that it is trivial to
implement. In a half decent architecture it should be a few lines of code at
most. The biggest obstacle I would anticipate is the extra testing/debugging
requirement, given that there may be some code that (incorrectly) depends on
the assumption that the internal cast exists.

- Robert

[To remove yourself from this list, or to change to digest mode, go to 
http://www.penworks.com/lingo-l.cgi  To post messages to the list, email 
[EMAIL PROTECTED]  (Problems, email [EMAIL PROTECTED]). Lingo-L is for 
learning and helping with programming Lingo.  Thanks!]



Re: Wishlist gloom (Was lingo-l Getting rid of Internal?)

2002-10-23 Thread Robert Tweed
- Original Message -
From: Howdy-Tzi [EMAIL PROTECTED]

 On what do you base that assessment?

Well, there are no dependencies on casts, as such, as far as I am aware.
There may be dependencies on members, and there needs to be a default cast
(which is the current active cast, not necessarily Internal anyway) where
new items can be created, but there doesn't need to be any specific
references to Internal for anything. If there are dependencies, they are
physical, not logical dependencies that could be removed by changing the
implementation, but without affecting backward compatability.

Of course, all this is conjecture as I have no idea what web of code goes to
make up Director. I'm assuming that at some point, someone must have
modularised it reasonably well: even if it wasn't done at the first version
I don't think it could have come this far without the codebase being made
fairly well organised, or we'd probably see a lot more bugs and backward
compatability problems than we do. While we do get the odd annoying one or
two, Director is actually amazingly bug-free compared to a lot of software.

- Robert

[To remove yourself from this list, or to change to digest mode, go to 
http://www.penworks.com/lingo-l.cgi  To post messages to the list, email 
[EMAIL PROTECTED]  (Problems, email [EMAIL PROTECTED]). Lingo-L is for 
learning and helping with programming Lingo.  Thanks!]



Re: Wishlist gloom (Was lingo-l Getting rid of Internal?)

2002-10-23 Thread Robert Tweed
- Original Message -
From: Howdy-Tzi [EMAIL PROTECTED]
 
  Well, there are no dependencies on casts, as such, as far as I am
  aware.

 I think I see what you're saying here; however I believe it's fair to
 see Director as needing at least one cast in much the same way as it
 needs a stage or score.

That's fine. I never suggested that a movie should have no casts, just that
there should be the option to delete the Internal cast after at least one
other cast has been added. That cast then becomes cast 0. Logically, it
would not matter whether that cast were internal or external.

- Robert

[To remove yourself from this list, or to change to digest mode, go to 
http://www.penworks.com/lingo-l.cgi  To post messages to the list, email 
[EMAIL PROTECTED]  (Problems, email [EMAIL PROTECTED]). Lingo-L is for 
learning and helping with programming Lingo.  Thanks!]



Re: lingo-l Distressflag (request)

2002-10-23 Thread Robert Tweed
Interestingly, there seems to be some disagreement on this, but some
interesting legal points have come up...

 At 5:59 PM -0400 10/23/02, Bruce Epstein - Zeus Productions wrote:
 To my knowledge, Macromedia has repeatedly said they have no objection to
 projector sharing.

To my knowledge, it is the exact opposite. I remember someone from
Macromedia (although I forget who) saying that in order to legally create a
stub-projector for a given platform, you must own a copy of Director for
that platform. Clearly one of us has this wrong.

 At 12:01 PM -0400 10/23/02, [EMAIL PROTECTED] wrote:
  Even if it's for a good cause, it's technically a license violation
  and/or
  illegal, so I have to ask that you not use the list for this sort of
  thing.  Anyone who wishes to respond should not reply via the list.

 If I develop a project in Director for a client, I am effectively selling
 someone a projector. Why if I give that projector to someone for free
would
 it be any different?

This is the most interesting point I have heard on this subject. I don't see
how they can prevent anyone doing this, under the terms of redistribution
that come with Director. There might be a non-competition or
anti-circumvention clause somewhere that broadly disallows behaviour that
would cost Macromedia sales of Director, which might cover this.

 I am assuming that in order to be absolutely legal you would have to
 follow all relevant rules on Macromedia branding.

However, the branding and registration rules only apply if you want to
*distribute* a product, there is a specific exclusion for internal use.
However, I suspect that to qualify as internal use the entity using the
product would have to own the copy of Director that produced it. I don't
think that is the interpretation that most developers currently go by
though.

IANAL, so I wouldn't trust my own judgement on this and would rather just go
by whatever Macromedia says is their policy. After all, that's what counts
at the end of the day, because the language of the TC's can probably be
twisted either way by a sufficiently skilled lawyer, and Macromedia can
afford more lawyers than me ;-)

- Robert

[To remove yourself from this list, or to change to digest mode, go to 
http://www.penworks.com/lingo-l.cgi  To post messages to the list, email 
[EMAIL PROTECTED]  (Problems, email [EMAIL PROTECTED]). Lingo-L is for 
learning and helping with programming Lingo.  Thanks!]



Re: lingo-l Help with lists

2002-10-22 Thread Robert Tweed
- Original Message -
From: Robert Tweed [EMAIL PROTECTED]
  I finally figured out the problem.  I was trying the getProp, but here's
  my problem with it.  Let's say the user is clicking on Apple but the
  list contains [apple: apple.aif].  It get a property not found error
  because the clicked on text is Uppercase, but the list entry is lower
  case.  Any suggestions for solving this?

 The easiest way around this is to use symbols, which are case-insensitive,
 so instead of:

 [apple: apple.aif]

Oops, keyboard got a bit trigger-happy on me.

As I was saying, instead of that, you would use:

[#apple: apple.aif]

Then use:

fruitSound = pFruits[ symbol( pFruitName ) ]

- Robert

[To remove yourself from this list, or to change to digest mode, go to 
http://www.penworks.com/lingo-l.cgi  To post messages to the list, email 
[EMAIL PROTECTED]  (Problems, email [EMAIL PROTECTED]). Lingo-L is for 
learning and helping with programming Lingo.  Thanks!]



lingo-l Getting rid of Internal?

2002-10-22 Thread Robert Tweed
Just a small thing that has been annoying me. I've recently started breaking
all my code up into libraries (esp. the openLingo library) and putting them
in linked casts. It also occured to me that to make LDM's work usefully, I
should put *everything* in external casts, so the same code and assets can
be shared between child and parent movies.

Doing this has certainly cleaned up my movies, but it's left me with a big
ugly internal cast that pops up whenever Director starts. It's unused,
badly named, and is just waiting for things to be accidentally dropped into
it. Is there any way to get rid of it? It's certainly well hidden, if it
exists. If not, I'll email this one off to the wishlist.

- Robert

[To remove yourself from this list, or to change to digest mode, go to 
http://www.penworks.com/lingo-l.cgi  To post messages to the list, email 
[EMAIL PROTECTED]  (Problems, email [EMAIL PROTECTED]). Lingo-L is for 
learning and helping with programming Lingo.  Thanks!]



Re: lingo-l Getting rid of Internal?

2002-10-22 Thread Robert Tweed
- Original Message -
From: Tab Julius [EMAIL PROTECTED]

 I'm not aware of a way to get rid of it, and it'd probably break the
engine
 if you did.

Well, there shouln't be any physical ties to Internal, specifically, so
there should not be any reason to remove it other than an oversight in the
design of Director. Having done lots of experimentation for openLingo it
seems Director needs a reference to the current cast, but that cast does not
have to be Internal, it can be anything. Therefore, as long as a movie has
at least one cast, it should work fine. AFAIK.

- Robert

[To remove yourself from this list, or to change to digest mode, go to 
http://www.penworks.com/lingo-l.cgi  To post messages to the list, email 
[EMAIL PROTECTED]  (Problems, email [EMAIL PROTECTED]). Lingo-L is for 
learning and helping with programming Lingo.  Thanks!]



Re: lingo-l Getting rid of Internal?

2002-10-22 Thread Robert Tweed
- Original Message -
From: Rob Romanek [EMAIL PROTECTED]

 As far a ditching the internal library, I find it extremely useful
 especially with LDMs. I keep the internal library exclusively for
 creating temporary cast members on the fly.

That's a good point: I do that too, but traditionally, whenever I need this,
I always have a dynamic cast somewhere, since I always used to use
internal for scripts. Makes sense to start using it for that purpose
instead. Just a pity I can't (a) Rename it, and (b) Stop it opening whenever
you reload the project, although I suppose that gives me the opportunity to
check it's always empty.

rant
Still, all these little things just seem like the stuff that Director
*should* do without even having to ask, even if it's not all that important.
I really just want to get rid of Internal to avoid any ambiguity, because
in all my older movies it's the most important (or only) cast. Avoiding
confusion is an important part of software engineering, even if it is
something most people think of as quite minor.
/rant

- Robert

[To remove yourself from this list, or to change to digest mode, go to 
http://www.penworks.com/lingo-l.cgi  To post messages to the list, email 
[EMAIL PROTECTED]  (Problems, email [EMAIL PROTECTED]). Lingo-L is for 
learning and helping with programming Lingo.  Thanks!]



  1   2   >