tpaxscripter_methods.htm

来自「Delphi脚本控件」· HTM 代码 · 共 1,897 行 · 第 1/5 页

HTM
1,897
字号
The method has the same semantics as CallFunction, but, in addition, allows you to provide information about actual parameter types. Use CallFunctionEx instead of Use CallFunction when you want to pass an interface pointer as parameter.
</p>
<H4>
See Also
</H4>
<blockquote>
<ul>
<a href="#TPaxScripter.CallFunction"><li>CallFunction</li></a>
<a href="#TPaxScripter.CallFunctionByIdEx"><li>CallFunctionByIdEx</li></a>
<a href="#TPaxScripter.CallFunctionByID"><li>CallFunctionByID</li></a>
</ul>
</blockquote>
</blockquote>
<a name="TPaxScripter.CallFunctionByIdEx"><h3>TPaxScripter.CallFunctionByIdEx</h3></a>
<!-------------------------------------------------------------------->
<blockquote>
Calls a script-defined function represented by its id.
<pre>
<font color="blue"><b>function</b></font> CallFunctionByIDEx(SubID: Integer; <font color="blue"><b>const</b></font> Params: array <font color="blue"><b>of</b></font> <font color="blue"><b>const</b></font>; <font color="blue"><b>const</b></font> StrTypes: array <font color="blue"><b>of</b></font> <font color="blue"><b>String</b></font>; ObjectID: Integer = 0): Variant;
</pre>
<p>
The method has the same semantics as CallFunctionById, but, in addition, allows you to provide information about actual parameter types. Use CallFunctionByIdEx instead of Use CallFunctionById when you want to pass an interface pointer as parameter.
</p>
<H4>
See Also
</H4>
<blockquote>
<ul>
<a href="#TPaxScripter.CallFunction"><li>CallFunction</li></a>
<a href="#TPaxScripter.CallFunctionEx"><li>CallFunctionEx</li></a>
<a href="#TPaxScripter.CallFunctionByID"><li>CallFunctionByID</li></a>
</ul>
</blockquote>
</blockquote>
<a name="TPaxScripter.CallFunctionByID"><h3>TPaxScripter.CallFunctionByID</h3></a>
<!-------------------------------------------------------------------->
<blockquote>
Calls a script-defined function represented by its id.
<pre>
<font color="blue"><b>function</b></font> CallFunctionByID(SubID: Integer; <font color="blue"><b>const</b></font> Params: array <font color="blue"><b>of</b></font> <font color="blue"><b>const</b></font>; ObjectID: Integer = 0): Variant;
</pre>
<H4>
Arguments
</H4>
<blockquote>
<i>SubID</i>
<blockquote>
Id of function.
</blockquote>
</blockquote>
<blockquote>
<i>Params</i>
<blockquote>
Array of parameters
</blockquote>
</blockquote>
<blockquote>
<i>ObjectID</i>
<blockquote>
Id of a object.
</blockquote>
</blockquote>
<p>
<H4>
Example
</H4>
<pre>
S := TPaxScripter.Create(nil);
S.AddLanguage(TPaxPascal.Create(nil));
S.AddModule(<font color="Red">'1'</font>, <font color="Red">'paxPascal'</font>);
S.AddCode(<font color="Red">'1'</font>, <font color="Red">'program Demo;'</font>);
S.AddCode(<font color="Red">'1'</font>, <font color="Red">'Var D : array[0..1023] of double;'</font>);
S.Addcode(<font color="Red">'1'</font>, <font color="Red">'procedure Init;'</font>);
S.Addcode(<font color="Red">'1'</font>, <font color="Red">'begin'</font>);
S.Addcode(<font color="Red">'1'</font>, <font color="Red">'D[0] := 1;'</font>);
S.Addcode(<font color="Red">'1'</font>, <font color="Red">'end;'</font>);
S.Addcode(<font color="Red">'1'</font>, <font color="Red">'function P(TimeIndex : integer; MinSize, MaxSize:double) : double;'</font>);
S.AddCode(<font color="Red">'1'</font>, <font color="Red">'begin'</font>);
S.AddCode(<font color="Red">'1'</font>, <font color="Red">' D[0] := D[0] + 1;'</font>); 
S.AddCode(<font color="Red">'1'</font>, <font color="Red">' P := D[0];'</font>);
S.AddCode(<font color="Red">'1'</font>, <font color="Red">'end;'</font>);
S.AddCode(<font color="Red">'1'</font>, <font color="Red">'begin'</font>);
S.AddCode(<font color="Red">'1'</font>, <font color="Red">'end.'</font>);
S.Compile;
S.CallFunction(<font color="Red">'Demo.Init'</font>, []);

SubID := GetMemberID(<font color="Red">'Demo.P'</font>);

<font color="blue"><b>for</b></font> i := 0 <font color="blue"><b>to</b></font> 1000 <font color="blue"><b>do</b></font>
<font color="blue"><b>begin</b></font>
  S.AddBreakpoint(<font color="Red">'1'</font>, 10);
  S.CallFunctionByID(SubID, [100, 0.1, 0.2]);
  Assert(S.ScripterState = ssPaused);
  assert(S.CallStack.Count = 1);
  S.Eval(<font color="Red">'D[0]'</font>, <font color="Red">'paxPascal'</font>, Res);
  D1 := Res;
  assert(round(D1) = (i + 2));
  S.RemoveBreakpoint(<font color="Red">'1'</font>, 10);
  S.Run(rmrun, <font color="Red">''</font>, 0);
  Assert(S.ScripterState = ssTerminated);
<font color="blue"><b>end</b></font>;
</pre>
</p>
<H4>
See Also
</H4>
<blockquote>
<ul>
<a href="#TPaxScripter.CallFunction"><li>CallFunction</li></a>
<a href="#TPaxScripter.Eval"><li>Eval</li></a>
<a href="#TPaxScripter.Run"><li>Run</li></a>
<a href="#TPaxScripter.CallFunctionEx"><li>CallFunctionEx</li></a>
<a href="#TPaxScripter.CallFunctionByIdEx"><li>CallFunctionByIdEx</li></a>
</ul>
</blockquote>
</blockquote>
<a name="TPaxScripter.Compile"><h3>TPaxScripter.Compile</h3></a>
<!-------------------------------------------------------------------->
<blockquote>
Compiles all modules or performs the syntax check.
<pre>
<font color="blue"><b>function</b></font> Compile(SyntaxCheckOnly: Boolean = false): Boolean;
</pre>
<H4>
Arguments
</H4>
<blockquote>
<i>SyntaxCheckOnly</i>
<blockquote>
If value is false, paxScript compiles all modules, otherwise it performs the syntax check only.
</blockquote>
</blockquote>
<p>
<H4>
Example
</H4>
<pre>
AddModule(<font color="Red">'PascalModule'</font>, <font color="Red">'paxPascal'</font>);
AddModule(<font color="Red">'BasicModule'</font>, <font color="Red">'paxBasic'</font>);
AddCodeFromFile(<font color="Red">'PascalModule'</font>, <font color="Red">'pascal_module.sp'</font>);
AddCode(<font color="Red">'BasicModule'</font>, <font color="Red">'Dim X = [10, 20, 30]'</font>);
AddCode(<font color="Red">'BasicModule'</font>, <font color="Red">'Dim Y = 80'</font>);
Compile;
</pre>
</p>
<H4>
See Also
</H4>
<blockquote>
<ul>
<a href="#TPaxScripter.CompileModule"><li>CompileModule</li></a>
<a href="#TPaxScripter.IsError"><li>IsError</li></a>
</ul>
</blockquote>
</blockquote>
<a name="TPaxScripter.CompileModule"><h3>TPaxScripter.CompileModule</h3></a>
<!-------------------------------------------------------------------->
<blockquote>
Compiles a module or performs the syntax check.
<pre>
<font color="blue"><b>function</b></font> CompileModule(<font color="blue"><b>const</b></font> ModuleName: <font color="blue"><b>String</b></font>;
          SyntaxCheckOnly: Boolean = false): Boolean;
</pre>
<H4>
Arguments
</H4>
<blockquote>
<i>ModuleName</i>
<blockquote>
Name of module.
</blockquote>
</blockquote>
<blockquote>
<i>SyntaxCheckOnly</i>
<blockquote>
If value is true, paxScript compiles module, otherwise it performs the syntax check only.
</blockquote>
</blockquote>
<p>
<H4>
Example
</H4>
<pre>
PAXScripter1.AddModule(<font color="Red">'MyModule'</font>, <font color="Red">'paxPascal'</font>);
PAXScripter1.AddCodeFromFile(<font color="Red">'MyModule'</font>, <font color="Red">'afile.sp'</font>);
PAXScripter1.CompileModule(<font color="Red">'MyModule'</font>);
</pre>
</p>
<H4>
See Also
</H4>
<blockquote>
<ul>
<a href="#TPaxScripter.Compile"><li>Compile</li></a>
<a href="#TPaxScripter.IsError"><li>IsError</li></a>
</ul>
</blockquote>
</blockquote>
<a name="TPaxScripter.Create"><h3>TPaxScripter.Create</h3></a>
<!-------------------------------------------------------------------->
<blockquote>
Creates and initializes a TPaxScripter instance.
<pre>
<font color="blue"><b>constructor</b></font> Create(AOwner: TComponent); <font color="blue"><b>override</b></font>;
</pre>
</blockquote>
<a name="TPaxScripter.Destroy"><h3>TPaxScripter.Destroy</h3></a>
<!-------------------------------------------------------------------->
<blockquote>
Destroys an instance of TPAXScripter.
<pre>
<font color="blue"><b>destructor</b></font> Destroy; <font color="blue"><b>override</b></font>;
</pre>
</blockquote>
<a name="TPaxScripter.DiscardError"><h3>TPaxScripter.DiscardError</h3></a>
<!-------------------------------------------------------------------->
<blockquote>
Descards last error raised at compile-time or run-time.
<pre>
<font color="blue"><b>procedure</b></font> DiscardError;
</pre>
<H4>
See Also
</H4>
<blockquote>
<ul>
<a href="#TPaxScripter.IsError"><li>IsError</li></a>
</ul>
</blockquote>
</blockquote>
<a name="TPaxScripter.EnumMembers"><h3>TPaxScripter.EnumMembers</h3></a>
<!-------------------------------------------------------------------->
<blockquote>
Eumerates members of script defined class or fields of script-defined method.
<pre>
<font color="blue"><b>procedure</b></font> EnumMembers(ID: Integer;
                      Module: Integer;
                      CallBack: TPaxMemberCallback;
                      Data: Pointer);
</pre>
<H4>
Arguments
</H4>
<blockquote>
<i>ID</i>
<blockquote>
<font color="black"><i>Id</i></font> of class or method
</blockquote>
</blockquote>
<blockquote>
<i>Module</i>
<blockquote>
<font color="black"><i>Id</i></font> of <font color="black"><i>module</i></font> (0, 1, 2...).
</blockquote>
</blockquote>
<blockquote>
<i>CallBack</i>
<blockquote>
Call back function which is called for each member. 
<p>
TPaxMemberCallback = procedure (const                      Name: String;
                     <font color="black"><i>ID</i></font>: Integer;
                     Kind: TPAXMemberKind;
                     ml: TPAXModifierList;
                     <font color="black"><i>Data</i></font>: Pointer) of                      object;
<ul>
<li>Name - name of member
<li><font color="black"><i>ID</i></font> - <font color="black"><i>id</i></font> of member
<li>Kind - kind of member;
    TPAXMemberKind = (mkUnknown, 
       mkConst, mkField, mkProp, mkParam,         mkResult, mkMethod, mkClass,        mkStructure, mkEnum)
<li>ml - modifier list;
  TPAXModifier = (modDEFAULT, modPUBLIC,   modPRIVATE, modSTATIC, modPROTECTED);
  TPAXModifierList = set of TPAXModifier;
<li><font color="black"><i>Data</i></font> - user-defined pointer
</ul>
</blockquote>
</blockquote>
<blockquote>
<i>Data</i>
<blockquote>
User-defined pointer.
</blockquote>
</blockquote>
<p>
Group: "Code explorer".
</p>
</blockquote>
<a name="TPaxScripter.Eval"><h3>TPaxScripter.Eval</h3></a>
<!-------------------------------------------------------------------->
<blockquote>
Evaluates an expression at run-time.
<pre>
<font color="blue"><b>function</b></font> Eval(<font color="blue"><b>const</b></font> Expression, LanguageName: <font color="blue"><b>String</b></font>; <font color="blue"><b>var</b></font> Res: Variant): Boolean;
</pre>
<H4>
Arguments
</H4>
<blockquote>
<i>Expression</i>
<blockquote>
An <font color="black"><i>expression</i></font>.
</blockquote>
</blockquote>
<blockquote>
<i>LanguageName</i>
<blockquote>
Name of pax language
</blockquote>
</blockquote>
<blockquote>
<i>Res</i>
<blockquote>
Result value.
</blockquote>
</blockquote>
<p>
Function Eval returns false, if there was a compile-time or run-time error. Use Eval function to process the watch expressions at run-time.
<H4>
Example
</H4>
<pre>
PAXScripter1.Eval(<font color="Red">'x[10]'</font>, <font color="Red">'paxPascal'</font>, Res);
</pre>
</p>
<H4>
See Also
</H4>
<blockquote>
<ul>
<a href="#TPaxScripter.Run"><li>Run</li></a>
</ul>
</blockquote>
</blockquote>
<a name="TPaxScripter.FileExtToLanguageName"><h3>TPaxScripter.FileExtToLanguageName</h3></a>
<!-------------------------------------------------------------------->
<blockquote>
Returns name of language by a file name.
<pre>
<font color="blue"><b>function</b></font> FileExtToLanguageName(<font color="blue"><b>const</b></font> FileExt: <font color="blue"><b>String</b></font>): <font color="blue"><b>String</b></font>;
</pre>
<p>
<H4>
Example
</H4>
<pre>
S PaxScripter1.FileExtToLanguageName(<font color="Red">'.pb'</font>);
<font color="blue"><b>if</b></font> S <> nil <font color="blue"><b>then</b></font>
  ShowMessage(Format(<font color="Red">'Scripts of %s language are located in files which have extension %s'</font>, [S, <font color="Red">'.pb'</font>]);
</pre>
</p>
</blockquote>
<a name="TPaxScripter.FindLanguage"><h3>TPaxScripter.FindLanguage</h3></a>
<!-------------------------------------------------------------------->
<blockquote>
Returns instance of TPaxLanguage class which represents properties of a scripting language.
<pre>
<font color="blue"><b>function</b></font> FindLanguage(<font color="blue"><b>const</b></font> LanguageName: <font color="blue"><b>String</b></font>): TPaxLanguage;
</pre>
<p>
If scripter does not support the language, the FindLanguage method returns nil.
<H4>
Example
</H4>
<pre>
L := PaxScripter1.FindLanguage(<font color="Red">'paxBasic'</font>); 
<font color="blue"><b>if</b></font> L <> nil <font color="blue"><b>then</b></font>
  ShowMessage(<font color="Red">'Ok'</font>)
<font color="blue"><b>else</b></font>
  ShowMessage(<font color="Red">'This TPaxScripter instance does not support the paxBasic language'</font>);
</pre>
</p>
</blockquote>
<a name="TPaxScripter.GetAddress"><h3>TPaxScripter.GetAddress</h3></a>
<!-------------------------------------------------------------------->
<blockquote>
Returns address of variable or method.
<pre>
<font color="blue"><b>function</b></font> GetAddress(ID: Integer): Pointer;
</pre>

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?