hasMemory

Richard Gaskin ambassador at fourthworld.com
Mon Aug 2 16:56:41 CDT 2004


Mark Wieder wrote:

> All-
> 
> Does anyone have any clues about the "hasMemory" function? In the
> documentation I see:
> 
> Comments:
> This function is only partially implemented, and may not return useful
> values on some platforms. It is included in Transcript for
> compatibility with imported SuperCard projects.
> 
> That alone would keep me from using it, but I'm curious about what
> "partially implemented" means.

The MC docs refer to the hasMemory function as "implemented for 
SuperCard compatibility".  In my experience, "implemented for 
compatibility" means "implemented in such a way that it won't throw 
script errors even if it does nothing at all like what you expected."

In even blunter terms, "for compatibility" sometimes means the engine 
may lie to you by not throwing a script error when an expected behavior 
is not at all present.

For example, in SuperCard you can say "set the tool of window myWindow 
to pointer", and only the specified window has the pointer mode while 
all others remain governed by the more global "choose" command.

But in Transcript, "set the tool" is synonymous with "choose", so that 
all toplevel windows will have the same mode.  AFAIK it isn't currently 
possible to have multiple toplevel windows with different modes (though 
an even more flexible option is proposed in 
<http://www.runrev.com/revolution/developers/bugdatabase/show_bug.cgi?id=623>).

So if you're porting from SC and "set the tool" doesn't throw a script 
error, you may miss learning the essential fact that what your script is 
attempting, and being allowed to run, really isn't doing what you want.

How this comes down with the hasMemory function I couldn't tell you. 
But I can say that once you walk away from OS 9 I doubt you'll have 
memory issues.  Win32 has a pretty efficient virtual memory system, and 
of course the VM in UNIX, including OS X, is stellar.  I've never had a 
low-memory condition in any OS other than Win95 (back when the machines 
shipped with barely enough to run the OS) and Mac OS 9.

My rule of thumb is to avoid tokens implemented "for compatibility". 
The old MC docs didn't even include any that weren't fully implemented, 
tucking them away into a note on compatibility with other tools.

My clients and I have gone one step further:  we don't even build for OS 
9 anymore until someone requests it.  I know that's not an option in 
some markets, but thus far in our web publishing, medical, and 
qualitative analysis markets I haven't had a request for Classic yet.  I 
know that roughly half of Mac users are still running OS 9, but the 
number is tilting rapidly and most of those customers aren't the ones 
buying software.

-- 
  Richard Gaskin
  Fourth World Media Corporation
  ___________________________________________________________
  Ambassador at FourthWorld.com       http://www.FourthWorld.com


More information about the use-livecode mailing list