Differences
This shows you the differences between two versions of the page.
Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
0.8.3:scripting [2021/10/13 13:35] – [Scripting] admin | 0.8.3:scripting [2021/10/13 13:42] (current) – [Global Functions] admin | ||
---|---|---|---|
Line 491: | Line 491: | ||
</ | </ | ||
+ | ===== Global Constants ===== | ||
+ | |||
+ | <file pascal> | ||
+ | const | ||
+ | DEFAULT_STR : String = ' | ||
+ | </ | ||
===== Local Variables ===== | ===== Local Variables ===== | ||
Local variables are declared like Delphi syntax by the " | Local variables are declared like Delphi syntax by the " | ||
Line 593: | Line 599: | ||
Those can be defined in all available viewspaces (private, protected, public, published) like fields. | Those can be defined in all available viewspaces (private, protected, public, published) like fields. | ||
- | But besides | + | But besides |
and class functions / class procedures. They are declared by a different reserved word, because their | and class functions / class procedures. They are declared by a different reserved word, because their | ||
behaviour is a bit different than the simple methods. | behaviour is a bit different than the simple methods. | ||
Line 602: | Line 608: | ||
Regular functions/ | Regular functions/ | ||
So they have no instance context and therefore no access to fields or object methods. | So they have no instance context and therefore no access to fields or object methods. | ||
+ | |||
+ | This is getting important, when using " | ||
<file pascal> | <file pascal> | ||
Line 618: | Line 626: | ||
procedure Output(AIdx : Integer); | procedure Output(AIdx : Integer); | ||
end; | end; | ||
+ | </ | ||
+ | |||
+ | After our method head declaration is done, we need to implement the function. | ||
+ | |||
+ | <file pascal> | ||
+ | /// < | ||
+ | /// Test Scripting Unit | ||
+ | /// </ | ||
+ | unit app.test; | ||
+ | |||
+ | interface | ||
+ | |||
+ | const | ||
+ | DEFAULT_STR : String = ' | ||
+ | type | ||
+ | TTest = class | ||
+ | [...] | ||
+ | end; | ||
+ | |||
+ | implementation | ||
+ | |||
+ | { TTest } | ||
+ | |||
+ | constructor TTest.Create(); | ||
+ | begin | ||
+ | inherited Create(); | ||
+ | |||
+ | // use property test | ||
+ | Self.FieldBool := true; | ||
+ | |||
+ | Self.FFieldStr := 'Hello World'; | ||
+ | Self.FFieldInt := 124; | ||
+ | Self.FFieldDbl := 1.25; | ||
+ | Self.FFieldObj := Self; | ||
+ | end; | ||
+ | |||
+ | destructor TTest.Destroy(); | ||
+ | begin | ||
+ | inherited Destroy(); | ||
+ | end; | ||
+ | |||
+ | function TTest.GetFieldBool() : Boolean; | ||
+ | begin | ||
+ | Result := Self.FFieldBool; | ||
+ | System.WriteLn(' | ||
+ | end; | ||
+ | |||
+ | procedure TTest.SetFieldBool(AValue : Boolean); | ||
+ | begin | ||
+ | Self.FFieldBool := AValue; | ||
+ | System.WriteLn(' | ||
+ | end; | ||
+ | |||
+ | class function TTest.GetDefaultStr() : String; | ||
+ | begin | ||
+ | Result := DEFAULT_STR; | ||
+ | end; | ||
+ | |||
+ | procedure TTest.Output(AIdx : Integer); | ||
+ | var LTmpStr : String; | ||
+ | LSeed : Single; | ||
+ | begin | ||
+ | LSeed := System.RandomFloat(); | ||
+ | LTmpStr := TTest.GetDefaultStr() + | ||
+ | ' | ||
+ | '" | ||
+ | '", | ||
+ | '", | ||
+ | '", | ||
+ | '", | ||
+ | '" | ||
+ | LTmpStr := AIdx.ToString() + #9' [' + LSeed.ToString() + ' | ||
+ | ' => ' + Self.Calculate(AIdx * 0.5).ToString(); | ||
+ | System.WriteLn(LTmpStr); | ||
+ | end; | ||
+ | |||
+ | function TTest.Calculate(AFactor : Double) : Double; | ||
+ | begin | ||
+ | Result := Self.FFieldInt.ToDouble() + Self.FFieldDbl * AFactor; | ||
+ | end; | ||
+ | |||
+ | end. | ||
</ | </ | ||
==== Native ==== | ==== Native ==== |