《Delphi入门与提高》由会员分享,可在线阅读,更多相关《Delphi入门与提高(46页珍藏版)》请在金锄头文库上搜索。
1、Delphi 入门与提高Delphi 基础知识为什么选择 Delphin可视化编程,方便易学n组件众多、编程效率高n建立在BDE上的数据库连结n功能强大的调试器n独立执行的应用,不需要运行库一个简单的例程procedure TForm1.Button1.Click(Sender: TObject);begin Label2.Caption := 嗨!嗨! + Edti1.Text + ,欢迎来到欢迎来到Delphi的的世界!世界!;end;procedure TForm1。Button2.Click(Sender: TObject);begin Close;end;Object Pascaln
2、常量和变量n数据类型n语句n过程和函数n程序结构常量和变量n常量n变量n类型常量常量n常量是在程序中多次引用的固定量的名字。它的值在程序执行期间保持不变,一般也不能改变。n常量的值可以是简单的一个数、一条字符串,也可以是其他常量的计算结果 n语法: const 常量名 = 常量值 n示例: const CITY = 南京; GreatCity = CITY + 是一座历史悠久 的城市; 变量n变量是一个特定数据实体,它有预定义的数据类型,并且可在内存中某个唯一地址存放指定类型的值。n变量可在程序运行的过程中动态的修改。n变量有四个属性:名称、类型、变量值和占用的内存地址。n语法var 变量名1
3、, ,变量名n: 类型;n示例 var iMyAge: Integer; sCityName: String; 类型常量n类型常量不是常量!缺省的情况下,它是静态变量。n只有当设置Assigned typed constants属性为否,或者添加$J-时,类型常量的值才不可以改变。 n语法 const 类型常量名: 类型 = 值; n示例 const MyAge: Integer = 23;数据类型n整数n实数n布尔数n字符串n集合n数组n指针n整数类型类型范围 状态字节数 Integer -231231-1有符号4Cardinal0232-1 无符号4ShortInt -128127 有符号
4、1Int64-263263-1 有符号 8Byte 0255 无符号 2Word 065535 无符号 4实数类型(浮点数)类型范围字节数有效位数Real 5.010-324 1.7103088 1516 Single1.510-453.41038 478 Double5.010-3241.710308 81516 Extended3.610-49511.7104932 101920 Currency-922337203685477.5808922337203685477.5807 81920 数值类型的运算1.算术运算 1.整数:+、-、*、/、div(整除)、mod(取余)。注意“/”运算
5、符所的结果为实数 2.实数:+、-、*、/ 2.逻辑运算 1.、 =、 =、 、 、 = 3.位运算 1.not、 and、 or、 xor、 shl、 shr (位运算只能对整数进行操作 )数值运算的溢出n整数溢出 n除0(EZeroDivide)n上溢(EOverFlow) n下溢(EUnderFlow) 布尔类型 nBoolean类型只有两个值:TRUE和FALSE。n布尔变量支持三中逻辑运算:not、and和or 字符类型类型字符集 字节数 AnsiCharSBCS,MBCS1WideChar Unicode2Char等价于AnsiChar1Pascal 字符串类型 最多字符 字节数
6、字符集 ShortString 2552256 ANSI向后兼容AnsiString23142GB ANSI(SBCS,MBCS)LongString23142GB ANSI(SBCS,MBCS)WidString23042GB Unicode*字符串类型String实际上声明的是AnsiString类型 Null 字符串类型 说明PCharNull 式字符串,ANSI字符,向后兼容PAnsiCharNull 式字符串,ANSI(SBCS,MBCS)PWideCharNull 式字符串,Unicode字符集PString指向String的指针Pointer无类型指针,可以指向任何类型字符与字符
7、串n声明var ch: Char(字符) s: String(Pascal字符串) p: PChar (Null字符串) Name: Array 0.10 of Charn转换p := PChar(s);s := String(p);ch := p1;ch := s1;枚举、子域和集合n枚举:TFontStyle = (fsBold, fsItalic, fsUnderline, fsStrikeOut); n子域:TMyNumber = 1.100; n集合:集合类型名 = set of 元素类型 TFontStyles = set of TFontStyle;TCharSet = set
8、of Char数组n一维静态数组数据类型名称 = Array 下标定义 of 类型名称 n数组的引用数组名称下标n动态数组的长度设定SetLength(数组名称) ntype TIntArr = Array 0.99 of Integer;var MyIntArr: TIntArr或者var MyIntArr: Array 0.99 of Integer;nMyIntArr0 := 10;指针类型n指针存放的并不是真正的数据,而是数据在内存中的地址n指针的值为nil时,代表它没有指向任何数据n指针也有类型,不经过强制类型转换,指针不能指向和自己类型不同的变量。nPointer类型的指针可以指向
9、任何变量nvar p: Pointer;pInt: Integer;iWidth: Integer;niWidth := 30;pInt := iWidth;iWidth := pInt + 1;语句n表达式n赋值语句n复合语句n条件语句n循环语句表达式以及操作符优先级 表达式是由操作符和操作数组成的 操作符有以下优先级操作符优先级 类别 not1单目运算* / div mod shl shr and2乘法运算+ - or xor3加法运算= = in4关系运算赋值语句n赋值语句左右两边必须数据类型一致,或者赋值号右边的数据类型可转化成左边的类型。 n对不同类型间进行赋值时,必须注意数据的截断
10、等可能的错误ns := 你好niWidth := iRight iLeftndSpace := Double(iWidth)复合语句n复合语句以Begin开头,以End结尾,Pascal把它当作一条语句 n复合语句书写时要注意缩进nBegin语句1;语句2;语句n;End条件语句 nIfElseThen 语句 nCase语句IfElseThen 语句 n当布尔表达式为真时,运行语句1,否则运行语句2n语句1后不能加分号nelse总是和最近的if配对nif 布尔表达式 then语句1else语句2;nif 布尔表达式1 thenbeginif 布尔表达式2 then语句1endelse if 布
11、尔表达式3 then语句2else语句3;Case语句n当表达式的值在莫个值域中时,运行相应的语句,否则运行else后的语句nCase 表达式 of值域1: 语句1;值域2: 语句2; 值域n: 语句n;else语句m;end;循环语句n While Do 语句nRepeat Until 语句 nFor 语句while do 语句 n当布尔表达式为真时,将一直运行循环体nwhile 语句中的循环体有可能一次也不运行nwhile 布尔表达式 do语句nwhile 布尔表达式 dobegin语句1;endrepeat until 语句n当布尔表达式为真时,将终止运行循环体nrepeat语句中的循环
12、体最少运行一次nrepeat语句不需要beginendnrepeat语句1;语句2;语句nuntil 布尔表达式for 语句n变量再初值和终值之间时,运行循环体语句n变量只能是序数类型nfor 变量:=初值 to 终值 do语句;nfor 变量:=初值 downto 终值 do语句;break 和 continuenbreak 跳出当前循环ncontinue 不运行后面的语句,直接开始下一次循环nfor i:=0 to 99 dobegin if MyArrIiMax then continue; Inc(iCount);endnrepeat if not Assigned(p) then b
13、reak; until p.Width 10过程和函数n过程和函数统称子程序,都是指一段在程序中被调用的代码。n对于编程者来说,过程和函数主要的不同之处在于函数有返回值,而过程没有。 过程和函数的实现nprocedure 过程名称(参数表);局部声明块;begin可执行语句;end;nfunction 函数名称(参数表): 返回值类型;局部声明块begin可执行语句;Result := 函数返回值end;子程序的参数n子程序名(修饰词1 参数1: 类型1;修饰词n 参数n: 类型n)n如果几个参数修饰词和类型相同(包括都没有修饰词),可以将它们合并到一起;修饰词m 参数m, 参数m+1: 类型
14、m;n类型为数组时,不能带有数组的长度。procedure DoProc(IntArr: Array0.99 of Integer); procedure DoProc(IntArr: Array of Integer); 实际参数和形式参数n实参:调用子程序时,传递给子程序的参数dReal := GetRealValue(x);n形参:子程序实现部分所定义的参数function GetRealValue(Value: Double): Double参数的修饰词n无修饰词:数值参数,相当于函数的局部变量,可以改变,但不影响实参nconst:常量参数,相当于函数的常量,不能改变nvar:变量参数
15、,相当于函数的局部变量,可以改变,并且影响实参nout:外部参数,和变量参数类似,但不提供输入信息。Object Pascal 常用过程与函数n字符串处理IntToStr, UpperCase, Copy n数学计算Sin, MaxIntValue, Round, Random n输入输出WriteLn, Read 程序结构n工程组n工程n单元工程program Project1;uses Forms, Unit1 in Unit1.pas Form1;$R *.RESbegin Application.Initialize; Application.CreateForm(TForm1, Fo
16、rm1); Application.Run;end.单元unit Unit2;interfaceuses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs;type TForm2 = class(TForm) Button1: TButton; procedure Button1Click(Sender: TObject); private public end;var Form2: TForm2;implementation$R *.DFMprocedure TForm2.Button1Click
17、(Sender: TObject);begin Closeend;end.单元的结构nInterface 接口部分只有这里的声明才能被别的单元使用nImplementation 实现部分各子程序的具体实现nInitialization 初始化部分nFinalization 终结部分uses 字句:相当于引用其余单元的声明变量的作用域和生存期变量在何处声明作用域生存期单元的Interface部分变量所在的单元及引用该单元的所有单元和程序相同单元的Implementation部分变量所在的单元和程序相同过程或函数内部 变量所在的过程或函数仅当过程或函数被执行时小结nDelphi 的特点nObject Pascal 语言基础n常量和变量n数据类型n语句n过程和函数n程序结构上机题目n显示一个数字序列,如下:1, 3, 5, , 19n显示杨辉三角形11 11 2 11 3 3 1