黑客风云——风云网络
设为首页 加入收藏 我要投稿 网站地图

您现在的位置: 黑客风云 >> 黑客文章 >> 黑客进阶 >> 黑客编程 >> 正文
·没有路由密码权限时的鸽08-23·上网安全 Vista自我防范10-11
·让濒临崩溃的Windows XP10-11·有备无患,快速自制救急10-11
·要你好看!Windows看图工10-11·空间赞助网提供不同类型10-11
·讨论net.exe和net1.exe的10-10·让3389远程桌面传输更通10-10
·巧妙入侵渗透赌博站10-10·Aspx空间扫权限工具10-10
·Windows2003最新提权工具10-10·易淘乐提供100M免费全能10-10
·系统开机密码忘了不着急10-09·中意网络提供免费100M免10-09
·与众不同 Windows XP开始10-08·让桌面图标翻跟斗 在XP上10-08
·上海宽元站长资助计划-提10-08·个性化Windows XP的任务10-07
·趣盘提供3G免费网络硬盘10-07·秀山热线提供200MB免费全10-07
·一次艰辛的提权过程10-06·成功入侵IT大卖场的渗透10-06
·mysqlhack- MYSQL利用工10-06·lanker一句话PHP后门客户10-06
·WIXI提供3G免费多媒体网10-06·新人网络提供100M/ftp免10-06
·如何利用QQ带来高流量10-05·UuShare提供免费网络文件10-05
[推荐]delphi基础学堂-详细讲解delphi
      ★★★★★

delphi基础学堂-详细讲解delphi

文章整理发布:黑客风云 文章来源:www.05112.com 更新时间:2007-1-10 9:59:05
第一讲 delphi基础
【例】改变窗体的标题,颜色,尺寸
  delphi 程序设计特点:可视化,开发方便
【例】写代码,改变标题,颜色,尺寸
  对象成为处处用到的基本元素。对象含有属性和事件。delphi以pascal语法为基础。
 
一、delphi是什么?
    delphi 是borland 公司研发的面向对象的,可视化的,快速的应用开发工具。
  ◇对象是对相对独立的客观存在或相对独立的逻辑存在的计算机表示。
  ◇面向对象是与面向过程相比较而言的。
    1 对象的三个主要特征:封装、继承和多态。
       面向对象的优点:易管理,可重用。
    2 可视化的体现:   所见即所得的界面设计;delphi组件是可视化的对象。
    3 快速的原因: 可视化;丰富的函数,类库,组件,数据库组件;开发工具和向导;编译速度最快,语法的高度最一致。
 
二、delphi不是什么?
1 不是专门的数据库开发工具。
 ◇研发的的背景和目的:windows初步流行,主要开发工具VC和VB各有所长;数据库开发的需求急剧增加。delphi = VC功能+VB界面+快速数据库开发。
 ◇delphi中没有专门为数据库操作保留的关键字。
 ◇有很强数据库能力的原因是使用delphi后续开发的数据库组件。
 【图解】delphi语言及开发包提供的资源的关系。delphi的语言基础是object pascal,在其上构建的函数库,类库,控件库,甚至是IDE本身都不是语言的固有组成部分,而是用delphi语言写成的第一批工具,这扩展了delphi的能力,也验证了delphi的强大功能。
2 不是专门的界面开发工具。IDE本身是delphi程序且提供源代码;delphi可脱离IDE环境
而独立运行。
  3 delphi 可用于各种通用目的。通信,图形处理,数值计算,自动控制等。
 
三、学习基本语法前的准备
  【例】不使用IDE的控制台小程序
  program p; {$AppType console} begin writeln('hello'); end.
    编译方法: DCC32 *.pas
    ◇语句是程序的基本组成元素;语句间用分号分隔;delphi没有行的概念
    【例】稍微扩展的控制台小程序
  program p; {$AppType console} 
   const s = 'hello'; var a,b,c : integer;
    function MyAdd(x,y: integer): integer; begin MyAdd := x*10 + y; end;
begin a:=5; b:=6;c:=myadd(a,b); writeln(c); writeln(s); end.
◇函数是最常见的语法现象
◇‘:=’表示赋值操作;‘=’功能之一是表示定义;与C语言的写法有区别
 
    1 源程序与机器表示的映射关系
  【图解】源程序被翻译成机器码后,原来的结构特征消失了。在机器表示中,只有一种结构,就是:数据+操作码。通常的编译,把内存分为三个部分来使用:静态空间,栈空间和堆空间。
    ◇我们我讨论的内存是经过操作系统虚拟过的内存,称逻辑内存或虚拟内存,这是相对于硬件上提供的物理内存而言的。
    ◇函数被广泛使用,并且可以嵌套。一般通过栈的方法来实现在不同的函数执行环境间切换。栈的操作有两个,压栈和弹出。函数携带的参数也是通过栈的形式来传递的。
  ◇栈也用来实现局部变量的自动申请和释放。
  【例】windows风格的程序例子。工程是管理者,也是pas格式的代码,只是扩展名不同。单元是最重要的被管理的元素。.pas扩展名,是标准的源代码。
    2 与Dos程序不同,windows下的程序不在是从主函数开始的“一根面条”,而是与消息相联系的若干可执行的部分。
    【图解】在windows下,代码响应事件(或消息的过程)。消息是可以被传递的信息,有固定的格式,应用程序可以发送消息,也可以接受消息。
 3 接受到的消息被放在队列中,等待处理。windows下的应用程序只做两个循环往复的动作:提取消息和处理消息。
   ◇消息由标识和参数组成
  ◇具有某个标识的消息可以和某个函数相关联,叫做:消息映射。
  【例】怎样在windows下输出信息呢?在windows下,对屏幕的输出是输出图象,一般是通过画的方法,而不是写。屏幕被抽象为许多逻辑上独立的区域,供给多个程序使用。这些矩形区,叫窗口。程序中用于代表窗口的可输出能力的对象是TCanvas。
  ◇可以通过canvas在自己的窗口上直接画图形,或“画字”
  ◇可以控制canvas内的pen和brush等对象来实现对输出内容外观的控制。
  【例】使用控件直接输出内容。这是实现输出的更常用的方法。也体现了对象的重用性的优点。
    4 修改控件的属性,就可以直接实现输出。这与VC不同,改变属性,不是简单地改变了对应单元的数值,而是执行得了更复杂的操作,否则无法实现屏幕内容的变化。
  ◇在屏幕上看到的控件也是窗口。我们所节省的代码在编写这些控件的代码中必须出现,而且,也是通过canvas向屏幕输出的。
  ◇使用控件的优点是简单,直观。控件可在设计时修改属性。
  【例】保存工程,指定目录和修改名字
    5 在我们指定的目录中,有许多文件,他们的关系如图。.dcu和.exe较大,我们拷贝源程序的一般方法是删除.dcu和.exe其他的都拷贝。

.PAS
.DCU
.DFM
.RES
.DPR 工程
.DOF .CFG 配置
.EXE
 
    ◇重要原则:不要去删除自动生成的代码。我们把自己写的删除,IDE会自动把它写的删除。
 ◇不可用save as 的方法备份源程序,这样会使工程中的单元的路径改变。

    6 获得帮助的办法是把光标停在某词上按F1,这时会出现与该词相关的帮助。
 
四、基础语法
  1 不可忽视注释。文档是软件的重要组成部分。delphi的注释有多种方法:{}用于注释一段文字;//表示行注释;{}也可以注释一段。{$..} 是特例,表示编译指令。
  2 有名量和匿名量。名字是量的标识符,是用于区分不同的量的手段。
  ◇标识符的定义规则是:字母开头;不含空格;最长255;一般只含字母,数字,下划线。
  ◇名字要有意义,不要用拼音缩写。可以用英语或全拼。GZ:工资?高中?规则?广州?
  ◇delphi不区分大小写,可以用字头大写或下划线区分名字中不同的字。如:gong_zi;GongZi;
DaYin_BaoBiao;CaiDan_BaoCun_WenJian;Menu_SaveFile。
  3 常量和变量。通过前缀修饰符const,var定义常量和变量。
  ◇var和const不是域的概念,只是前缀。之所以看起来象域定义,是因为如果省略前缀就默认为与前一条语句的前缀相同。
◇普通常量不分配内存地址,表现为代码中的立即数。
◇类型常量分配内存,有地址,可以通过指针使用它。
4 数据类型综述。
◇学习数据类型时要弄清楚的问题:用处?定义?占多少内存?常量怎样表示?有关的函数?
◇数据类型可从多个角度划分。我们从使用该类型的角度看,可划分为书中p20的结构。若从是否需要定义的角度看,可分为原始类型和用户定义类型。
◇要注意各个类型间是否可转换及如何实现转换。比如整数和实数。
5 整数
◇用处:表达可数的数目;记录循环次数
◇定义:var a: integer; b,c: int64;
◇内存占用:见p21
◇常量表示:普通 123;十六进制 $1FE7;
◇必会函数:Div, Mod, Dec, Inc, StrToInt,
6 字符
◇用处:表示单个字母或数字
◇定义:var a: char; const b:char='x';
◇内存占用:P23
◇常量表示:'a';单引号本身的表示:'''';chr(39);#39;
◇必会函数:chr, ord
7 布尔
◇用处:表示是或不是
◇定义:var a: boolean; 
◇内存占用:P24
◇常量表示:true,false
◇必会函数:not and or
8 枚举
◇用处:代表有限集合中的每一个元素,为每个元素指定一个有意义的名字。
◇定义:type TV_Color = (TV_red, TV_Blue, TV_Green); var a: TV_Color;
◇内存占用:相当于常量,无内存地址
◇常量表示:TV_red, TV_Blue。
◇必会函数:ord取得序号;序号从零开始。
9 子域
◇用处:限定范围的字符类型或整型(序数类型),可在编译阶段检查赋值合法性。
◇定义:type Age=1..200;var a: Age;
◇内存占用:与它使用的序数类型相同。
10 实数
◇用处:表示连续量
◇定义:var x,y: double;
◇内存占用:见p26
◇常量表示:34.56;0.23;.23;1.2E-3;
◇必会函数:FloatToStr,FormatFloat,Int,Frac,Round
 
11 记录
◇用处:把许多量组合在一个类型中
◇定义:type STU=record name: string[10]; id:integer; age: double; end;
        var a: STU;
◇内存占用:基本上等于组成的变量所占内存的和(存在整字对齐问题
◇引用:edit1.text := a.name; a.age := 15.5;
◇注意:元素可以是任何类型,甚至是另一个记录类型;可以用packed指定不要整字对齐。
12 数组
◇用处:表示同型元素构成的列表
◇定义:type AAA = array[0..100] of char; BBB=array[5..10] of STU;
        var a: AAA;
◇内存占用:数组大小乘单个元素的占用。
◇引用:a[下标];如 a[2], a[34]
◇必会函数:Low,High。
13 字符串 delphi中最重要的数据类型
◇delphi的串不是定义类型,是语言固有的类型,这与C串的概念不同。
◇delphi的串有短串和长串之分。一般短串在栈中分配空间,长串在堆中分配空间。短串最大长度是255,与C的串占用空间相同,结构有区别。在堆上分配的长串,是自动堆对象,不需要手动地申请和释放。
◇定义:var s: string; {长串}  s2: string[12]; {短串}
◇可以用下标的方法引用串中的单个字母:s := 'hello'; 则 s[1] 表示‘h’, s[3] 表示‘l’。
◇必会的内部函数:length(s);s1:=copy(s,1,2);delete(s,3,2);insert('abc',s,2);
i := Pos('abc',s); s:=LowerCase(s); upperCase; format。
14 语句综述
   与其他的语言的语句形似,delphi的语句从流程方向上也分三种:顺序语句,选择语句,循环语句。从语法结构上又分为单语句和复合句。复合语句是由begin,end 包含一组语句。类似C语言的{ }。语句间的分隔符是分号。
  15 选择结构
  if 语句的格式: ①if .. then ..; ②if .. then .. else .. ;
  ◇if x = 5 then x := x + 5;else x := 12; 是错误的写法
  ◇if x > 90 then t:=1 else if x >80 then t:=2 else if x > 70 then t:=3 else t:=4;是正确的写法。注意elseif 不能连写。
  【技巧】 减少嵌套层数的技巧 逐渐逼近条件法
  case 语句的格式:case x of 1:t:=1;2: t:=2;3..7: t:=3;else t:=4 end;
  ◇case s of 'abc': t:=1;'bcd': t:=2 .... 是错误的写法。case 只能是序数类型。
  ◇case x of 1: t1:=2;t2:=3;2: t1:=4;t2:=5;end;是错误的。分支情况后边只能是一条语句,如果有多条语句,要使用复合语句来处理。
    16 循环结构 for .. do ..; while .. do ..; repeat .. until ..;
    一般for适用于次数可确定的循环;while先判断条件,repeat 先执行。
    break 用于从循环中跳出; continue用于跳过一次循环,执行下一次。
  17 其他较深的语法在后边分别介绍。包括多维数组,动态数组,集合,函数的参数传递方式,指针,函数指针,类引用,文件类型,变体类型,变体数组等。
 
 

[1] [2] [3] [4] [5] [6] [7] [8] 下一页

文章录入:cainiaowang    责任编辑:cainiaowang 
【字体:
Copyright @2006 黑客风云 ●业务联系:QQ 联系怪人 联系奇人 Email:给怪人发邮件 给奇人发邮件
ICP备案:冀06009886