pascal_stmt.htm
来自「Delphi脚本控件」· HTM 代码 · 共 2,046 行 · 第 1/5 页
HTM
2,046 行
raised during execution of <font color="black"><i>TryStatements</i></font>, control is transferred to
<font color="black"><i>FinallyStatements</i></font>; once <font color="black"><i>FinallyStatements</i></font> finishes executing, the
exception is re-raised.
If an exception is raised but not handled in the finally clause,
that exception is propagated out of the try...finally statement,
and any exception already raised in the try clause is lost.
The finally clause should therefore handle all locally raised
exceptions, so as not to disturb propagation of other exceptions.
<H4>
Example
</H4>
<pre>
<font color="blue"><b>try</b></font>
<font color="blue"><b>try</b></font>
<font color="blue"><b>raise</b></font> 100;
<font color="blue"><b>except</b></font>
<font color="blue"><b>on</b></font> E <font color="blue"><b>do</b></font>
<font color="blue"><b>begin</b></font>
<font color="blue"><b>print</b></font> <font color="Red">'except'</font>;
<font color="blue"><b>print</b></font> E;
<font color="blue"><b>end</b></font>;
<font color="blue"><b>end</b></font>;
<font color="blue"><b>finally</b></font>
<font color="blue"><b>print</b></font> <font color="Red">'finally'</font>;
<font color="blue"><b>end</b></font>;
</pre>
<H4>
See Also
</H4>
<blockquote>
<ul>
<li><a href="#Raise Statements">Raise Statements</a></li>
<li><a href="#Try-except Statements">Try-except Statements</a></li>
<//ul>
</blockquote>
</blockquote>
<a name="Type Statements"><h3>Type Statements</h3></a>
<!-------------------------------------------------------------------->
<blockquote>
Creates new record type, class type or array type.
<H4>
Grammar
</H4>
<blockquote>
<pre>
TypeStmt -> TypeIdent
(RecordType|ClassType|ArrayType)
RecordType -> <font color="blue"><b>record</b></font> [ <font color="Red">'('</font> Ancestor <font color="Red">')'</font> ]
MemberStatement /...
<font color="blue"><b>end</b></font> <font color="Red">';'</font>
ClassType -> <font color="blue"><b>class</b></font> [ <font color="Red">'('</font> Ancestor <font color="Red">')'</font> ]
MemberStatement /...
<font color="blue"><b>end</b></font> <font color="Red">';'</font>
ArrayType -> <font color="blue"><b>array</b></font> [<font color="Red">'['</font> Bounds/<font color="Red">','</font>... <font color="Red">']'</font>] <font color="blue"><b>of</b></font> TypeElement
EnumType -> <font color="Red">'('</font> Ident {<font color="Red">'='</font> Number} /<font color="Red">','</font>... <font color="Red">']'</font>
Bounds -> Ident1 .. Ident2
</pre>
</blockquote>
<H4>
Arguments
</H4>
<blockquote>
<i>TypeIdent</i>
<blockquote>
Name of the type.
</blockquote>
</blockquote>
<blockquote>
<i>Ancestor</i>
<blockquote>
Optional. Name of the <font color="black"><i>ancestor</i></font> class type or <font color="black"><i>ancestor</i></font> record type.
</blockquote>
</blockquote>
<blockquote>
<i>MemberStatement</i>
<blockquote>
One or more statements that define the variables, properties, and methods of the class or record.
</blockquote>
</blockquote>
The Type statement provides Object Pascal syntax for the Class Statements and Record statements. For example the following statements
<H4>
Example 1
</H4>
<pre>
<font color="blue"><b>type</b></font>
TPoint = <font color="blue"><b>record</b></font>
X, Y: Integer;
<font color="blue"><b>end</b></font>;
TMyClass = <font color="blue"><b>class</b></font>(TObject)
<font color="blue"><b>procedure</b></font> ShowInfo;
<font color="blue"><b>end</b></font>;
<font color="blue"><b>procedure</b></font> TMyClass.ShowInfo;
<font color="blue"><b>begin</b></font>
<font color="blue"><b>print</b></font> <font color="Red">'info'</font>;
<font color="blue"><b>end</b></font>;
</pre>
are equivalent to
<H4>
Example 2
</H4>
<pre>
<font color="blue"><b>record</b></font> TPoint
X, Y: Integer;
<font color="blue"><b>end</b></font>;
<font color="blue"><b>class</b></font> TMyClass(TObject)
<font color="blue"><b>procedure</b></font> ShowInfo;
<font color="blue"><b>begin</b></font>
<font color="blue"><b>print</b></font> <font color="Red">'info'</font>;
<font color="blue"><b>end</b></font>;
<font color="blue"><b>end</b></font>;
</pre>
With the Type statements, you can create array types as well. For example, the following statement:
<H4>
Example 3
</H4>
<pre>
<font color="blue"><b>type</b></font>
TMyArray = <font color="blue"><b>array</b></font> [3..5] <font color="blue"><b>of</b></font> Integer;
</pre>
is equivalento to
<H4>
Example 4
</H4>
<pre>
<font color="blue"><b>record</b></font> TMyArray
<font color="blue"><b>var</b></font> L = 3;
<font color="blue"><b>var</b></font> H = 5;
<font color="blue"><b>var</b></font> fItems[H - L];
<font color="blue"><b>procedure</b></font> Initialize;
<font color="blue"><b>var</b></font>
I: Integer;
<font color="blue"><b>begin</b></font>
<font color="blue"><b>for</b></font> I:=L <font color="blue"><b>to</b></font> H <font color="blue"><b>do</b></font>
fItems[I - L] := 0;
<font color="blue"><b>end</b></font>;
<font color="blue"><b>function</b></font> GetItem(I: Integer): Integer;
<font color="blue"><b>begin</b></font>
result := @ fItems[I - L];
<font color="blue"><b>end</b></font>;
<font color="blue"><b>procedure</b></font> SetItem(I: Integer; Value: Integer);
<font color="blue"><b>begin</b></font>
fItems[I - L] := Value;
<font color="blue"><b>end</b></font>;
<font color="blue"><b>property</b></font> Items[I: Integer]: Integer; read GetItem write SetItem; <font color="blue"><b>default</b></font>;
<font color="blue"><b>end</b></font>;
</pre>
<H4>
See Also
</H4>
<blockquote>
<ul>
<li><a href="#Class Statements">Class Statements</a></li>
<li><a href="#Record Statements">Record Statements</a></li>
<li><a href="#Enum statements">Enum statements</a></li>
<//ul>
</blockquote>
</blockquote>
<a name="Unit Statements"><h3>Unit Statements</h3></a>
<!-------------------------------------------------------------------->
<blockquote>
Creates new namespace.
<H4>
Grammar
</H4>
<blockquote>
<pre>
UnitStmt->UnitName <font color="blue"><b>interface</b></font>
[UsesStmt]
{VarStmt|ConstStmt|ClassStmt|FunctionStmt|ProcedureStmt}
<font color="blue"><b>implementation</b></font>
{VarStmt|ConstStmt|ClassStmt|FunctionStmt|ProcedureStmt}
[<font color="blue"><b>initialization</b></font>
StmtList]
[<font color="blue"><b>finalization</b></font>
StmtList]
</pre>
</blockquote>
<H4>
Arguments
</H4>
<blockquote>
<i>UnitName</i>
<blockquote>
Name of namespace.
</blockquote>
</blockquote>
The unit statement provides Delphi unit syntax for the namespace statement.
<H4>
Example
</H4>
<pre>
<font color="blue"><b>unit</b></font> a;
<font color="blue"><b>interface</b></font>
<font color="blue"><b>type</b></font>
TMyClass = <font color="blue"><b>class</b></font>(TObject)
<font color="blue"><b>procedure</b></font> Proc(x: Integer);
<font color="blue"><b>end</b></font>;
<font color="blue"><b>const</b></font>
x = 10;
<font color="blue"><b>var</b></font>
z: TMyClass;
y: Double;
<font color="blue"><b>procedure</b></font> P(u, v: Double);
<font color="blue"><b>implementation</b></font>
<font color="blue"><b>procedure</b></font> P(u, v: Double);
<font color="blue"><b>begin</b></font>
writeln(u + v);
<font color="blue"><b>end</b></font>;
<font color="blue"><b>procedure</b></font> TMyClass.Proc(x: Integer);
<font color="blue"><b>begin</b></font>
writeln(x);
<font color="blue"><b>end</b></font>;
<font color="blue"><b>initialization</b></font>
writeln(<font color="Red">'start'</font>);
y := 1;
writeln(y);
P(3, 4);
z := TMyClass.Create;
z.Proc(100);
<font color="blue"><b>finalization</b></font>
z.Free;
writeln(<font color="Red">'fin'</font>);
<font color="blue"><b>end</b></font>.
</pre>
</blockquote>
<a name="Uses Statements"><h3>Uses Statements</h3></a>
<!-------------------------------------------------------------------->
<blockquote>
Uses statements are provided to facilitate the use of namespaces.
<H4>
Grammar
</H4>
<blockquote>
<pre>
UsesStmt -> <font color="blue"><b>uses</b></font> NamespaceName, /<font color="Red">','</font>... <font color="Red">';'</font>
</pre>
</blockquote>
<H4>
Arguments
</H4>
<blockquote>
<i>NamespaceName</i>
<blockquote>
Name of a namespace
</blockquote>
</blockquote>
<H4>
Example
</H4>
<pre>
<font color="blue"><b>uses</b></font>
Classes;
<font color="blue"><b>var</b></font>
I, L = TList.Create;
L.Add(2);
L.Add(TObject.Create);
L.Add(5);
L.Add(7);
<font color="blue"><b>for</b></font> I:=0 <font color="blue"><b>to</b></font> L.Count - 1 <font color="blue"><b>do</b></font>
<font color="blue"><b>print</b></font> L[I];
</pre>
</blockquote>
<a name="Var Statements"><h3>Var Statements</h3></a>
<!-------------------------------------------------------------------->
<blockquote>
Declares a variable.
<H4>
Grammar
</H4>
<blockquote>
<pre>
VarStmt -> [<font color="blue"><b>class</b></font>] [<font color="blue"><b>var</b></font>] Variable
[<font color="Red">':'</font> TypeIdent]
[<font color="Red">'['</font>Subscripts<font color="Red">']'</font>][ = Value ] /,...
<font color="Red">';'</font>
Subscripts -> Upperbound /<font color="Red">','</font>...
</pre>
</blockquote>
<H4>
Arguments
</H4>
<blockquote>
<i>Variable</i>
<blockquote>
The name of the <font color="black"><i>variable</i></font> being declared.
</blockquote>
</blockquote>
<blockquote>
<i>Value</i>
<blockquote>
The initial <font color="black"><i>value</i></font> assigned to the <font color="black"><i>variable</i></font>
</blockquote>
</blockquote>
<blockquote>
<i>Class</i>
<blockquote>
Optional. The <font color="black"><i>class</i></font> keyword specifies a static (shared) field of a <font color="black"><i>class</i></font>. Can be used only inside of a <font color="black"><i>class</i></font> body.
</blockquote>
</blockquote>
<blockquote>
<i>Subscripts</i>
<blockquote>
Dimensions of an array <font color="black"><i>variable</i></font>.
</blockquote>
</blockquote>
<blockquote>
<i>Upperbound</i>
<blockquote>
Upper bound. The lower bound of an array is always zero.
</blockquote>
</blockquote>
Use the var statement to declare variables. These variables can be assigned values at declaration or later in your script.
<H4>
Example 1
</H4>
<pre>
<font color="blue"><b>var</b></font> A[30, 4];
<font color="blue"><b>var</b></font> X = [10, 20, 30];
<font color="blue"><b>var</b></font> Y: Integer;
<font color="blue"><b>var</b></font> Z: TObject = TObject.Create;
</pre>
You can use the var statement inside of a <font color="black"><i>class</i></font> body. In such case the statement declares a field of a <font color="black"><i>class</i></font> instance or a static (shared) field of the <font color="black"><i>class</i></font>.
<H4>
Example 2
</H4>
<pre>
<font color="blue"><b>class</b></font> TMyClass(TObject)
<font color="blue"><b>var</b></font> A[10, 2], X;
<font color="blue"><b>var</b></font> Y = [100, 200, 300];
<font color="blue"><b>class</b></font> <font color="blue"><b>var</b></font> Z = 5;
<font color="blue"><b>end</b></font>;
</pre>
<H4>
See Also
</H4>
<blockquote>
<ul>
<li><a href="#Class Statements">Class Statements</a></li>
<//ul>
</blockquote>
</blockquote>
<a name="While Statements"><h3>While Statements</h3></a>
<!-------------------------------------------------------------------->
<blockquote>
The while statement executes its constituent statement repeatedly, testing Condition
expression before each iteration. As long as
Condition returns True, execution continues.
<H4>
Grammar
</H4>
<blockquote>
<pre>
WhileStmt -> <font color="blue"><b>while</b></font> Condition <font color="blue"><b>do</b></font>
Statement
</pre>
</blockquote>
<H4>
Arguments
</H4>
<blockquote>
<i>Condition</i>
<blockquote>
A Boolean expression. If <font color="black"><i>condition</i></font> is undefined, <font color="black"><i>condition</i></font> is treated as false.
</blockquote>
</blockquote>
<blockquote>
<i>Statement</i>
<blockquote>
A simple or structured <font color="black"><i>statement</i></font>.
</blockquote>
</blockquote>
<H4>
Example
</H4>
<pre>
<font color="blue"><b>while</b></font> Data[I] <> X <font color="blue"><b>do</b></font> I := I + 1;
</pre>
<H4>
See Also
</H4>
<blockquote>
<ul>
<li><a href="#For Statements">For Statements</a></li>
<li><a href="#Repeat Statements">Repeat Statements
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?