[APBeta] Scripting question
Paul Rodman
paul at ilanga.com
Sun Apr 19 21:21:25 PDT 2009
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
More information about the APBeta
mailing list