当前位置:文档之家› delphi笔记 汇总

delphi笔记 汇总

delphi笔记 汇总
delphi笔记 汇总

第一阶段:delphi基础知识

delphi是borland(宝兰公司)开发的完全面向对像的可视化的程序开发环境,与vb的区别在于两点:

1:vb并不是完全的面向对像的语言,而delphi是完全的面向对像的程序语言

2:delphi在数据库方面比vb操作简单,方法丰富,所以从某种意义上来说,delphi是一门数据库语言

3:在vb中许多内置的函数,都不是对用户开发的,而在delphi中,大多数的函数都是对用户开发的。

第一章

可视化设计的集成开发环境(IDE)

本章重点:

1:组件面板(component palette)

2:对像树状窗口(object tree view)

3:对像检查器(object inspector) 窗体(from)

4:代码编辑器(code editor)

5:代码浏览器(code explorer)

6:工程管理器(on line help)

7:工程结构(project strcutre)

8:工程文件和单元文件的结构

9:联机帮助(on line help)

10:开发一个简单的程序。

delphi提供了一个面向对像的,可视化设计的快速应用程序开发环境。delphi包含的所有快速开发工具都是集成在IDE内,你可以得用这个集成开发环境来帮助你完成整个应用程序的设计。基本上delphi的IDE开发环境包含一些要素。分别是代码编辑器,代码浏览器,窗体,组件面板,对像检查器,对像树状窗口,联机帮助下面将针对IDE的每一个元素组成要素做一番说明:

组件面板:

1:组件是构成delphi应用程序的重要单元。delphi定义自己的组件标准格式,称之为VCL.delphi的VCL组件多达数百个,为了让你这这么多的组件中找出符合程序需要求的组件,delphi就设计了"多个页标签的组件面板"来存放这些组件.

2:组件的切换:

3:自定义组件面板:(单右-->属性)

对像树状窗口:

1:以树形的形式显示窗体中控件的逻辑关系:

2:能够轻易的在许多组件中找到你要找的组件

3:alt+shit+F11或view->oject tree view

对像观察器:

1:是进行可视化编程时使用最为频繁的工具之一,设置窗体和组件的属性,切换设计对像,以及为窗体或组件添加事件处理过程等操作都在对像观察器中进行。

2:对像观察器的组成:

A:对像列表框:用于在窗体上切换对像

B:属性选项卡:显示或设置当前选定对像的属性值[左边:属性名;右边:属性值]

C:事件选项卡:显示或设置对像的响应事件。

D:为一个对像设计事件过程:以按钮的单击事件为列:showmessage('欢迎使用delphi'); 3:对像观察器的切换:F11

4:对像观察器永远保持在最上面[stay on top]

代码编辑器:

A:用来编辑或调试代码的环境:

B:将所有的关键字以粗体来表示,或是以不同的字体颜色来区别代表不同意义的程序快。C:进入代码编辑器的方法:F12(在窗体与代码编辑器之间切换),双击窗口

D:delphi的代码洞察:

1:代码完善:输入对像名.自动弹出提示列表框列出该对像的所有属性和方法:

2:参数提示:输入对像的方法或函数的名再输入一个左括号,系统就会自动弹出一个参数提示框:

3:代码模板:用于提供语句模板以帮助代码的编写。(ctrl+j)

4:符号洞察:在调试状态下,将鼠标指向要监视的变量,delphi会马上把些变量当前的值,显示出来

代码浏览器(在代码编辑器的左边)

作用:

1: 某一个对像的事件要修改时,首先要选中该对像,然后打开ojbect inspect最后找该事件,而通过代码浏览器可以一下子找到该对像的方法

2:类实现:

写一个函数,必须先要定义函数(在interface部分)或过程,然后再编写函数(在implementaion部分)或过程的代码,[可以解决ctrl+shift+c]

3:模块导航:

知道了一个函数或过程的的定义部分,想找到与之对应的实现部分。比较复杂:

快捷方式(ctrl+shift+down或up]

工程管理器:

delphi提供了一个"工程管理器"工具来帮助你管理工程内包含的form组件及unit程序.你可以利用它来打开,添加,保存,删除工程内的form及unitl.

总而言之delphi的工程内的所包含的所有文件,都必须通过工程管理器来管理及维护,你绝对不要使用windows的直接修改或删除工程所属的文件的名及内容.

工程结构:

1:form与unitl的关系:

delphi应用程序开发的过程都是统筹在一个工程(project)之下,所以每个应用程序都是以工程为基本单位。

组成工程最基本的两个程序单位是:form 及unit

form是窗体,unit是源代码,你可以在form上面加上任何组件,则一定会有相对应的源代码,也就是说:只要有form产生,就会有对应的unit。但是一个unit可以单独存在不需要form,比如:我们可以把一个unitl作为一个模块,把里面放上一些函数或过程等。

2:dephi程序的基本组成:

1):*.dpr:工程文件:[view---project scorce]

A:说明整个工程中的单元模块:

B:启动应用程序:

2):*.dfm:窗体文件,保存窗体上各个对像的属性设置[打开窗体view as text]

3):*.pas:单元文件,用来存储过程代码的文件,delphi的每个窗口都有一个对应的单元文件

4):*.res:windows资源文件。里面包含工程应用程序的图标,光标的图标等。这是每一个windows应用程序都必须要的文件。[在工程程序内{SR *.res}命令就是把用来连接此项资源文件的]

5):*.dof,*.cfg:用来存储用户对工程所作的配置选项.

6):*.dcu:编译工程之后产生的目标文件(注意不是:obj)

7):exe文件:按f9运行之后产生的可执行文件

说明:

1):用户只需要保存*.dpr,*.pas等二类文件.其它文件自动生成.

2):保存时,把一个工程内的所有文件保存在同一个文件夹下面.

工程文件和单元文件的结构:

简单介绍一下工程文件与单元文件的结构

联机帮助:是学习和解疑的好工具

开发一个简单的程序(在用户在窗体上移动时,能够showmessage欢迎使用delphi对话框) 1:怎么新建一个工程。

2:怎么样保存一个工程

3:怎么样打开一个工程。

4:怎么运行一个工程。

5:怎么修改工程的图标和标题。

第二章delphi的语法基础

1:数据类型:

A:整型:

1):byte:0---255 [用high和low来测试变量的最大值和最小值]

2):shortint:-128----127

3):smallint:-32768---32767

4):word:0----65535

5):integer:-2147483648----2147483647

6):int64:-2 63----2 63

7):cardinal:4294967295

A:实型:

single:有效位数[7---8]位

real:有效位数[11---12]位

double:有效位数[15---16]位

extended:有效位数[19--20]位

一般用real

B:字符类型:char

用单引号括起来的一个字符:比如:var ch:char;

C:字符串

在delphi中,我们可以使用用两种形式声明的字符串:

string声明的字符串,结尾不含null。

pchar声明的字符串,结尾含有null,这是很多api函数所使用的字符串格式,实际上它是一个指向字符串的指针

区别有以下几点:

1:可以用lentgh来测量两种字符串中所含有字符个数

2:string声明的字符串第一个字符的下标为1,而pchar声明的字符串下标为0

3:对于string字符串要以直接比较大小,而对pchar字符串来说只能够使用函数strcomp 4:一个pchar+'字符串'将变成string类型的字符串,string类型的字符串可以相加,但pchar类型的字符串不能相加

string类型与pchar类型的转换:

string---pchar pchar(字符串)

string与pchar的应用:

dr:=stralloc(20);

getsystemdirectory(dr,strbufsize(dr));

dr:=pchar(strpas(dr)+'\calc.exe');

showmessage(dr);

winexec(dr,SW_SHOWNORMAL);

d:布尔类型:(boolean)只能是false:假,true:真

E:变体类型:(variant)类型不固定,delphi会自动转化:

比如:

var v1,v2,v3:variant;

i:integer;

s:string;

v1:=1;v2:=1.24;v3:='567';v4:=v1+v2+v3;

符号常量:

定义方法:

const

常量名=常量值;

注意以下几点:

1:符号常量必须写在var的下面

2:如果在程序中,某一常数要反复使用很多次,则可以使用符号常量

3:不能在程序中其它位置给常量再赋值

变量:

1:变量的声明:

var

变量名1:类型;

变量名2:类型;

当多个变量具有相同的类型时,可以使用如下格式:

var 变量名1,变量名2....变量名n:类型来声明

2:变量的赋初值:

方法:变量名=值

如果不进行初始化就使用变量系统会:

1:整型,实形:随机2:字符串:为空串3:布尔型:true

运算符与表达式:

1:算术运算符:+,-,*,/,div,mod

说明:

"/":参加运算的数无论是整型还是实型结果都是实型

"div":参加运算的两个数必须都是整数,商也是整数

"mod":取余同上

优先级别:(*,/)>(div,mod)>(+,-)

逻辑运算符:not and or 优先级别:not>and>or

关系运算符:>,>=,<,<=,<>,=

表示:a>10并且要小于20 if (a>10) and (a<20) then 不能if a>10 and a<20 原因是逻辑运算符的优先级别大于关系运算符

字符串运算符:

"+":用来连接两个字符串.

常用函数与过程:

数学函数:

A:abs(x):求绝对值

B:sqr(x):求x的平方

C:sqrt(x):求平方根

D:sin(x),cos(x).

E:int(x),frac(x):返回x的小数部分,round(x):四舍五入之后的整数

随机函数:

random(n):返回大于或等于零且小n的随机数.

random:0<=x<1

random(90)+10 返回10到100之间的数

说明:

为了能产生互不相同的随机数,应在程序启动时调用一次randomize过程以初始化内部随机数产生器

字符处理函数:

lowercase(s):转成小写

uppercase(s):转成大写

comparestr(s1,s2):比较大小,区分大小写

comparetext(s1,s2):是不分大小写的

concat(s1,s2...sn):把s1,s2..sn连成一个新串

pos(substr,s):在字符串s中查找子串substr.

该函数会返回子串在字符串s中的位置,若不在,则返回零。

length(s):用来确定字符串的长度。

copy(s,n,m):从字符串s中截取从n开始的m个字符串

delete(s,n,m):删除从n开始的m个字符长的子字符串[注意:汉字占2个位]

数值与字符串的转换函数:

inttostr,floattostr,strtoint,strtofloat,chr(x):将ascii码值转换成对应的字符。

格式化函数:

format(格式化字符串,数组)

%d,%s,%f:

比如:format('%s删除了%d条记录',['work表',10])相当于"work表删除了10条记录举列:

var i:integer;s:string; i:=3;s=:'我的心';format('%s有%d个',[s,i]);

相当于s+'有'+inttostr(i)+'个'

日期时间函数:

now:返回系统当前的日期和时间:

date:返回日期:

tiem:返回时间:

datetostr,timetostr,datetimetostr

语句的书写规则:

1:每个语句必须以分号";"结束

2:简单的语句为空语句;即什么也不做

3:较为复杂的情况是多个语句用begint和end字围起来,组成复合语句。

比如:

begin

<语句1>

....

<语句2>

end;

赋值语句:

变量名(属性名):=值; [注意不要写成=]

注释语句:为了提高程序的可读性,可以在适当的位置加上一引注释

1:行注释:// 2:块注释:{ }

基本语句的介绍:

1:选择结构:

if 语句

1:if (条件) then

begin

语句体

end;

2:if (条件) then

begin

语句体

end

else

begin

语句体

end;

说明:

1:else上面的语句不能有分号

举列:#8:backspace,#46:小数点#48---#57 (0---9)

case 语句

格式:

case 表达式of

常量表1:语句1

常量表2:语句2

......

常量表n:语句n

else

其它语句

end;

说明:

1:表达式的值必须是顺序类型(整型,字符型,布欠型)

2:常量表中的值应该是"表达式"中可能具的值,各常量之间用逗号分隔,所有常量必须不同

3:else可以省略。

4:else表示没有匹配的项时,就做else.

举列:

2:循环结构:

1: while 语句

格式:

while (条件) do

begin

语句体

end;

说明:

1:可以在while里面设置break语句,强制退出循环

2:可以在while里面设置contiune语句,来结束本次循环。

举列:

2:for语句

格式:

for 循环变量:=初值to|downto 终值do

begin

语句体

end;

1:可以在for里面设置break语句,强制退出循环

2:可以在for里面设置contiune语句,来结束本次循环。

举列:

3:repeat

begin

语句体

end;

until (停止循环的条件)

第三章:过程与函数

过程与函数是程序设计中重要的概念,也是实现结构化程序设计思想的重要手段。

什么是过程:

过程(procedurce):是没有返回值的。

过程的分类:

1:标准过程:系统内部已经定义好的过程,无须编写如:copy,delete等。

2:用户自定义过程:必须由用户自行编写代码以完成指定的操作。

包括:事件过程,通用过程

A:事件过程:依附于对像,当该对像的的某个事件被触发,就会去执行事件过程。比如:onclick等。

B:通用过程:告诉应用程序如何完成一项指定的任务,不与任何对像相联系。

事件过程的创建与调用:

创建:在objectonspector器中选择相应的事件直接编写代码。

说明:一个事件过程可以被多个对像,多个事件共享

举列:

通用过程的创建与调用:

A:创建只能在本单中使用的通用过程:[此时不要声明]

直接写在implementation 的下面{$R *.dfm}

procedurce 过程名(形叁表);

[局部声明]

begin

过程体

end;

B:创建能够在其它单元中使用的过程:

第一步:必须首先要在interface部分声明

第二步:在实现部分写下实现代码

说明:

1:形参表由若干个形式参数组成,它决定了调用过程传递给过程的实参个数和类型。所有形参必须说明类型,相同类型的形参之间用逗号隔开,不同类型的形参之间用分号隔开.

2:加上var表示传址,不加表示传值

举列测试:[定义两个数交换的过程]

例:用一个过程实现1到n的阶层,实现交换两个变量的值

函数:有返回值。

定义格式:

function 函数名(形参表):函数类型;

[局部声明]

begin

函数语句

end;

函数与过程也分成在本单元中使用的和能够在其它单元使用的。

说明:

1:函数的返回值通过result关键字或函数名返回

列如:

function fat(n:integer):integer;

var

t,i:integer;

begin

t:=1;

for(i:=1 to n do

t:=t*i;

result:=t或fact:=t)

end

函数的调用;

t:=函数名(实参列表)

举列:

总结:在实际开发项目中,我们都是创建一个单元,然后把工程中要用到的函数或过程都放在这个指定的单元中举列]

过程或函数的重载(method overloading)

在delphi在,充许有名字相同而参数不同的过程或函数,这就是过程和函数的重载(overload)

比如:

[可以在函数或过程后面加上overload关键字就行了]

procedurce test1(v1:integer);overload

procedurce test2(v1:string);overload

为什么要使用重载:

1:举列说明:

2:随便以后维护程序。比如你写了一个test的函数,里面包含了一个整型参数,当程序执行了一段时间之后,需要test2函数必须也能处理字符串型参。有了重载,你就不必须要再写另外一个函数了。

过程或函数的默认参数:

比如:

procedurce test(A:integer=3);

说明:

1:不能同时把一个默认值指定给多个参数,

function myfun(x,y:integer=3):integer;[错]

改成:function myfun(x:integer=3;y:integer=3):integer;

2:当你声明的函数具有一个以上的参数时,你必须由右到左来指定默认的值,如果最右的参数没有默认值,那么其它的叁数也不充许指定默认值

如:

pocedurce mypro(i:integer=3;s:string)[错错]

变量,过程或函数的作用域

1: 单元的接口部分与实现部分:

A:接口部分(interface):用来声明其它单元可以访问的类型,常量,变量,函数和过程.其中的函数和过程只需要列出它们的首部而在实现部分(implementation)进行实现

B:实现部分:用来实现在interface部分声明的函数和过程。即给出这些函数和过程的完整实现代码。在实现部分也可以声明类型,常量,变量,函数和过程。但它们仅仅能作为本单元的私有部分

2:公有变量与私有变量:

在单元的接口部分声明的变量属于公有变量,可以被其它单元引用。

在单元的实现部分声明的变量属于私有变量,不能被其它单元引用。

[注意与类form中定义的区别开来]

第四章:枚举,子界,集合,指针,数组,记录类型

枚举类型:

有些数据的个数总是有限的。而且可以一一列举出来,为此delphi提供了一种类型为权举类型

如:星期:(只有星期一到星期日)

颜色:(红,绿,蓝,白,黑)假定某个物体只能取这五种颜色

A:枚举类型的定义:

type

类型名称=(标识符1,标识符2...标识符n)

比如:

type color=(red,blue,green,white,black);

说明:

1:类型标识符是用户自定义的枚举类型名称.

2: 标识符表示该类型数据中元素。以后该类型的元素就只能够取这些值

3: 枚举常量不充许在同一个枚举型定义中重复出现

4: 枚举常不充许在不同类型定义中重复出现

B:枚举型变量的声明:

var c1,c2:color;

C:枚举类型的运算:

从本质上讲,枚举类型不过就是用一些枚举常量来表示一组连续的整数,这些枚举常量就像符号常量,是整数的形像化表示。

1:使用函数如:type week=(sun,mon,tue,wed,thu,fri) 则

ord(tue)=2 low(week)=0 high(week)=5 [用CharCase属性来说明枚举类型在delphi的应用]

子界类型:

在实际的应用中,许多的变量的取值都有一定的限制的。如每年的月份数在1---12之间。等。也就是说这种类型的变量可以取很多值,但是它们只能取在类型中定义的某个范围之内的值,这就是子界类型。

A:子界类型的定义:

type

类型名称=常量1..常量2;

比如:type moth=1..12;

说明:

1:子界的上界必须不小于界

B:子界类型变量的声明:

var m1:month;

也可以不经过类型定义而直接定义子界类型的变量

比如:m1,m2:1..12;[这样m1或m2就只能够取1到12之间有每一个值了] C:子界类型所充许的运算其类型所充许的运算完全一致。

集合类型:

集合是指具有相同性质且可以相互区分的对像的全体。构成集合的各个对像,称为集合的元素。如小于100的正整数全体等。在delphi中许多对像的属性被定义为集合类型。

A:集合类型的定义:

type

类型名称=set of 类型

说明:类型表示集合中各个元素的类型,可以是字符型,布尔型,枚举型和子界型等。不能是整型,实型

比如:

numbers=set of 1..100 直接可出枚举类型或子界类型。

uchar=set of 'a'..'z';

color=set of (red,green,yellow,white)等。

也可以先定义枚举或子界类型再定义集合类型如:

type

color=(red,green,yellow,white);

tcolor=set of color;

说明:

在delphi中,集合元素的个数最多不能超过256个,因此类型的序数值必须在0-255之间。由于整型数据的取值范围是-32768----32767之间,所以类型不能是整型。且子界类型只能在0-255范围内。

以下定义是错误的:

type numbers=set 100..300;

B:集合变量的声明:

如:

type

color=(red,green,yellow,white);

tcolor=set of color;

var

colo1,colo2:tcolor

也可以不经过定义直接声明集合类型的变量

var

c1:set of (red,green,yellow,white)等。

C:集合变量的取值:

集合变量的取值称为集合值。它是基类型元素的一个集合。集合值一般用方括号括起来的元素序列,元素和元素之间用逗号隔开。

比如:

type

colors=(read,yellow,blue);

tcolor=set of colors;

var

co:tcolor;

则:

co=[],co=[red],co=[red,yellow]等。

说明:

1:集合变量中重复元素被视作同一个元素。如:[red,yellow] =[red,yellow,red]

2:若集合中的元素连续出现,则可以写成子界的形式如集合[0,1,2,3,4,5,6,7,8,9]等于[0..9] 集合的运算:

1:并运算:[1,2,3]+[2,3,4]=[1,2,3,4]

2:差运算:[1,2,3]-[2,3]=[1]

集合的关系运算:

元素对集合的属于运算:

2 in [3,2] true;

4 in [3, 2] false等。

集合关系的相等运算:

[2,3]=[3,2] true

集合在delphi中的应用:

1:字体样式:fontstyle

2:对文本框的限制:key in ['0'..'9',#8]

3:对shift键的限制:

数组:

1:一维数组:

定义:

type

数组类型标识符=array[长度] of 元素类型

比如:

type

myar=array[1..5] of integer

myte=array[1..5] of string

定义了数组类型之后,再定义变量:

var

t1:myar;t2:myte;等

当然也可以把数组的类型定义和数组的变量的定义合二为一如:

var

test1,test2:array[0..4] of real等。

要访问数组里面的元素可以用数组名加上方括号来表示如:test1[0]:=3.4等。

函数low,high这两个函数可以返回一个数组的最小下标和最大下标。而通过函数length可以返回数组的长度。如low(test1)=0 high(test1)=4 length(test1)=5

2:二维数组:

定义:

type

数组类型标识符=array[行长度,列长度] of 元素类型

如:

type

tp=array[0..3,0..4] of integer [3行四列]

定义变量:

var

tp1:tp; 或tp1:array[0..3,0..4] of integer;

引用:

tp1[2,3] 不是tp1[2][3]

说明:

1:在一个var里面定义的两个数组之间可以可以整体赋值

如:

var

ar1,ar2:array[1..4] of integer;

var

ar3:array[1..4] of integer

可以执行: ar2:=ar1;

但是不能执行:ar3:=ar1;

2:可以把数组作为过程的参数:

如;

procedure myporc(x:array of string)

begin

.....

记录类型:

相当于我们C语言里面的结构体

定义:

type

记录类型标识符=record

成员1:类型;

成员2:类型;

....

成员n:类型;

end;

比如:

type

right=record

mc:string;

name:string;

righ:string;

end type

指针类型:

定义:

type

指针类型标识符=^基类型。

比如:

type

st=^string; 或pi=^integer;

定义指针类型的变量:

var

test:st;

指针的运算:

new:用于在程序中为动态变量分配一块区域,并把该区域的地址赋给指针变量。所分配的大小由指针所指的类型决定,当调用了new过程后,程序就可以用"p^"[相当于*p]作为指针所指类型的动态变量。。相应地当程序不再使用动态变量时,就应当调用dispose删除new创建的动态变量。并释放所分配的空间。

比如:

type

pi:^integer;

var

p1,p2:pi;

p:integer;

p:=20;

p2:=@p;//使p2指向整型变量p

new(p1);//p1没有指向任何变量,而是通过调用new函数在内存中找一快空闲的单元分配给p1

p1^:=20 [p1所指向的单元赋值为20]

p2^:=20 [p2所指向的单元即p值为20]

@操作符:相当于C里面的&取地址符

第五章:vCL各组件的介绍:

控件的画法:

1:选定控件:

2:控件的缩放和移动:

缩放:1:直接拖动(不精确),2:按住shift+方向键(精确)

移动:1:直接拖动2:按住ctrl+方向键

3:控件的复制,删除,对齐,大小

4:控件的锁定:

窗口组件:

属性:

height,width,top,left,position,align,color,alphablend(透明),alphablend(透明值)

hint,keypreview,showhint,windowstate等

align(相对于屏幕的对齐方式)

1:albottom:屏幕下方[宽度为整个屏幕宽(width属性失效)

2:alclient:窗体占据屏幕的全部(height,width属性失效)

3:aleft:窗体占据屏幕的左边(height失效)

4:alnone:窗体的宽和高取决于width,height)

5:right:

6:altop:

只有当align属性为alnone时,postion才有效

1:podesigned:位置由left,top来决定

2:posscreencenter:屏幕中央

窗体的外观与风格:

bordericon:用于定制窗体的标题栏:

1:bisystemmmenu:含系统菜单

2:biminimize:含有最小化按钮

3:bimaximize:含有最大化按钮

borderstyle:用于确定窗体边界的类型

1:bsdialog:标准对话框风格,运行时不能改变窗体大小(只有关闭按钮)

2:bsnone:无边框线

3:bssingle:有最小化,最大化,关闭,不能改变窗口大小.

windowsstyle:用于设置窗体运行时的显示状态.

1:wsnormal:窗体的位置与大小由设计时位置大小决定

2:wsminmal:最小化

3:wsmaximized:最大化

窗体事件:

on create 建立窗体时.on show:显示窗口体;onactive:激活窗体时.onclose:窗体关闭时

事件的先后顺序:on create---->onactive---->onshow

窗体的方法:

close:关闭窗口

show:显示窗口

hide:隐藏窗口

free:把窗口在内存中释放。

update:重新刷新窗体。

多窗口的启动窗口(设置主窗口)

不同窗口的互访:引用单元(做一个不同窗口互访的实例)

模态窗口:

窗口的动态创建.

窗体应用:

1:怎样在关闭窗口之前加入确认对话框

2:怎么实现无标题栏的窗口移动

ReleaseCapture;

SendMessage(form1.Handle, $00A1, 2, 0);

3:编写的应用程序同时只能有一个窗体在内存中运行:

h:=findwindow(nil,'form1');

if h<>0 then

halt;

findwindow的说明:

Long,找到窗口的句柄。如未找到相符窗口,则返回零。

参数表

参数类型及说明

lpClassName String,指向包含了窗口类名的空中止(C语言)字串的指针;或设为零,表示接收任何类

lpWindowName String,指向包含了窗口文本(或标签)的空中止(C语言)字串的指针;或设为零,表示接收任何窗口标题

4:怎样把窗体放在最前面:

5:怎样继承一个窗体[inherit]

application组件与其应用。

applicatioin组件是一个非可视化的组件,它代本着应用程序本身,有许多方法和属性: 属性:

1:E x e N a m e:

2:M a i n F o r m:

3:I c o n

4:Ti t l e:

5:S h o w H i n t:

6:MessageBox:

7:P r o c e s s M e s s a g e s ( ) 如果程序正在执行一个很长的循环而又不希望中断其他代码的执行(诸如响应“放弃”按钮),这时候就要用到

8:R u n:

9:Minimize:最小化:

10:Terminate:终止应用程序[halt是一个过程]

11:HintColor,HintHidePause,HintPause

screen组件:

1:Width

2:height

3:Cursor:

4:HintFont:提示文本的字体

5:Fonts:屏幕字体

6:FormCount:窗口个数

7:Forms[i]:第几个窗体

与输入和输出有关的控件

1:label:标签

属性:

caption:标签所显示的文本:

showaccelchar:决定是否可作为按键字符的标记

autosize,alignment,layout:是否折行显示,transparent:背景是否透明

font,colr,visible,left,top等。

2:edit控件

属性:

1:autoselect:编辑框得到焦点时,文本是否自动被选中

2:autosize:编辑框是否自动随字体的变化而改变大小

3:enable,borderstyle,maxlength,passwordchar,readonly.

4:selstart,seltext,sellength,text,charcase:控制编辑框的文本的大小写。

5:cursor,hint,imename,showhint

方法:keypress:键盘按下时,editexit:退出编辑时,onenter:得到焦点时

应用:

3:memo控件:用来存储较长的字符串

属性:除了edit控件的属性外还添加了以下属性:

lines:按行处理文本:

modified:确定文本是否被改动过

scrollbars:决定是否具有滚动条

wordwrap:是否能换行

wantreturns:是否能插入"回车键"

说明:

1: lines对像用来存放备注框的文本。例如:

memo1.lines[0]:表示第一行memo1.lines[1]表示第二行等。

2:在代码中可以调用lines对像的相应方法处理备注框中的数据。

A:memo1.lines.add('增加一行');

B:memo1.lines.delete(5):删除第六行

C:memo1.lines.insert(3,'插入一行'):在第4行插入一行

D:memo1.lines.move(2,4):将第3行移动到第5行

3:单击属性窗口lines属性值右端的"..."可以直接编辑

举列:

方法:

lines的loadformfile方法可以方便的将文本文件读入memo对像中

lines的savetofile方法可以将memo对像中的文本写入磁盘

举列:

4:maskedit控件(掩码控件,可以格式化的编辑框)

说明:

0:此处只能够输入数字,而且一定要输入:

9:引处只能够输入数学,但不定要输入

L:输入英文字母或汉字,一定要输入:a---z

I:输入英文字母或汉字,不一定要输入:

"\":表示按原样显示:

#:输入数字或正负符号

[注意汉字点两个字节]

5:richedit组件:

属性:

alignment:文本的对齐方式

注意该属性只能够在设计时有效,要在运行进行文本以齐的设定需要写入:

richedit1.Paragraph.Alignment:=tacenter;

font:文字的字体

SelAttributes:选文本的操作。比如:

selattribute.Size[对选中文本的字体进行操作]

SelAttributes.Color,

selattribute.Style,SelLength,SelStart,seltext,Lines,

PlainText:(true)存为*.txt false存为rtf格式

方法:

Clear,ClearSelection,CopyToClipboard,CutToClipboard,

findtext('查找的字符串',开始查找的位置,查找的长度) [一定要把hideselect 设为flase]

wordwarp:自动换行,print

做一个简单的文本编辑器:

richedit1.SelStart:=0;

richedit1.SelLength:=0;

richedit1.SetFocus;

for i:=1 to strtoint(edit1.Text)-1 do

richedit1.Perform(WM_KEYDOWN,vk_down,0);

richedit1.SetFocus; //转到第几行

补充知识点:

1:如何把一个文本拖放到一个程序中,让程序来打开这个文件。

system.ParamCount:得到参数的个数

system.ParamStr(i):得到第i个参数的值。

ParamStr(0):表示应用程序本身.

ParamStr(1):表示拖去的文件。

使用对话框:

A: 信息对话框:

1:showmessage('信息内容'):

说明:

A:该过程以应用程序的执行文件名作为标题,对话框中只含有一个ok按钮

B:信息内容指定对话框中显示的内容,可以使用硬回车#13来使用文本换行。

如:showmessage('我'+#13+'是');

2:showmessagefmt(信息内容,参数组)

比如:showmessagefmt('%s已进球%d',['上海队',11]); [标题是应用程序的标题]

3:messagebox(窗口的句柄,显示的信息内容,标题,按钮类型)

警告信息:49[有取消;按确定按钮返回的值:1,取消:2],48[没有取消]

询问:33 [取消:2,确定:1]

错误:16

一般:0

4:application.MessageBox

一般用第三个

B:输入对话框:

inputbox函数:

格式:字符串变量=intpubox('标题','信息内容','默认字符串')

说明:

如果用户单击"确定"按钮则输入框中的文本将返回字符串变量中,若用户单击"取消"按钮将将默认内容返回字符串变量。

举列:求两个数和

C:panle组件:

panle组件它是一个容器组件,除此之外,它还可以显示三维效果。

属性:

1:bevelinner:内层边框斜面的类型。

2:bevllouter:外层边框斜面的类型。

3:bevelwidth:斜面的宽度

4:borderstyle:边框的类型。

5:borderwidth:内层与外层边框之间的宽度

举列:

D:groupbox组件:

A:属性:

caption,font

按钮类组件:

A:button组件:

属性:caption,cancel,default,modalresult[关闭一个模态窗口,并返回一个指的值]

显示窗体的两种形态:

1:实态

2:模态:当这个窗口没有关闭之前,不能对其它窗口不能操作

模态举列:

B:bitbtn组件:可以显示图片

属性:

glgph:为按钮指定一个图片

kind:决定bitbutton按钮的种类

layout:控制按钮中位图与文本的相对位置

margin:控制位图与按钮边界之间的距离

space:控制按钮位图与文本之间的距离

C:checkbox组件:

属性:

checked:用于确定复选框是否被选中

D:radiobutton组件

属性:checked,font,color

E:radiogroup控件

属性:

colums:设置单选按钮的列数

items:设置各单选按钮的标题

intemindex:单选按钮中被选中按钮的序号[从0开始]

举列:注意:items.strings[i]的用法或items[i]

F:speedbutton控件:

1:可以显示位图;

2:还具有单选按钮组一样充许一个人被按下

3:它单独使用时可以像复选框一样,具有开关的功能

属性:

delphi面试题及答案

delphi面试题及答案 【篇一:delphi程序期末试题答案】 一、单选题(每小题2分,共30分) 1.在 radiogroup 组件中有 4 个单选框,当选中第 2 个单选框时,radiogroup 组件中的 itemindex 属性值应为(b)。 a.0 b.1c.2d.3 2.函数和过程的区别为(a)。 a.函数执行后返回一个值,而过程不需返回值b.过程执行后返回一个值,而函数不需返回值c.过程在被调用时,能执行某种特殊功能并能返回到调用它的地方d.函数在被调用时,能执行某种特殊功能并能返回到调用它的地方3.32 and 27 的值是(b)。 a.59b.0c.27d.32 4.窗体与数据模块的扩展名是(b)。 a..dcu b..dfm c..pas d..dpr 5.delphi 中用什么函数来析构一个组件(c)。 a.constructor b.destroy c.free d.create 6.一个指针变量ptr 的域成员 fs 访问的方法是(c)。 a.ptr-fs b.ptr.fsc.ptr^fs d.ptr@fs 7.type aarrays=[1?8,1?5] of integer ,该类型定义了多少个下标元素(d)。 a.45 b.54 c.48 d.40 8.delphi 的所有类都是从什么类继承下来的(b)。 a.tcomponent b.tobject c.tstream d.tnull 9.定义构造函数时用到的保留字是(c)。 a.class b..implementation c.create d.construction 10.下列组件中属于可视组件的是哪一个(d)。 a.tdatasource b.topendialog c.ttable d.tscrollbar 11.设有过程 procedure pro(var x,y:integer); 变量 a , b 为整型 变量,其值分别为 5、6,则合法的过程调用语句是(a.pro(5,6) b.pro(5,b) c.pro(a,6)d.pro(a,b) 12.下列组件中不能获取焦点的是(b)。 a.tedit b.tlabelc. trichedit d.ttreeview13.定义抽象类必 须使用的指令字是(a)。 a.abstractb.virtualc.dynamicd.override” 14.delphi是哪个公司的产品(c)。 a. microsoft b.ibm c.borland d.dom

delphi常用函数大全

delphi常用函数大全(转) Abort函数引起放弃的意外处理 Abs函数绝对值函数 AddExitProc函数将一过程添加到运行时库的结束过程表中 Addr函数返回指定对象的地址 AdjustLineBreaks函数将给定字符串的行分隔符调整为CR/LF序列Align属性使控件位于窗口某部分 Alignment属性控件标签的文字位置 AllocMem函数在堆栈上分配给定大小的块 AllowGrayed属性允许一个灰度选择 AnsiCompareStr函数比较字符串(区分大小写) AnsiCompareText函数比较字符串(不区分大小写) AnsiLowerCase函数将字符转换为小写 AnsiUpperCase函数将字符转换为大写 Append函数以附加的方式打开已有的文件 ArcTan函数余切函数 AssignFile函数给文件变量赋一外部文件名 Assigned函数测试函数或过程变量是否为空 AutoSize属性自动控制标签的大小 BackgroundColor属性背景色 BeginThread函数以适当的方式建立用于内存管理的线程 BevelInner属性控件方框的内框方式 BevelOuter属性控件方框的外框方式 BevelWidth属性控件方框的外框宽度 BlockRead函数读一个或多个记录到变量中 BlockWrite函数从变量中写一个或多个记录 BorderStyle属性边界类型 BorderWidth属性边界宽度 Break命令终止for、while、repeat循环语句 Brush属性画刷 Caption属性标签文字的内容 ChangeFileExt函数改变文件的后缀 ChDir函数改变当前目录 Checked属性确定复选框选中状态 Chr函数返回指定序数的字符 CloseFile命令关闭打开的文件 Color属性标签的颜色 Columns属性显示的列数 CompareStr函数比较字符串(区分大小写) Concat函数合并字符串 Continue命令继续for、while、repeat的下一个循环 Copy函数返回一字符串的子串 Cos函数余弦函数 Ctl3D属性是否具有3D效果 Cursor属性鼠标指针移入后的形状 Date函数返回当前的日期 DateTimeToFileDate函数将DELPHI的日期格式转换为DOS的日期格式DateTimeToStr函数将日期时间格式转换为字符串DateTimeToString函数将日期时间格式转换为字符串 DateToStr函数将日期格式转换为字符串

Delphi程序设计复习题

《Delphi程序设计》复习题 一、单项选择题 1、下面哪句话对Delphi的描述是正确的()。 A.只能用于数据库客户端开发的工具B.Delphi的编程语言全部是面向过程的C.Delphi的编程语言是Java D.面向对象的可视化的开发环境 2、在Delphi中,建立一个文本编辑区域,可采用下列()。 A、命令按钮 B、文本标签控件 C、Edit控件 D、Timer控件 3、表达式60 +19 div 2 的值是() A.67 B.79 C.69 D.80 4、一个Delphi应用程序必有一个()文件和至少一个单元文件。 A) 执行程序B) 项目C) 数据D)图形 5、最适合于在工具栏上放置的工具按钮是() A.Button B.RadioButton C.SpeedButton D.BitBtm 6、Delphi应用程序设计基于()语言。 A) Basic B) C++ C) Pascal D) Object Pascal 7、下列表达式中()不是布尔表达式。 A) A=3 B) A div B C) A and B D) A>B 8、“x 是小于100的非负数”的Object Pascal表达式是()。 A.0 ≤x < 100 B.x >= 0, x<100 C.(x >=0) AND (x < 100) D.(x >= 0 ) OR (x<100) 9、利用Image对象的哪个属性设置,可以使加载的图像自动放大或缩小,以适应Image的显示区域() A.Stretch B.AutoSize C.Align D.Center 10、工具栏上的一个SpeedButton按钮如果要设置为状态按钮,则正确设置的方法是() A.将SpeedButton按钮的GroupIndex属性设置为0,且AllowAllUp属性设置为True。 B.将SpeedButton按钮的GroupIndex属性设置为0,且AllowAllUp属性设置为False。 C.将SpeedButton按钮的GroupIndex属性设置为非0值,且AllowAllUp属性设置为True。 D.将SpeedButton按钮的GroupIndex属性设置为非0值,且AllowAllUp属性设置为False。 11、要改变一个对象的高度,应使用属性()。 A、Font B、ForcColor C、Name D、Height 12、表达式30 +19 div 2 的值是() A.37 B.49 C.39 D.40 13、下列合法的变量名是()。 A、na + e B、e- 3r C、r_3 D、5we

Delphi常见错误代码

Delphi常见错误代码及中文解释 ';' not allowed before 'ELSE' ElSE前不允许有“;” '' clause not allowed in OLE automation section 在OLE自动区段不允许“”子句 '' is not a type identifier 不是类型标识符 '' not previously declared as a PROPERTY 前面没有说明PROPERTY 'GOTO

delphi1

一、单选 1)下列符号哪一个是Delphi中的合法变量名() A 6book B if C name[1] D count1 2)下列常量说明中哪一个是合法的() A const c:=(b>4.5); B const c:8.6; C const c=3.2; D const c:=”book ”; 3)下列实数中哪个是不合法的( ) A 0.45E+02 B .25+2 C 25E -3 D 24.67 4)设n为整型变量,其值为4568,表达式(n mod 1000)div100 ( ) A 分离出个位数字B分离出千位数字 C 分离出百位数字D分离出十位数字 5)有下面的程序段: a:=false; b:=false; c:=true; x:=20; if a then x:=x-10; x:=30; if b then if c then x:=34; else x:=15; 假设所有变量都已定义,程序段执行后x的值() A 15 B 20 C 34 D 30 6)有下面的程序段: ch1:= 'z'; ch2:= 'x'; if ch1 <>'x' then case ch2 of 'x': case ch1 of 'z': s:= 'xy'; 'y': s:='xz'; end; 'y': s:='yy'; end; 假设所有变量均已说明,程序段被执行后s的值是()。 A 'xz' B 'yy' C 'xy' D xy 7)有下面的程序段: i:= 1; repeat n:= i * i; i:=i+2; until n>2*i; 假设所有变量均已说明,循环体执行的次数()。 A 1 B 2 C 3 D 4 8)有下面的程序段: s:= 100; n:= 3; for ch:= 'a' to 'e' do if not odd(n) then s:=s-n; n:=n+5; 假设所有变量均已说明,s的值()。 A 100 B 97 C 61 D 74 9)以下正确的枚举类型定义是:( ) A type vowel=('a','e','i','o','u'); B type num=(1..3,8..10); C type color=(red,blue,greeen); D type realtype=(1.5,2.5,3.5,4.5); 10)集合表达式[1,2,3]+[4,5,6,1,2]的值为:( ) A[1,2,3,4,5,6,1,2] B [1,2,3] C [4,5,6,1,2] D [1,2,3,4,5] 11)Delphi没有用到的文件类型有() A、.frm B、.pas C、.dfm D、.dpr

delphi try except语句 和 try finally语句用法以及区别

一、异常的来源 在Delphi的应用程序中,下列的情况都比较有可能产生异常。 (1)文件处理 (2)内存分配 (3)Windows资源 (4)运行时创建对象和窗体 (5)硬件和操作系统冲突 二、异常的处理 (1)try…except…end; 在try体内的代码发生异常时,系统将转向except部分进行异常的处理。这是Delphi处理异常的最基本的方式之一。 (2)try…finally…end; 这种异常处理结构一般用于保护Windows的资源分配等方面,它确保了无论try体内的代码是否发生异常,都需要由系统进行最后的统一处理的一些Windows对象的正确处理。 和try…except…end不同,该结构的finally部分总被执行。 (3)不存在try…except…finally…end结构来既处理异常,又保护资源分配的结构,但是,try…except…end结构允许嵌套到try…finally…end结构中,从而实现既处理异常,又保护资源的分配。 三、异常的精确处理 (1)定义一个异常。 在Delphi中,每个异常都是Exception[1]类的一个派生类[2]。因此,定义一个异常就是定义一个Exception类的派生类。 type EMyException = class(Exception); 当然,基类可以是Exception或者Exception的任何一个任何层次的派生类。 (2)在程序中抛出一个异常。 根据不同的情况抛出异常是使用异常的最基本的模式。在Delphi中,由raise语句来实现。 【语法】raise 异常类.Creat e(‘异常的缺省说明’); (3)在try…except…end中更加精确的捕捉异常。 使用on E:异常类do…结构可以在do体内处理特定异常类所抛出的异常。 四、异常的调试 在Delphi IDE中,解除“Debugger Options”(可以使用菜单 Tools—>Debugger Options…进行访问)中的Integrated Debugging复选框的勾选状态可以进行异常的调试。 五、异常的补充说明

Delphi程序填空

试卷代号:2235 中央广播电视大学2008—2009学年度第二学期“开放专科”期末考试 Delphi程序设计试题 2009年7月 一、填空题(20分,每空2分) 1.结构化程序设计要求程序中仅采用——三种控制结构,其中每种结构只能有一个入口和一个出口。 2.现实世界中对象具有自己的状态和行为。对应着,面向对象技术中的对象可以具有自己的属性和——。 3. Delphi应用程序中项目文件的扩展名是——。 4. 在设计阶段,利用Image对象的——属性,可以加载一幅图片。 5.时钟组件(Timer)能有规律的以一定时间间隔触发——事件,并执行该 事件过程中的程序代码。为了使计时器控件丁imerl每隔0.5秒就触发一次并执行事件代码,应将Timerl控件的Interval属性设置为——。 6.Delphi程序与数据库之间进行数据交换一般要由多个数据库组件协作完成。如果用户要查询数据库中的一条信息,该指令通过用户界面组件发出,经数据源组件到达数据集组件。数据集组件利用——组件与数据库建立连接,并读取数据库中的数据,而后又经过组件将数据送到用户界面组件中显示。 8.利用对象的LineTo等绘图方法,可以绘制基本图形。 二、单项选择题(30分,每题3分) 1.Delphi程序设计的基本特点是( ) A. 可视化程序设计B.代码程序设计 C. 事件驱动编程D.A和C 2.修改窗体的标题时,应当在属性页中设置的属性是( ) A.Caption B.Name C.Text D.Label 3.“x是小于100的非负数”的ObjectPascal表达式是( ) A.0≤x<100 B.x>=0,x<100 C.(x>=0)AND(x<100) D.(x>=0)OR(x<100) 4.利用Image对象的哪个属性设置,可以使加载的图像自动放大或缩小,以适应Image 的显示区域( ) A.Stretch B.AutoSize C.Align D.Center 5.工具栏上的一个SpeedButton按钮如果要设置为状态按钮,则正确设置的方法是( ) A. 将SpeedButton按钮的Grouplndex属性设置为0,且AllowAllUp属性设置为True B. 将SpeedButton按钮的Grouplndex属性设置为0,且AllowAllUp属性设置为False C.将SpeedButton按钮的Grouplndex属性设置为非0值,且AllowAllUp属性设置为True D.将SpeedButton按钮的Grouplndex属性设置为非0值,且AllowAllUp属性设置为

Delphi代码编写标准详解

Delphi编写标准指南 一、序言 二、通用源代码格式规则 2.1 缩格 2.2 页边空格 2.3 Begin...End 配对 三、Object Pascal 3.1 括号 3.2 保留字和关键字 3.3 过程和函数(例程) 3.3.1 命名/格式化 3.3.2 形式参数 3.3.2.1 格式化 3.3.2.2 命名 3.3.2.3 参数的排序 3.3.2.4 常量参数 3.3.2.5 名称的冲突 3.4 变量 3.4.1 变量的命名和格式 3.4.2 局部变量 3.4.3 全局变量的使用 3.5 类型 3.5.1 大写约定 3.5.1.1 浮点指针类型 3.5.1.2 枚举类型 3.5.1.3 变数和ole变数类型 3.5.2 结构类型 3.5.2.1 数组类型 3.5.2.2 记录类型 3.6 语句 3.6.1 if 语句 3.6.2 case 语句 3.6.2.1 一般性话题 3.6.2.2 格式 3.6.3 while 语句 3.6.4 for 语句 3.6.5 repeat 语句 3.6.6 with 语句 3.6.6.1 一般话题 3.6.6.2 格式 3.7 结构异常处理 3.7.1 一般话题 3.7.2 try...finally的使用 3.7.3 try...except的使用

3.7.4 try...except...else的使用 3.8 类类型 3.8.1 命名和格式 3.8.2 域 3.8.2.1 命名/格式 3.8.2.2 可视化 3.8.3 方法 3.8.3.1 命名/格式 3.8.3.2 使用静态的方法 3.8.3.3 使用虚拟/动态的方法 3.8.3.4 使用抽象的方法 3.8.3.5 属性存取方法 3.8.4 属性 3.8. 4.1 命名/格式 3.8. 4.2 使用存取的方法 四、文件 4.1 工程文件 4.1.1 命名 4.2 窗体文件 4.2.1 命名 4.3 数据模板文件 4.3.1 命名 4.4 远端数据模板文件 4.4.1 命名 4.5 Unit文件 4.5.1 通用Unit结构 4.5.1.1 unit的名字 4.5.1.2 uses子句 4.5.1.3 interface部分 4.5.1.4 implementation部分 4.5.1.5 initialization部分 4.5.1.6 finalization部分 4.5.2 窗体单元 4.5.2.1 命名 4.5.3 数据模板单元 4.5.3.1 命名 4.5.4 一般目的单元 4.5.4.1 命名 4.5.5 构件单元 4.5.5.1 命名 4.6 文件头 五、窗体和数据模板 5.1 窗体 5.1.1 窗体类型命名标准

Delphi异常处理tryexcept语句和tryfin(精)

一、异常的来源在Delphi的应用程序中,下列的情况都比较有可能产生异常。(1)文件处理(2)内存分配(3)Windows 资源(4)运行时创建对象和窗体(5)硬件和操作系统冲突 二、异常的处理(1)try…except…end;在try体内的代码发生异常时,系统将转向except部分进行异常的处理。这是Delphi处理异常的最基本的方式之一。(2)try…finally…end;这种异常处理结构一般用于保护Windows的资源分配等方面,它确保了无论try体内的代码是否发生异常,都需要由系统进行最后的统一处理的一些Windows对象的正确处理。和try…except…end不同,该结构的finally部分总被执行。(3)不存在try…except…finally…end结构来既处理异常,又保护资源分配的结构,但是,try…except…end结构允许嵌套到try…finally…end结构中,从而实现既处理异常,又保护资源的分配。三、异常的精确处理(1)定义一个异常。 在Delphi中,每个异常都是Exception[1]类的一个派生类[2]。因此,定义一个异常就是定义一个Exception类的派生类。type EMyException = class(Exception;当然,基类可以是Exception或者Exception的任何一个任何层次的派生类。(2)在程序中抛出一个异常。根据不同的情况抛出异常是使用异常的最基本的模式。在Delphi中,由raise语句来实现。【语法】raise 异常类.Create(…异常的缺省说明?; (3)在try…except…end 中更加精确的捕捉异常。使用on E:异常类do…结构可以在do体内处理特定异常类所抛出的异常。四、异常的调试在Delphi IDE中,解除“Debugger Options”(可以使用菜单Tools—>Debugger Options…进行访问)中的Integrated Debugging复选框的勾选状态可以进行异常的调试。五、异常的补充说明(1)每一段程序都有可能产生错误!这是软件业的一个不容置疑的现象和规律。事实上,传统的if…else…结构完全可以解决所有的错误,使用Exception机制也没能够回避在最原始的层次,通过遍历可能的情况来产生异常的做法,那么,为什么还要异常机制?答案很清楚:异常提供了一种更加灵活和开放的方式,使得后来的编程者可以来根据实际的情况处理这种错误,而不是使用预先设定好的处理结果。 Delphi7异常处理了解什么是异常和Delphi7中提

Delphi语法基础

DELPHI语法基础 注释 在Pascal中,注释括在大括号中或带星号的圆括号中。Delphi 也认可C++ 风格的注释,即把注释放在双斜线后。例如 {this is a comment} (* this is another comment *) // this is a comment up to the end of the line 第一种注释方式较简略,使用也较为普遍;第二种方式在欧洲使用较广,因为欧洲的键盘缺少大括号;第三种方式的注释是从C++借用来的,只在32位版本的Delphi中可用,它在给一行代码加短注释时非常有用。 上述三种不同的注释方式有益于进行嵌套注释。例如你要注销一段代码,而代码行中又包含真正的注释行,这时采用同一种注释方式是不对的: { ... code {comment, creating problems} ... code } 正确的方法是插入第二种注释方式: { ... code //this comment is OK ... code } 注意:如果左大括号或圆括号-星号后面跟美元符号($),那么其中的内容就成了编译指令,如{$X+}。 使用大写字母 Pascal 编译器(不象其他语言的编译器)不考虑字符的大小写,因此标识符Myname、MyName、myname、myName、和MYNAME是完全相同的。总体上来说,这是Pascal 的一大优点,因为在大小写敏感的语言中,许多语法错误是由不正确的大写引起的。 然而大小写不敏感也有不便之处:第一,你必须注意大小写不一致的标识符实际上是相同的,以避免把他们当成不同的元素使用;第二,你必须尽量保持大写使用的一致性,以提高代码的可读性。 大写使用的一致性不是编译器强制要求的,但是保持大写使用的一致性是值得提倡的好习惯。一个常用的方法是将每个标识符的第一个字母大写,标识符若由几个词组合而成(中间不能插入空格),每个词的第一个字母应大写: MyLongIdentifier MyVeryLongAndAlmostStupidIdentifier 此外,编译器不编译代码中的空格、空行和Tab键空格,这些元素通称为空白,它们只用来提高代码的可读性,不影响编译过程。

delphi开发调试快捷键

Delphi开发的调试技巧_快捷鍵列表 2009-10-12 14:26 From:https://www.doczj.com/doc/6d154067.html,/jangill/blog/item/ae669c58205b248981 0a18b5.html 1、设置调试选项 Delphi主菜单。【Project】->【Options】,或单击工程管理器中的【Project Options】按钮。显示Project Options,选择Complier <1>选中 Debug Information :把调试信息嵌入到DCU单元文件,会加大编译后的DCU文件,但不会影响最后生成的exe的大小和执行速度。同时激活【Search】菜单中的【Find Error】命令。 当文件中包含调试信息并得到一个运行时错误(run-time error),记录下Delphi提供的16进制地址,在【Search】->【Find Error】中输入,Delphi将重新编译程序,并停留在产生错误的命令行。 <2>Local symbols:决定调试器能否看到在Implementation中定义的局部变量。 <3>Reference infoj选项/Definition Only选项 是否产生应用程序中对象标识符的引用信息。信息和对象代码存在dcu 文件中,可以使用对象浏览器查看。如果Definition Only 选项同时选中,编译器将生成标识符定义位置的信息,能够激活对象浏览器的Refenrence页。如果不选,Dcu文件更小。

编辑器命令 {$D} Debug Information {$L} Local Information {$Y} Symbol Information {$C} Assertions 2、使用内部调试器 <1> 命令行参数 在【Run】->【Parameters】中设置 <2>断点 条件断点 使源代码断点只有在满足某个条件时才有效。 在【View】->[Debug windows]->【BreakPoints】打开“BreakPoint List”对话框,右击断点,从弹出菜单中选择属性。打开“Source BreakPoint Properties”对话框,在Condition中输入条件,在对话框中点击按钮【Advanced】,可以设置更多选项,“Ignore Subsequent Exceptions”使调试程序遇到下一个断点时不中断;选中“Handle Subsequent Exception”则调试程序遇到下一个断点时恢复默认性能。也可以通过【Run】->【Add BreakPoint】设置。 数据断点 特定地址的内存被修改时才使程序挂起。【Run】->【Add BreakPoint】

delphi程序单元基础讲解

Delphi程序单元 Object Passal的程序结构很特殊,与其它语言如C++,Object Windows等结构都不同。一个Delphi程序由多个称为单元的源代码模块组成。使用单元可以把一个大型程序分成多个逻辑相关的模块,并用来创建在不同程序中使用的程序库。 8.1Program单元 Program单元就是Delphi中的项目文件。 Program单元是一个特殊的单元,类似于C语言中的Main程序,即为应用程序的主程序。一个程序可以有多个单元组成,也可以只有一个Program单元组成,例如前面我们介绍过的DOS窗口程序就只有一个Program单元组成。下面是一个典型的Program单元:program Project1; uses Forms, Unit1 in'Unit1.pas'{Form1}; {$R *.RES} begin Application.Initialize; Application.CreateForm(TForm1, Form1); Application.Run; end (1)程序首部指定程序名、以及参数等。 (2)Uses语句定义程序用到的所有单元。 标识符为单元的名字,各单元之间用逗好(,)隔开,最后结束用分号(;)。 注意:每个程序总是自动包含System单元,Program单元的Uses部分不能 显式指定。System单元用于实现一些低级的运行时间程序的支持,如文件输入 输出(I/O)、字符串操作、浮点运算、动态内存分配等。另外,Delphi在发行时提供了许多预先定义的单元,在构造程序时可以直接使用。例如,如果你将一个核对框放进一个窗体,你就自动地使用了StdCtrls单元,因为TCheckBox构件在StdCtrls中定义。 Uses部分列出单元的顺序决定它们初始化的顺序,并影响编译器定位标识符的顺序。如果两个单元定义了一个相同名字的类型,编译器将总是使用前面那个单元的类型。 (3)程序块由保留字Begin和End括起来的一段代码组成,用于对程序的初始化。

Delphi作的程序的源代码中常见的文件扩展名

Delphi作的程序的源代码中常见的文件扩展名 Delphi作的程序的源代码中常见的文件扩展名 时间:2011-5-24来源:yang 作者: peng点击: 32次 整理了一下用Delphi作的程序的源代码中常见的文件扩展名,并给出了这些文件扩展名的意义,以便源代码管理时作为参照,扩展名以字母为序(不需要进源代码库不表示不需要进库)。 ~* Delphi生成的备份文件,在版本控制库及发布代码中不应该出现这些文件,如果修改了某个文件却因某些原因没有保存的话,可以尝试使用这些文件恢复。 bmp/wmf/emf/gif/jpg/pcx/png/tiff/ico/cur/ani 图形/图标/光标文件,这些文件如果使用到了也需要进源代码库。 bpg 工程组文件(Borland Project Group File),文本格式,需要进源代码库;bpg文件其实是makefile格式,要编译bpg 文件可以使用make工具,语法如下: make -f %FileName%

bpl 运行时刻包文件,是一种Borland定义的特殊格式的dll,简单的说与普通dll的差别就是bpl有一些共用的部分只使用了同一引用,而dll使用了多份拷贝,因此才会使得bpl与dll的某些方面的差别很大。 此类型文件是否进源代码库需要根据其用途来判断,一般情况下源代码编译出来的bpl无需进库,但是如果此bpl 是IDE的扩充插件,可能也需要进库,此外如果第三方组件没有提供源码仅提供了此文件,则此文件也需要进源代码库。 bpr/bpf/bpj/h/cpp BCB(Borland C++ Builder)相关文件,如果工程使用了BCB,则需要进源代码库,但在我们的工程中应该不需要这些文件。 cab ActiveX控件包文件,如果是工程使用到的第三方控件,则需要进源代码库。 cfg 编译工程时的配置文件。dcc32.exe程序编译工程时使用cfg文件的顺序为:首先使用dcc32.exe同目录下的dcc32.cfg 文件,然后使用待编译文件同目录下的dcc32.cfg文件,最后使用待编译文件同目录下的同名的cfg文件,为了保证在不

Delphi练习

一.选择题(每题2分,共3 0分). 1、以下标识符中哪个是合法的Delphi标识符?[C]。 A.Delphi 7 B.Delphi.7 C._Delphi_7_ D.1st_class 2、下列对TADOQuery组件ADOQuery1的SQL属性正确操作的语句是[D] A.ADOQuery1.SQL.Clear:=’’; B. ADOQuery1.SQL.Close; C.ADOQuery1.SQL.Add:=’select * from table1’; D.ADOQuery1.SQL.Text:=’select * from table1’; 3、[C]组件没有Items属性。 A.TComboBox B. TListBox C. TMemo D. TRadioGroup 4、有序类型不包括以下的哪一个?[A] A.Real B. Integer C. Char D. Boolean 5、以下哪个组件是可视组件?[A] A.TDBGrid B.TADOQuery C.TDataSource D. TADOConnection 6、以下哪个不是关系型数据库?[B] A.Access B.ADO C.SQL Server D.Oracle 7、[C]是一种提供访问各种数据类型的连接机制,是基于OLE-DB之上的技术,是微软提出的新标 准,且力图将它树为新的统一数据库接口. A.DAO B. ODBC C. ADO D. BDE 8、以下哪个组件是通过SQL属性来获取数据的?[D] A.TDataSource B. TADOConnection C. TADOTable D. TADOQuery 9、ConnectionString属性是用于设置要连接的数据库的,以下哪个组件无该属性?[A] A.TDataSource B. TADOConnection C. TADOTable D. TADOQuery 10、要让菜单项的名字之前显示一个勾,应该设置菜单项的[B]属性值为true。 A.Default B. Checked C. Enabled D. Visible 11、如果想在界面中直观地显示一些几何图形,就要用到TShape组件,以下[C]属性用于设置它的 形状。 A.Brush B. Pen C. Shape D. Name 12、设n为整型变量,且已赋值为1898,表达式(n mod 100) div 10表示:[B] A.分离出个位数字 B.分离出十位数字 C.分离出百位数字 D.分离出千位数字 13、设有如下程序段: i :=1; repeat n :=i*i; i :=i+2; until n>2*i; 假设所有变量均已说明,问其中循环体的执行次数是:[C] A.1 B.2 C.3 D.4 14、如果用户不希望别人看到他在文本编辑框中输入的字符,可以将TEdit的[A]属性设置为*。 A.PasswordChar B. Caption C. Text D. Name 15、若要设置TLabel组件中的文本在水平方向上居中对齐,应将[A]属性值设为taCenter。 A.Alignment B. Layout C. WordWrap D. Transparent 1、以下标识符中哪个是合法的Delphi标识符?[C]。 A.A[B]7 B.7AB C.AB7 D.IF 2、下列对TADOQuery组件ADOQuery1的SQL属性正确操作的语句是[B] A.ADOQuery1.SQL.Clear:=’’; B. ADOQuery1.SQL.Add(’select * from table1’); C.ADOQuery1.SQL.Close; D.ADOQuery1.SQL:=’select * from table1’;

Delphi面向对象的编程方法

Delphi的编程语言是以Pascal为基础的。Pascal语言具有可读性好、编写容易的特点,这使得它很适合作为基础的开发语言。同时,使用编译器创建的应用程序只生成单个可执行文件(.EXE),正是这种结合,使得Pascal成为Delphi这种先进开发环境的编程语言。 本章中,我们将讨论Object Pascal的主要特点,并讲解如何在事件处理过程和其他应用程序中,使用它来编制程序代码。本章将讲解Delphi应用程序中最常用的Object P ascal语法,而不是Pascal语言的一切细节。如果您完全不熟悉Pascal编程,请参阅一些基础的Pascal教程。如果您具有编程经验,并能熟练地使用其他流行程序语言,您将在本章的Object Pascal中发现一些相同的概念。如果您已经熟悉了Borland Pascal,就可以快速浏览或跳过本章。 2.1 编写Object Pascal程序代码 在前边的章节中,我们通过例程,已经编写了几行简单的代码。在本章中,我们将从熟悉Pascal编程的角度,配合实例,讲解Object Pascal编程的基本方法。 在编写自己的Object Pascal程序时,要注意程序的可读性。Pascal语言是英式结构语言,在程序中选择合适的缩排、大小写风格,并在需要时将程序代码分行,会使得程序代码能够很容易地被自己和他人读懂。一般的程序员都有这样的体验:如果不给程序加上适当的注解,一段时间后,自己也难以理清程序的流程。给程序及时地加上注释是良好的编程习惯。Delphi的注释需要加注在{}之间,编辑器会把它们处理成为空白。Delphi保留了Borland Pascal编辑器的风格,关键字采用黑体字,被注释的部分会变暗,这使得编程风格良好,易读易写。 2.1.1 编写赋值语句 在事件处理过程中,最常用到的工作就是把一个新值赋给一个属性或变量。在设计用户界面时,可以使用Object Inspector(Object Inspector)来改变其属性;但有时需要在程序执行时改变属性的值,而且有些属性只能在执行时改变,这些属性在Delphi的在线帮助的“Proprety”主题中被标为执行期属性。进行这种改变,就必须使用赋值语句。 下文的赋值语句表征一个OnClick事件。当按钮按动后,将编辑框部件Edit1的Co lor属性置为clRed: procedure TForm1.Button1Click(Sender: TObject); begin Edit1.Color := clRed; end; 当按动按钮后赋值语句被执行,编辑框变成红色。

Delphi程序设计复习资料

《Delphi 程序设计》复习题 一、填空题 1、结构化程序设计的基本原则是取消goto 语句,程序中仅采用顺序、 和循环三种控制结构。 2、一个对象是由属性、方法和事件所组成。属性表示对象中的数据, 是对象能够执行的动作, 是能够引起对象反应的条件。 3、与数学表达式 ) sin()(sin 222y x y x ++对应的Object Pascal 表达式是 。 4、ListBox 对象列表框中的内容是通过 属性来进行设置的。 5、结构化程序设计要求程序中仅采用顺序、分支和循环三种控制结构,其中每种结构只能有 个入口和一个出口。 6、对象的三个要素是属性、方法和 。 7、Delphi 应用程序中项目文件的扩展名是 。 8、在设计阶段,利用Image 对象的 属性,可以加载一幅图片。 9、Delphi 中与窗体文件对应的文件是单元文件,其最常用的文件扩展名是 *. 。 10、与数学表达式 ab y b a -++23)sin(对应的Object Pascal 表达式是 。 11、调用主窗体的 方法,可以结束程序关闭窗体。 12、如果让界面上的一个按钮变为不可用,需要将它的 属性设为False 。 13、如果要在窗体上设计一个主菜单,首先要建立 对象。 14、与数学表达式 a xy a b a +++22)(cos 对应的Object Pascal 表达式是 。 15、利用 对象的LineTo 等绘图方法,可以绘制基本图形。 16、RadioGroup 对象中的单选按钮个数及名称是通过 属性来进行设置的。 17、时钟组件(Timer)能有规律的以一定时间间隔触发 事件,并执行该事件过程中的程序代码。为了使计时器控件Timer1每隔0.5秒就触发一次并执行事件代码,应将Timer1控件的Interval 属性设置为 。 18、Delphi 程序与数据库之间进行数据交换一般要由多个数据库组件协作完成。如果用户要查询数据库中的一条信息,该指令通过用户界面组件发出,经数据源组件到达数据集组件。数据集组件利用 组件与数据库建立连接,并读取数据库中的数据,而后又经过 组件将数据送到用户界面组件中显示。 19、与数学表达式 a x a by a ++22)(sin 对应的Object Pascal 表达式是

第2章Delphi语法基础

第2章Object Pascal语言基础 Delphi的编程语言是Object Pascal,即面向对象的Pascal语言。自Delphi 7 开始,Object Pascal语言改称为Delphi 语言。 第1节保留字和标识符 一、保留字 保留字是由系统使用的具有特殊含义的单词(如And、If、For、Var等),详见教材16~17页表2.1。 二、指令符 指令符也是由系统使用的具有特殊含义的单词(如Public、Private等),详见教材17页表2.2。 三、标识符 标识符(Identifiers)用于表示常量、变量、域(字段)、类型、属性、过程、函数、程序、单元、库和包(packages)的名称。 Object Pascal标识符的声明和使用应遵循以下规定: ?长度任意,但仅前255个字符有效。 ?首字符必须是字母或下划线。 ?不能含有空格,中间的字符可以是字母、数字和下划线。 ?不能使用保留字(reserved words)作为标识符。 ?不区分大小写,例如sName与sname等价。 第2节注释 三种注释形式: {注释内容} (*注释内容*) //注释内容 注意:

如果注释符{之后紧跟一个美元符号$(如{$R *.res}),表示该语句是一条编译指令,它与普通的注释不同,通常由Delphi自动生成,用于设置编译过程,不要修改或删除它。 第3节常量和变量 一、常量 1. 普通常量 如:123,-100,3.14,'abc',True等。 2. 符号常量 符号常量用保留字Const声明,格式如下: Const常量名 = 表达式; 例如: Const PI = 3.1415926535897932385; College = '山东教育学院'; Numeric = ['0'..'9']; // 数字字符集合 Alpha = ['A'..'Z', 'a'..'z']; // 英语字母集合 AlphaNum = Alpha + Numeric; // 集合的并 2. 变量 变量声明的格式: var变量名表:类型; 例如: var X, Y, Z: Double; I, J, K: Integer; S1, S2: String; Digit: 0..9; // 子界类型 Flag: Boolean; 单元级或全局变量可以在声明时初始化(每个声明语句仅限一个变量)。例如: var x: Integer = 0; S: string = 'abc';

相关主题
文本预览
相关文档 最新文档