Clicky

Basic Syntax

Basic syntax


1. Overview

The following Basic syntax is supported:

  • sub .. end and function .. end declarations
  • byref and dim directives
  • if .. then .. else .. end constructor
  • for .. to .. step .. next constructor
  • do .. while .. loop and do .. loop .. while constructors
  • do .. until .. loop and do .. loop .. until constructors
  • ^ , * , / , and , + , - , or , <> , >=, <= , = , > , < , div , mod , xor , shl , shr operators
  • try .. except and try .. finally blocks
  • try .. catch .. end try and try .. finally .. end try blocks
  • select case .. end select constructor
  • array constructors (x:=[ 1, 2, 3 ];)
  • exit statement
  • access to object properties and methods ( ObjectName.SubObject.Property )

2. Script structure

A script structure is made of two major blocks: a) function and sub declarations and b) main block. Both are optional, but at least one should be present in the script. Some examples:

SCRIPT 1:

SUB DoSomething

CallSomething

END SUB

CallSomethingElse

SCRIPT 2:

CallSomethingElse

SCRIPT 3:

FUNCTION MyFunction

 MyFunction = "Ok!"

END FUNCTION

Like in normal basic, statements in a single line can be separated by ":" character.

3. Identifiers

Identifier names in the script (variable names, function and procedure names, etc.) follow the most common rules in basic: should begin with a character (a..z or A..Z), or '_', and can be followed by alphanumeric chars or '_' char. Cannot contain any other character os spaces.

Valid identifiers:

VarName

_Some

V1A2

_____Some____

Invalid identifiers:

2Var

My Name

Some-more

This,is,not,valid

4.2.4 Assign statements

Assign statements (assign a value or expression result to a variable or object property) are built using "=". Examples:

MyVar = 2

Button.Caption = "This " + "is ok."

5. New statement

The script provides the "new" statement for Basic syntax. Since you don't provide the method name in this statement, scripter studio looks for a method named "Create" in the specified class. If the method doesn't exist, the statement fails. Example:

MyLabel = new TLabel(Form1)

MyFont = new TFont

In the above examples, a method named "Create" for TLabel and TFont class will be called. The method must be registered. If the method receives parameters, you can pass the parameters in parenthesis, like the TLabel example above.

6. Character strings

Strings (sequence of characters) are declared in basic using the double quote (") character. Some

examples:

A = "This is a text"

Str = "Text "+"concat"

7. Comments

Comments can be inserted into the script. You can use ' chars or REM. Comment will finish at the end of the line. Examples:

' This is a comment before ShowMessage

ShowMessage("Ok")

REM This is another comment

ShowMessage("More ok!")

' And this is a comment

' with two lines

ShowMessage("End of okays")

8. Variables

There is no need to declare variable types in the script. Thus, you declare variable just using DIM directive and its name. There is no need to declare variables if when the property OptionExplicit is set to false. In this case, variables are implicit declared. If you want to have more control over the script, set the OptionExplicit property to true. This will raise a compile error if the variable is used but not declared in the script. Examples:

SCRIPT 1:

SUB Msg

 DIM S

 S = "Hello world!"

 ShowMessage(S)

END SUB

SCRIPT 2:

DIM A

A = 0

A = A+1

ShowMessage(A)

Note that if the script property OptionExplicit is set to false, then variable declarations are not necessary for any of the scripts above.

You can also declare global variables as private or public using the following syntax:

SCRIPT 2:

PRIVATE A

PUBLIC B

B = 0

A = B + 1

ShowMessage(A)

Variable declared with DIM statement are public by default. Private variables are not accessible from other scripts.

Variables can be default initialized with the following syntax

DIM A = "Hello world"

DIM B As Integer = 5

9. Indexes

Strings, arrays and array properties can be indexed using "[" and "]" chars. For example, if Str is a string variable, the expression Str[3] returns the third character in the string denoted by Str, while Str[I+ 1] returns the character immediately after the one indexed by I. More examples:

MyChar = MyStr[2]

MyStr[1] = "A"

MyArray[1,2] = 1530

Lines.Strings[2] = "Some text"

10. Arrays

Script support array constructors and support to variant arrays. To construct an array, use "[" and "]" chars. You can construct multi-index array nesting array constructors. You can then access arrays using indexes. If the array is multi-index, separate indexes using ",".

If the variable is a variant array, the script automatically supports indexing in that variable. A variable is a variant array is it was assigned using an array constructor, if it is a direct reference to a Delphi variable which is a variant array (see Delphi integration later) or if it was created using the VarArrayCreate procedure.

Arrays in script are 0-based index. Some examples:

NewArray = [ 2,4,6,8 ]

Num = NewArray[1] //Num receives "4"

MultiArray = [ ["green","red","blue"] , ["apple","orange","lemon"] ]

Str = MultiArray[0,2] //Str receives 'blue'

MultiArray[1,1] = "new orange"

11. If statements

There are two forms of if statement: if...then..end if and the if...then...else..end if. Like normal basic, if the if expression is true, the statements are executed. If there is else part and expression is false, statements after else are executed. Examples:

IF J <> 0 THEN Result = I/J END IF

IF J = 0 THEN Exit ELSE Result = I/J END IF

IF J <> 0 THEN

 Result = I/J

 Count = Count + 1

ELSE

 Done = True

END IF

If the IF statement is in a single line, you don't need to finish it with END IF:

IF J <> 0 THEN Result = I/J

IF J = 0 THEN Exit ELSE Result = I/J

12. while statements

A while statement is used to repeat statements, while a control condition (expression) is evaluated as true. The control condition is evaluated before the statements. Hence, if the control condition is false at the first iteration, the statement sequence is never executed. The while statement executes its constituent statement repeatedly, testing expression before each iteration. As long as expression returns True, execution continues. Examples:

WHILE (Data[I] <> X) I = I + 1 END WHILE

WHILE (I > 0)

IF Odd(I) THEN Z = Z * X END IF

 X = Sqr(X)

END WHILE

WHILE (not Eof(InputFile))

 Readln(InputFile, Line)

 Process(Line)

END WHILE

13. loop statements

The script supports loop statements. The possible syntax are:

DO WHILE expr statements LOOP

DO UNTIL expr statements LOOP

DO statements LOOP WHILE expr

DO statement LOOP UNTIL expr

The statements will be executed WHILE expr is true, or UNTIL expr is true. if expr is before the statements, then the control condition will be tested before iteration. Otherwise, the  control condition will be tested after iteration. Examples:

DO

 K = I mod J

 I = J

 J = K

LOOP UNTIL J = 0

DO UNTIL I >= 0

 Write("Enter a value (0..9): ")

 Readln(I)

LOOP

DO

 K = I mod J

 I = J

 J = K

LOOP WHILE J <> 0

DO WHILE I < 0

 Write("Enter a value (0..9): ")

 Readln(I)

LOOP

14. for statements

The script supports for statements with the following syntax: FOR counter = initialValue TO finalValue STEP stepValue statements NEXT. The for statement sets the counter to initialValue, repeats execution of statement until "next" and increments the value of the counter by stepValue, until the counter reaches finalValue.

Step part is optional, and if omitted stepValue is considered 1. Examples:

SCRIPT 1:

FOR c = 1 TO 10 STEP 2

 a = a + c

NEXT

SCRIPT 2:

FOR I = a TO b

 j = i ^ 2

 sum = sum + j

NEXT

15. select case statements

The script supports select case statements with the following syntax:

SELECT CASE selectorExpression

CASE caseexpr1

statement1

CASE caseexprn

statementn

CASE ELSE

elsestatement

END SELECT

If the selectorExpression matches the result of one of caseexprn expressions, the respective statements will be executed. Otherwise, the else statement will be executed. The Else part of the case statement is optional. Example:

SELECT CASE uppercase(Fruit)

 CASE "lime" ShowMessage("green")

 CASE "orange"

   ShowMessage("orange")

 CASE "apple" ShowMessage("red")

 CASE ELSE

   ShowMessage("black")

 END SELECT

16. function and sub declaration

Declaration of functions and subs are similar to basic. In functions to return function values, use implicit declared variable which has the same name of the function, or use the Return statement. Parameters by reference can also be used, using BYREF directive. Some examples:

SUB HelloWord

 ShowMessage("Hello world!")

END SUB

SUB UpcaseMessage(Msg)

 ShowMessage(Uppercase(Msg))

END SUB

FUNCTION TodayAsString

 TodayAsString = DateToStr(Date)

END FUNCTION

FUNCTION Max(A,B)

 IF A>B THEN

   MAX = A

 ELSE

   MAX = B

 END IF

END FUNCTION

SUB SwapValues(BYREF A, B)

 DIM TEMP

 TEMP = A

 A = B

 B = TEMP

END SUB

You can also declare subs and functions as private or public using the following syntax:

PRIVATE SUB Hello

END SUB

PUBLIC FUNCTION Hello

END FUNCTION

Subs and functions are public by default. Private subs and functions are not accessible from other scripts.

You can use Return statement to exit subs and functions. For functions, you can also return a valid

value. Examples:

SUB UpcaseMessage(Msg)

 ShowMessage(Uppercase(Msg))

 Return

 'This line will be never reached

 ShowMessage("never displayed")

END SUB

FUNCTION TodayAsString

 Return DateToStr(Date)

END FUNCTION

Still need help? Contact Us Contact Us