[APBeta] Scripting question

RPEHLM robin at lauryssen-mitchell.com
Mon Apr 20 12:53:29 PDT 2009


One very handy effect of using enums is the ability to reduce the amount 
of parameter checking needed in class methods.  I like structures for 
being able to pass more than one value back from a function, although 
they do of course have a whole bunch of other uses.  Dictionaries are 
great for organising groups of related data.  Retrival is quite fast 
even from large dictionaries.  I would like to just be able to 
read/write a dictionary to a file (e.g. d.write(path) or similar),  
however it is trivial to do the long way round :)

I really need to get around to playing with SQL!  Just having too much 
fun mangling FITS files via APScript.  Anyone want to try an alpha test 
of the prefix library soonish (in a week of two)?  I want to see what 
b35 has in it first :-D

Just some thoughts
Robin

Paul Rodman wrote:
> A lot of these constructs are new to me as well (in V2). Structures 
> and enums were not available with the V1 scripting language. In fact, 
> I haven't used them in the scripting framework at all. Only very 
> recently did I start using newer fancy stuff like operator 
> overloading, interfaces, shared class properties and methods, etc.
>
> Paul R.
>
> On Apr 19, 2009, at 12:29 PM, Jeff Young wrote:
>
>> Excellent stuff, Robin.  I had managed to get classes working, but 
>> wasn't aware of structures or dictionaries.  I'll have to spend some 
>> time at the link you provided once I have some to spare.
>>
>> Cheers,
>> -- Jeff.
>>
>>
>>> -----Original Message-----
>>> From: apbeta-bounces at lists.astroplanner.net 
>>> [mailto:apbeta-bounces at lists.astroplanner.net] On Behalf Of
>>> RPEHLM
>>> Sent: Sunday, April 19, 2009 8:40 AM
>>> To: AstroPlanner Beta Testers
>>> Subject: Re: [APBeta] Scripting question
>>>
>>> Classes are really good for this sort of thing; use them a lot myself.
>>> Don't forget you can use the 'public' or 'private' prefix to control 
>>> the
>>> scope (visibility) of stuff inside your class.  It's certainly possible
>>> to build arrays of classes.
>>>
>>> Also useful are structures (can only be used inside a class or 
>>> module); e.g.
>>>
>>> public structure Blah
>>>    flag as boolean
>>>    index as integer
>>>    name as string*20
>>> end stucture
>>>
>>> Note the *20 for the string declaration.  Strings in structures are
>>> fixed length and padded with ASCII 0, so Len() will always return 20 in
>>> this particular case.  Due to the way structures are implemented in
>>> RealBasic they cannot contain any data types whose length can vary.  
>>> For
>>> example 'a() as string' is out
>>>
>>> The new Dictionary class is really really useful.  You can build a
>>> dictionary where the Value holds a structure, an array, or a class, or
>>> even an array of classes or structures (haven't tried OLEObjects yet!
>>> :-D).  One interesting feature of dictionaries of structures is that
>>> dictionary.value(key) will return the first element of the structure.
>>> Not sure if this is a RealSoftware bug or feature though :)
>>>
>>> I have been trying to use enums.  So far I can declare them but have 
>>> not
>>> been able to use them.
>>>
>>> The SQL class offers a whole new world of data storage and retrival
>>> possibilities.  I have only just started looking at this but it appears
>>> to be really amazing.  One of the best features is the ability to 
>>> create
>>> a database in memory; useful for short term storage.
>>>
>>> A useful resource for APScript are the RealBasic Language Reference
>>> (RBLR) and User Guides (RBUG).  
>>> (<http://www.realsoftware.com/download>)
>>> and scroll down to the 'Individual Files' section.  Your first stop
>>> should be the RBScript class section in the RBLR.  You do have to 
>>> employ
>>> some trial and error to find out what will and what won't work in a
>>> script.  This is where the 'Check for Errors' button is really useful!
>>>
>>> Another useful new class is RegEx.  Haven't used it much yet but it
>>> should make checking user input or analysing file content a lot easier.
>>>
>>> Hope this helps
>>> Robin
>>>
>>> Paul Rodman wrote:
>>>>
>>>> On Apr 18, 2009, at 02:35 PM, Michael Portuesi wrote:
>>>>
>>>>> Does the AP scripting language allow one to create objects from
>>>>> within a script?
>>>>
>>>>
>>>>> The number of global variables in my charts script frightens me, as
>>>>> does the number of parameters I have to pass to each of the functions
>>>>> within the script.  I'd like to create an object to hold all these
>>>>> values, or perhaps a hash table that will store this blob of
>>>>> information as a set of named attributes.
>>>>>
>>>>> Without these sorts of language tools, it becomes difficult to build
>>>>> any sort of large-scale scripts inside AstroPlanner.  (I realize this
>>>>> is directed at the compiler vendor, not you, but I had to vent).
>>>>
>>>> Yes, it does (V1 and V2 for that matter)
>>>>
>>>> e.g.
>>>>
>>>> class MyClass
>>>>  dim property1 as integer
>>>>  dim property2 as string
>>>>
>>>>  sub Constructor()
>>>>     property1=77
>>>>     property2="Sunset Strip"
>>>>
>>>>  function Squodge() as string
>>>>    return str(property1) + " " + property2
>>>>  end function
>>>> end class
>>>>
>>>> sub main()
>>>>  dim a as MyClass
>>>>
>>>>  a = new MyClass
>>>>  print a.Squodge
>>>> end sub
>>>>
>>>>
>>>> and so on.
>>>>
>>>> I use a lot of classes in the 10,000+ line framework which is
>>>> prepended to each script (See Script->Framework Reference).
>>>>
>>>> Note that in 2.0b34 I introduced a Dictionary class that allows you to
>>>> set up a "hash table" for storing and retrieving stuff.
>>>>
>>>> e.g.
>>>>
>>>> dim d as new Dictionary
>>>>
>>>> d.Value("Param1") = 77
>>>> d.Value(9912) = "Whatever"
>>>>
>>>> if d.HasKey(9912) then print d.Value(9912)
>>>>
>>>> If you'd like a copy of the Framework source code for ideas, I can
>>>> provide it via personal e-mail.
>>>>
>>>> Paul R.
>>>>
>>>>
>>>> _______________________________________________
>>>> APBeta mailing list
>>>> APBeta at lists.astroplanner.net
>>>> http://lists.astroplanner.net/listinfo.cgi/apbeta-astroplanner.net
>>>>
>>>>
>>> _______________________________________________
>>> APBeta mailing list
>>> APBeta at lists.astroplanner.net
>>> http://lists.astroplanner.net/listinfo.cgi/apbeta-astroplanner.net
>> _______________________________________________
>> APBeta mailing list
>> APBeta at lists.astroplanner.net
>> http://lists.astroplanner.net/listinfo.cgi/apbeta-astroplanner.net
>
> _______________________________________________
> APBeta mailing list
> APBeta at lists.astroplanner.net
> http://lists.astroplanner.net/listinfo.cgi/apbeta-astroplanner.net
>
>



More information about the APBeta mailing list