Basic Scripting Language

<< Click to Display Table of Contents >>

Navigation:  Using SyncBackPro > Technical Reference > Scripting >

Basic Scripting Language

Previous pageReturn to chapter overviewNext page


Although the Basic script syntax is very similar to VBScript, it is not identical and there are differences. See the Converting VBS to Basic section for details.


The Basic syntax supports:


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)





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


For example:


Valid: VarName, _Some, V1A2, _____Some____

Invalid: 2Var, My Name, Some-more, This,is,not,valid



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."



New statement


The "new" statement is provided for the Basic syntax. Since you don't provide the method name in this statement, it looks for a method named "Create" in the specified class. If the method doesn't exist, the statement fails. For 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.



Character Strings


Strings (sequence of characters) are declared in Basic using the double quotes (") character. For example:


A = "This is a text"
Str = "Text "+"concat"





Comments can be inserted inside scripts. You can use ' chars or REM. A comment will finish at the end of the line. For example:


' This is a comment before ShowMessage
REM This is another comment
ShowMessage("More ok!")
' And this is a comment
' with two lines
ShowMessage("End of okays")





To aid with VBScript compatibility, there is no need to declare variable types or even variables themselves. However, if you wish to declare variables you can using the DIM directive and the variable name. For example:


  S = "Hello world!"
A = 0
A = A+1


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


B = 0
A = B + 1


Variables declared with the 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





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. For example:


MyChar = MyStr[2]
MyStr[1] = "A"
MyArray[1,2] = 1530
Lines.Strings[2] = "Some text"





Array constructors and variant arrays are supported. To construct an 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 a variable is a variant array, then indexing in that variable is supported. A variable is a variant array if it was assigned using an array constructor, if it is a direct reference to a Delphi variable which is a variant array or if it was created using the VarArrayCreate procedure.


Arrays are 0-based index. For example:


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"



If statements


There are two forms of if statement: if...then...end and the if...then...else...end if. Like normal Basic, if the if expression is true, the statement (or block) is executed. If there is an else part and the expression is false, then the statement (or block) after else is executed. For example:


  IF J <> 0 THEN Result = I/J END IF
  IF J = 0 THEN Exit Function ELSE Result = I/J END IF
  IF J <> 0 THEN
    Exit Function
    Result = I/J


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



While statements


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


WHILE (Data[I] <> X) I = I + 1 END WHILE
WHILE (I > 0)
  IF Odd(I) THEN Z = Z * X END IF
  X = Sqr(X)
WHILE (not Eof(InputFile))
  Readln(InputFile, Line)



loop statements


The possible syntax's 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 statements, then the control condition will be tested before iteration. Otherwise, control condition will be tested after iteration. For example:


  K = I mod J
  I = J
  J = K
  Write("Enter a value (0..9): ")
  K = I mod J
  I = J
  J = K
  Write("Enter a value (0..9): ")



For statements


For statements can have the following syntax:


FOR counter = initialValue TO finalValue STEP stepValue




The for statement sets counter to initialValue, repeats execution of statements until "next" and then increments value of counter by stepValue, until counter reaches finalValue. The step part is optional, and if omitted stepValue is considered to be 1.


For example:


FOR c = 1 TO 10 STEP 2
  a = a + c
FOR I = a TO b
  j = i ^ 2
  sum = sum + j



select case statements


Case statements have the following syntax:


SELECT CASE selectorExpression
  CASE caseexpr1
  CASE caseexprn


if selectorExpression matches the result of one of the caseexprn expressions, the respective statements will be executed. Otherwise, the elsestatement will be executed. The Else part of a case statement is optional. For example:


SELECT CASE uppercase(Fruit)
  CASE "lime" ShowMessage("green")
  CASE "orange"
  CASE "apple" ShowMessage("red")



function and sub declarations


The declaration of functions and subs is similar to Basic. Functions return values, which are returned using the implicitly declared variable (with the same name as the function) or via the Return statement. Parameters by reference can also be used, by using the BYREF directive. For example:


SUB HelloWorld
  ShowMessage("Hello world!")
SUB UpcaseMessage(Msg)
FUNCTION TodayAsString
  TodayAsString = DateToStr(Date)
    MAX = A
    MAX = B
SUB SwapValues(BYREF A, B)
  TEMP = A
  A = B
  B = TEMP


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


SUB UpcaseMessage(Msg)
  'This line will be never reached
  ShowMessage("never displayed")
FUNCTION TodayAsString
  Return DateToStr(Date)



All Content: 2BrightSparks Pte Ltd © 2003-2021