[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