Delphi_02_Delphi程序的结构
一、工程文件
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程序的结构的更多相关文章
- ELF Format 笔记(十一)—— 程序头结构
ilocker:关注 Android 安全(新手) QQ: 2597294287 程序头表 (program header table) 是一个结构体数组,数组中的每个结构体元素是一个程序头 (pro ...
- 黑马程序员——JAVA基础之程序控制流结构之判断结构,选择结构
------- android培训.java培训.期待与您交流! ---------- 程序控制流结构:顺序结构:判断结构:选择结构:循环结构. 判断结构:条件表达式无论写成什么样子,只看最终的结构是 ...
- Delphi XE5教程5:程序的结构和语法
内容源自Delphi XE5 UPDATE 2官方帮助<Delphi Reference>,本人水平有限,欢迎各位高人修正相关错误! 也欢迎各位加入到Delphi学习资料汉化中来,有兴趣者 ...
- 【Xamarin挖墙脚系列:Xamarin.IOS的程序的结构】
原文:[Xamarin挖墙脚系列:Xamarin.IOS的程序的结构] 开始熟悉Xamarin在开发IOS的结构!!!!!!! 先看官方 这个是以一个单页面的程序进行讲述的. 1 程序引用的程序集,核 ...
- 【Xamarin挖墙脚系列:典型的业务程序的结构搭建】
原文:[Xamarin挖墙脚系列:典型的业务程序的结构搭建] 其实app就是客户端.在现代的程序中,都是典型的C/S结构.当然,一些离线的小游戏,功能性应用除外,如:电话本,通信录,短信查看等等 这个 ...
- 微信小程序开发01 --- 微信小程序项目结构介绍
一.微信小程序简单介绍: 微信官方介绍微信小程序是一个不需要下载安装就可使用(呵呵,JS代码不用下载吗?展示的UI不用下载吗?)的应用,它实现了应用“触手可及”的梦想,用户扫一扫或搜一下即可打开应用. ...
- 毕业设计预习:VHDL入门知识学习(一) VHDL程序基本结构
VHDL入门知识学习(一) VHDL程序基本结构 简介 VHDL程序基本结构 简介 概念: HDL-Hardware Description Language-硬件描述语言-描述硬件电路的功能.信号连 ...
- Java程序的结构和执行
目录 Java程序的结构 Java程序的执行 source code -- compiler -- class file -- JVM compiler JVM Java语法 数据类型 数据的存储 堆 ...
- Android应用程序项目结构
Android应用程序项目结构 [src]:JAVA源代码目录 [gen]:由系统自动生成的JAVA源码文件,不可修改,只可查看和使用 加载的和依赖的类库 [assets]:本地存储文件的一个文件夹 ...
随机推荐
- Node.js学习笔记——Node.js开发Web后台服务
一.简介 Node.js 是一个基于Google Chrome V8 引擎的 JavaScript 运行环境.Node.js 使用了一个事件驱动.非阻塞式 I/O 的模型,使其轻量又高效.Node.j ...
- React Native 之 Text的使用
前言 学习本系列内容需要具备一定 HTML 开发基础,没有基础的朋友可以先转至 HTML快速入门(一) 学习 本人接触 React Native 时间并不是特别长,所以对其中的内容和性质了解可能会有所 ...
- 和我一起看API(一)你所不知道的LinearLayout补充
楼主英语水平差,翻译的不好的话请多多指正,嘿嘿... A Layout that arranges its children in a single column or a single row. T ...
- windows系统路径环境变量
当前系统盘符%systemdrive%或%HOMEDRIVE%C:\ 当前系统目录%systemroot%或%Windir%C:\WINDOWS 当前用户文件夹%UserProfile%或%HOMEP ...
- 我的MYSQL学习心得(十七) 复制
我的MYSQL学习心得(十七) 复制 我的MYSQL学习心得(一) 简单语法 我的MYSQL学习心得(二) 数据类型宽度 我的MYSQL学习心得(三) 查看字段长度 我的MYSQL学习心得(四) 数据 ...
- AOP之Castle DynamicProxy 动态代理
这里主要介绍使用castle这个动态代理,在.net一些开源的框架里可以找到它的影子,就连微软的rchard也是使用这个进行方法拦截等可以基于这个进行方法拦截,在这个方面PostSharp算是比较好用 ...
- Immutable(不可变)集合
不可变集合,顾名思义就是说集合是不可被修改的.集合的数据项是在创建的时候提供,并且在整个生命周期中都不可改变. 为什么要用immutable对象?immutable对象有以下的优点: 对不可靠的客户代 ...
- 应用Grunt自动化地优化你的项目前端
在不久前我曾写了一篇 应用r.js来优化你的前端 的文章,为大家介绍了r.js这个实用工具,它可以很好地压缩.合并前端文件并打包整个项目.但是如果将r.js放到项目中,我们不得不顾及到一个问题——项目 ...
- Leetcode 笔记 98 - Validate Binary Search Tree
题目链接:Validate Binary Search Tree | LeetCode OJ Given a binary tree, determine if it is a valid binar ...
- TODO:MongoDB的查询更新删除总结
TODO:MongoDB的查询更新删除总结 常用查询,条件操作符查询,< .<=.>.>=.!= 对应 MongoDB的查询操作符是$lt.$lte.$gt.$gte.$ne ...