一、工程文件

program MultiUnit;

{$APPTYPE CONSOLE}

uses
SysUtils,
Unit1 in 'Unit1.pas'; begin
//引用unit1中的变量,因为是在接口部分定义所以可以引用
strGreet:='Hello world'; //调用unit1中的过程 因为是在接口部分定义所以可以引用
Greeting(strGreet); //调用unit2中的函数;因为是在接口部分定义所以可以引用
nAdd:=;
nAddfactor:=;
writeln(GetSum(nadd,naddfactor)); {
1、因为pai变量是在unit1单元的实现部分定义的,因此不能被工程文件引用
}
//writeln(10*10*pai); {
1、 因function GetArea(var r:single):single; 是在unit1单元的实现部分定义的
所以在工程文件中也不能访问
}
//writeln(GetArea(3.0)); {
1、 因为没有在工程文件中引用unit2单元,所以不能引用unit2单元的对象
2、 虽然在unit1单元引用了unit2单元,但是是在实现部分,所以在工程文件中
也不能引用unit2单元的对象。
3、 如果在unit1单元的接口部分引用了unit2单元,则在工程文件中也能引用unit2
单元文件的对象
}
//showUnit2(); readln;
end.

二、单元文件 unit1

{       单元文件
1、Delphi程序由称为单元的源代码模块构成
2、每个单元保存在一个单独的单元文件 *.pas 文件中,分别进行编译,然后编译后的
单元被链接到程序中
3、单元文件由以下几部分组成:
单元头 unit 关键字表示
接口部分 interface 关键字表示
实现部分 implementation 关键字表示
初始化部分 initialization 关键字表示
结束化部分 finalization
单元的结尾 end. 表示
} { 单元头
1、 unit关键字定义单元头,
2、 语法格式为: unit 单元标识符
3、 在其他单元中利用 单元标识符 来表示整个单元
}
unit Unit1; { 接口部分
1、 接口部分定义其他单元引用本单元时可以访问本单元那些对象,
接口部分声明的变量、函数、过程的作用域 类似于C语言的全局对象
2、 接口部分由关键字 interface 开始,直到遇到关键字 implementation 结束
3、 接口部分可以
A、使用 uses 子句, uses子句必须紧跟在interface之后
B、利用 var 关键字定义变量
C、声明可以被其他单元调用的过程 procedure 和 函数 function
}
interface
var
strGreet:string;
nAdd:integer;
nAddFactor:integer; { 过程
1、 通过关键字 procedure 定义和声明过程
2、 注意声明最后有一个分号
3、 以后具体介绍
}
procedure Greeting(var strGreet:string); { 函数
1、 通过关键字 function 定义和声明过程
2、 注意声明最后有一个分号
3、 以后具体介绍
}
function GetSum(var value1,value2:integer):integer; { 实现部分
1、 实现部分用来实现单元的代码部分,实现部分主要的代码编辑部分
2、 实现部分用来定义接口部分声明的过程、函数
3、 实现部分利用关键字 implementation 表示开始,直到遇到关键字 initialization
或者 end. 为止
4、 实现部分可以使用
A、uses 子句, 如果使用uses子句,则必须紧跟implementation关键字
B、var 语句定义变量
C、定义在接口部分声明的过程、函数
D、定义只在本单元才能调用的过程、函数
}
implementation
uses
unit2; var
pai:single=3.1415926; { 过程
1、 定义过程的时候必须与在接口部分完全一样,如果声明用来 var 关键字,则在
定义的时候必须用 var 关键字
}
procedure Greeting(var strGreet:string) ;
begin
writeln(strGreet);
end; { 函数
1、函数通过函数名返回函数值
}
function GetSum(var value1,value2:integer):integer;
begin
GetSum:=value1 + value2;
end; function GetArea(var r:single):single;
begin
GetArea := pai * r * r;
end; procedure showUnit2();
begin
{
1、引用了unit2单元,所以可以引用unit2单元的对象
}
writeln(unit2Var);
end; end.

三、单元文件 unit2

unit Unit2;

interface
var
unit2Var:integer=;
implementation end.

欢迎转载,转载请注明来源。

Delphi_02_Delphi程序的结构的更多相关文章

  1. ELF Format 笔记(十一)—— 程序头结构

    ilocker:关注 Android 安全(新手) QQ: 2597294287 程序头表 (program header table) 是一个结构体数组,数组中的每个结构体元素是一个程序头 (pro ...

  2. 黑马程序员——JAVA基础之程序控制流结构之判断结构,选择结构

    ------- android培训.java培训.期待与您交流! ---------- 程序控制流结构:顺序结构:判断结构:选择结构:循环结构. 判断结构:条件表达式无论写成什么样子,只看最终的结构是 ...

  3. Delphi XE5教程5:程序的结构和语法

    内容源自Delphi XE5 UPDATE 2官方帮助<Delphi Reference>,本人水平有限,欢迎各位高人修正相关错误! 也欢迎各位加入到Delphi学习资料汉化中来,有兴趣者 ...

  4. 【Xamarin挖墙脚系列:Xamarin.IOS的程序的结构】

    原文:[Xamarin挖墙脚系列:Xamarin.IOS的程序的结构] 开始熟悉Xamarin在开发IOS的结构!!!!!!! 先看官方 这个是以一个单页面的程序进行讲述的. 1 程序引用的程序集,核 ...

  5. 【Xamarin挖墙脚系列:典型的业务程序的结构搭建】

    原文:[Xamarin挖墙脚系列:典型的业务程序的结构搭建] 其实app就是客户端.在现代的程序中,都是典型的C/S结构.当然,一些离线的小游戏,功能性应用除外,如:电话本,通信录,短信查看等等 这个 ...

  6. 微信小程序开发01 --- 微信小程序项目结构介绍

    一.微信小程序简单介绍: 微信官方介绍微信小程序是一个不需要下载安装就可使用(呵呵,JS代码不用下载吗?展示的UI不用下载吗?)的应用,它实现了应用“触手可及”的梦想,用户扫一扫或搜一下即可打开应用. ...

  7. 毕业设计预习:VHDL入门知识学习(一) VHDL程序基本结构

    VHDL入门知识学习(一) VHDL程序基本结构 简介 VHDL程序基本结构 简介 概念: HDL-Hardware Description Language-硬件描述语言-描述硬件电路的功能.信号连 ...

  8. Java程序的结构和执行

    目录 Java程序的结构 Java程序的执行 source code -- compiler -- class file -- JVM compiler JVM Java语法 数据类型 数据的存储 堆 ...

  9. Android应用程序项目结构

    Android应用程序项目结构 [src]:JAVA源代码目录 [gen]:由系统自动生成的JAVA源码文件,不可修改,只可查看和使用 加载的和依赖的类库 [assets]:本地存储文件的一个文件夹 ...

随机推荐

  1. python 数据类型 ---文件一

    1.文件的操作流程: 打开(open), 操作(read,write), 关闭(close) 下面分别用三种方式打开文件,r,w,a 模式 . "a"模式将不会覆盖原来的文件内容, ...

  2. Linux杀死进程,查看进程

    http://blog.csdn.net/wojiaopanpan/article/details/7286430/

  3. JAVA 设计模式之策略模式

    定义:定义一组算法,将每个算法都封装起来,并且使他们之间可以互换. 类型:行为类模式 策略模式是对算法的封装,把一系列的算法分别封装到对应的类中,并且这些类实现相同的接口,相互之间可以替换.在前面说过 ...

  4. SQL Server 2014聚集列存储索引

    转发请注明引用和原文博客(http://www.cnblogs.com/wenBlog) 简介 之前已经写过两篇介绍列存储索引的文章,但是只有非聚集列存储索引,今天再来简单介绍一下聚集的列存储索引,也 ...

  5. 避免调试代码导致IE出错

    记录一下 if(!window.console){ var names = ["log", "debug", "info", "w ...

  6. 博客已经迁移至 http://barretlee.com/entry/,时而同步分享到这里

    博客园是一个十分好的写作平台,不过个人比较喜欢倒腾,所以将文章都做了搬迁. 博客已经迁移至 http://barretlee.com/entry/,感谢一直以来的关注和支持. 博客订阅地址: http ...

  7. Linux 桌面系统字体配置要略

    字体显示效果测试 这一段是为了测试宋体字的显示效果,包括宋体里面自带的英文字体,“This is english,how does it look like?”.这一行是小字.后面几个字是加粗的宋体. ...

  8. 用C表达面向对象语言的机制——C#版

    PS:本文PDF版在这里(格式更好看一些).最新的源代码请在本页面文末下载,PDF中的链接不是最新的. 用C表达面向对象语言的机制——C#版 我一直认为,面向对象语言是对面向过程语言的封装.如果是这样 ...

  9. Entity Framework 6 Recipes 2nd Edition(13-7)译 -> 返回只部分填充的实体

    问题 你有一个实体里的某个属性很少被读取或和更新,这个属性因为比较大,所以读取和更新都需要付很大的代价.你想有选择的放置这个属性 解决方案 假设你有一个如Figure 13-9 所示的模型 Figur ...

  10. python的赋值

    python的赋值其实就是引用,我们用python的id函数看一下: 然而令人蛋疼的事情发生了, 为什么会给一个新的c赋值1,它与上面的a和b的id一样呢. 原来是python会认为一些小的整形会经常 ...