九月星空

日志归档: 2006年07月

DELPHI复习笔记[二]

作者: 2006年07月30日, 分类:Code

简单语句:不包含任何别的语句.赋值语句和过程调用就是简单语句的例子.简单语句用分号隔开.
复合语句:将简单语句用begin和end;括起来即组成复合语句.end之前的最后一条语句末尾分号不是必须的.
 单个分号是一个空语句,空语句可用在循环体或其他特殊情况中.
赋值语句:操作符:= 而 = 在Pascal中用作关系运算符来判断是否相等.
条件语句:分为if语句和case语句.
 要注意的是if-then-else是单纯的一条语句 因此不能在语句中间加分号.
 case语句可以代替复杂的if语句,包括用来选值的表达式,可能值序列.case语句最后可以带一个else语句.
循环语句:包括for,while和repeat语句.
 pascal中的for循环语句较其他语言灵活性比较小,因为它步长只能为1.for语句的循环计数器必须非是数字,可以是任何有序类型的值.
        while-do语句和repeat-until语句的不同点在于前者是先判断后执行,后者先执行后判断,因此至少要执行一次.
 1.while 条件 do 执行语句. 2.repeat 执行语句 until 条件(repaet的条件满足时循环终止 和while-do相反).
 用Break中断循环;Continue跳出此循环进入下一个循环.还有系统过程Exit和Halt可以立即从函数或过程中返回或者终止程序.
With语句:是一种用于简化代码访问记录类型变量(或对象)的语句.
 如var BirthDay: Date;
 begin
 BirthDay.Year := 1997;
 end;
 可以用 with 语句改进后半部分代码,如下:
 begin
 with BirthDay do
 begin
 Year := 1995;
 end;
 end;
 当用对象使用到With时,可以简写代码 如:
1. with Form1.Canvas.Pen do
 begin
 Width := 2;
 Color := clRed;
 end;
2. with Button1 do
 begin
 Width := 200;
 Caption := 'New Caption';
 end;
过程与函数:理论上说,过程是要求计算机执行的操作,函数是能返回值的计算.两者的不同在于:函数
能返回计算结果,即有一个返回值,而过程没有.
过程例子: Procedure guocheng;
   begin
   ShowMessage('hello delphi!');
   end;
函数例子: Function Sum(val1:integer,val2:integer):integer;
   begin
   Result:=val1+val2;
   end;
 调用he:=sum(x,y);
函数中除了引用参数外,还有常量参数 如(const val:integer) 这样当调用函数时常参初始值不受函数影响.
函数重载:编译器允许用同一名字定义多个函数或过程,只要它们所带的参数不同即可.实际编译器是通过检测参数来确定需要调用的例程.
声明函数重载有两条原则:1.每个例程声明后要添加overload;关键字 2.例程间的参数个数或参数类型必须不同,返回值不能用去区分例程.
另外,Delphi的代码参数技术和重载过程与函数结合的非常好,在输入代码的时候提示窗口会显示所有的参数列表.

字符串操作:实际上一个字符串就是一个字符类型的数组.
ShortString 短字符串类型就是传统 Pascal 字符串类型.这类字符串最多只能有 255 个字符,短字符串中的每个字符都属于 ANSIChar 类型(标准字符类型).
ANSIString 长字符串类型就是新增的可变长字符串类型.这类字符串的内存动态分配,引用计数并使用了更新前拷贝(copy-on-write)技术.这类字符串长度没有限制(可以存储多达 20 亿个字符!),其字符类型也是 ANSIChar 类型.
WideString 长字符串类型与 ANSIString 类型相似,只是它基于 WideChar 字符类型,WideChar 字符为双字节 Unicode 字符.
如果只是用String定义字符串,那么该字符串可能是短字符串也可能是长字符串,这取决于$H编译指令的值,$H+(缺省)代表长字符串.
Delphi的长字符串基于引用计数机制,可以动态的使用释放内存.如果增加字符串的长度,而该字符串临近又没有空闲的内存,则字符串被完整的拷贝到另一个储存单元.
此外还可以用SetLength(字符变量,设定最大长度值),这样它会把所需内存预留出来,但实际并没有使用这段内存.
格式化字符串:Format函数其参数包括一个基本文本字符串,一些占位符(由%符号标出)和一个数值数组.数组中每个值对应一个占位符.
如Format ('First %d, Second %d', [n1, n2]);
此外可以在%和占位符之间加入数值来定义长度,值不够长度则在左边填充空白.也可以在数值前加 - 在右边填充空白.
d (decimal) 将整型值转换为十进制数字字符串
x (hexadecimal) 将整型值转换为十六进制数字字符串
p (pointer) 将指针值转换为十六进制数字字符串
s (string) 拷贝字符串、字符、或字符指针值到一个输出字符串
e (exponential) 将浮点值转换为指数表示的字符串
f (floating point)将浮点值转换为浮点表示的字符串
g (general) 使用浮点或指数将浮点值转换为最短的十进制字符串
n (number) 将浮点值转换为带千位分隔符的浮点值

Windows编程(Delphi)
Windows句柄:句柄类型名为THandle.其在Windows单元定义 Type Thandle=LongWord;
句柄数据类型通过数字实现,在Windows中句柄是一个系统内部数据结构的引用.许多WINAPI函数把句柄作为它第一个参数.
句柄是一种内部代码,通过它能引用受系统控制的特殊元素.如窗口 位图 图标 光标 字体 菜单等.Delphi 中很少需要直接使用句柄,因为句柄藏在窗体,位图及其他 Delphi 对象的内部.
外部声明:用来调用动态链接库DLL中的函数.如function LineTo; external 'gdi32.dll' name 'LineTo';
表示函数lineto的代码同名保存在GDI32.DLL中.实际应用中,外部声明中的函数名与DLL中的函数名可以不同.
回调函数:就是能对一系列系统内部元素执行给定操作的 API 函数,例如能对所有同类窗口进行操作的函数.这种函数也叫枚举函数,它是作为参数传递的函数,代表对所有内部元素执行的操作,该函数或过程的类型必须与给定的过程类型兼容.

Variant类型:在 Delphi 和 VCL 中,variant 变量主要是用于 OLE 支持和数据库域的访问.
可以用Variant变量存储任何数据类型,对它执行各种操作和类型转换.但其违反了Pascal语言的一贯原则.而且Variant类型运行很慢.

单元:单元的概念比较简单,单元名与文件名相同而且必须唯一.单元包括界面区(interface)及实现区(implementation),界面区用于声明其它单元能看到的部分;实现区存放界面的实现代码及外部不可见的声明.此外还有两个可选的区,即初始化区及结束区.其中初始化区存放初始化代码,当程序加载到内存时执行;结束区存放程序终止时执行的代码.
unit unitName;
interface
uses
  A, B, C;

implementation
uses
  D, E;

initialization
finalization
end.
界面区头部的 uses 子句表示需要访问的外部单元,这些外部单元中定义了需要引用的数据类型,如自定义窗体内所用的控件.
实现区头部的 uses 子句用于表示只在实现部分访问的单元.比如要调用的函数在外部单元中.
uses语句和include指令不同(C/C++/汇编). uses 语句只是用于输入引用单元的预编译界面部分,引用单元的实现部分在单元编译时才考虑,引用的单元可以是源代码格式(PAS),也可以是编译格式(DCU),但是必须用同一版本的 Delphi 进行编译.
单元的工作空间:
1.局部变量只在定义变量的例程范围内可使用.
2.全程隐藏变量在单元的实现部分声明,这时单元内任一代码块都可以使用它.程序一启动就会为其分配内存.
3.全程变量在单元的界面部分声明,这样任何use它的单元都可以访问它.
4.只要在单元的uses列出某一单元名,那么所列单元界面区中声明的任何标识符该程序都能访问.

留言 : 更多...

找啥捏?

使用下方搜索框搜索本站:

还没找到你想搜索的东东?那就给哥留言或者联系哥吧!

博客链接

随便看看,不收钱的啊……