Delphi的一些重要语法
来源:互联网 发布:公司网络搭建方案 编辑:程序博客网 时间:2024/05/21 01:57
一. 流程控制语句
1.1 Case Statements
case用法1:
case I of
1..5: Caption := 'Low';
6..9: Caption := 'High';
0, 10..99: Caption := 'Out of range';
else
Caption := '';
end;
case用法2:
type
Tperson = record
FirstName, LastName: String[40];
BirthDate: Tdate;
Case Citizen: Boolean of
True: (Birthplace: String[40]);
False: (Country: String[20];
EntryPort: String[20];
EntryDate, ExitDate: TDate);
End;
二. 类型
2.1 过程类型
过程类型用法1:
type
TIntegerFunction = function: Integer;
TProcedure = procedure;
TStrProc = procedure(const S: String);
TMathFunc = function(x: Double): Double;
var
F: TIntegerFunction;
Proc: TProcedure;
SP: TStrProc;
M: TMathFunc;
过程类型用法2:(过程函数作为参数)
procedure FuncProc(P: TIntegerFunction);
过程类型用法3:(引用一个实例对象的方法)
type
TMethod = procedure of object;
TNotifyEvent = procedure(Sender: TObject) of object;
var
MainForm: TMainForm;
OnClick: TNotifyEvent;
...
OnClick := MainForm.ButtonClick;
用法3的类型表示方法指针。方法指针实际上是一对指针:第一个存储方法的地址,第二个存储方法所属的对象的引用。
Ø 过程指针和方法指针是不兼容的
Ø nil 可以赋给任何过程类型
Ø 嵌套的过程和函数(在其它例程中声明的例程)不能被用作过程类型值,内置的过程和函数也不可以。
若想使用内置的过程作为过程类型值,比如Length,你可以给它加一个包装:
function FLength(S: String): Integer;
begin
Result := Length(S);
end;
注意1(在赋值语句中):
左边变量的类型决定右边的过程(或方法)指针的解释,比如
var
F, G: function: Integer;
I: Integer;
function SomeFunction: Integer;
...
F := SomeFunction; // 把SomeFunction 赋给F
G := F; // 拷贝F 到G
I := G; // 调用函数,把结果赋给I
第1 个赋值语句把一个过程类型值赋给F,第2 个语句把这个值拷贝给另一个变量,第3 个语句调用引
用的函数并把结果赋给I。因为I 是一个整数变量,而不是过程类型,所以最后的赋值实际上是调用函数
(它返回一个整数值)。
注意2(在boolean判断中):
在一些情况下,如何解释过程变量并不是很清楚,看下面的语句
if F = MyFunction then ...;
在此情况下,F 导致函数调用:编译器调用F 指向的函数,然后调用函数MyFunction,然后比较结果。
规则是,只要过程变量出现在表达式中,它就表示是调用引用的过程或函数。在上面的例子中,若F 引用一个过程(没有返回值),或F 引用的函数需要参数,则引发编译错误。要比较F 和MyFunction 的过程值,使用
if @F = @MyFunction then ...;
@F 把F 转换为无类型指针变量,它包含的是地址,@MyFunction 返回的是MyFunction 的地址。
注意3:
过程变量可以是nil 值,但此时调用它会引发错误。
要测试一个过程变量是否被赋值,使用标准函数
Assigned:
if Assigned(OnClick) then OnClick(X);
三. 类
四. 接口
- Delphi的一些重要语法
- delphi的一些扩展语法
- delphi一些语法
- 一些重要的属性
- 一些重要的文件
- 一些重要的计数器
- 一些重要的算法
- 一些重要的算法
- 一些重要的算法
- 一些重要的算法
- 一些重要的算法
- 一些重要的算法
- 一些重要的算法
- 一些重要的算法
- 一些重要的算法
- 一些重要的算法
- 一些重要的算法
- 一些重要的算法
- DXperience-7[1].1.1 Sources 源代下载
- 利用MySQLDriverCS实现在.NET环境下访问MySQL数据库
- Delphi常见各类编译错误信息-中英对照
- windows下PHP配置
- 开博啦
- Delphi的一些重要语法
- Vmware在ubuntu feisty 2.6.20内核下编译出错的解决方法
- 是该写点东东了
- 精通Hibernate之映射继承关系四(图)
- 精通Hibernate之映射继承关系五
- 好长时间没登陆写文章了
- 海云庵糖球会(没拍糖球)
- 新人
- 身份证号码验证-支持新的带x身份证