一、工程文件
program MultiUnit; {$APPTYPE CONSOLE} uses SysUtils, Unit1 in 'Unit1.pas'; begin //引用unit1中的变量,因为是在接口部分定义所以可以引用 strGreet:='Hello world'; //调用unit1中的过程 因为是在接口部分定义所以可以引用 Greeting(strGreet); //调用unit2中的函数;因为是在接口部分定义所以可以引用 nAdd:=10; nAddfactor:=11; 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=33; implementation end.
欢迎转载,转载请注明来源。
分类:
Delphi
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
· 一个奇形怪状的面试题:Bean中的CHM要不要加volatile?
· [.NET]调用本地 Deepseek 模型
· 一个费力不讨好的项目,让我损失了近一半的绩效!
· 微软正式发布.NET 10 Preview 1:开启下一代开发框架新篇章
· 没有源码,如何修改代码逻辑?
· PowerShell开发游戏 · 打蜜蜂
· 在鹅厂做java开发是什么体验
· WPF到Web的无缝过渡:英雄联盟客户端的OpenSilver迁移实战