当前位置: 首页 > article >正文

Object Pascal 过程与函数

Object Pascal 过程与函数


过程分为两种:

  • 系统标准过程(已经帮我们实现好的,我们只需要调用就可以)
  • 用户自定义过程(需要我们自己来实现)

procedure 开头的就是一个过程(如按下一个按钮的点击事件就是一个过程)

	// 以procedure 开关
	procedure TForm1.Buton1Click(Sender: TObject);

语法格式:

procedure 过程名 ([形参列表]) // 参数可选
var
	// 声明常量,变量或另一个过程或函数等
begin
	// 语句
end;

注: 在过程中声名,定义的变量的声明周期只限于本过程

// 声名部分
type 
	TForm1 = class(TForm)
		Edit1: TEdit;
		Button1: TButton;
		Label1: TLabel;
		procedure Button1Click(Sender: TObject);
		procedure Myproc(Str: String); // 这个就是我们自己声名的一个过程
	private
	...
	public
	...
	end;
	
var 
	Form1: TForm1;

// 实现部分
procedure TFrom1.Myproce(Str: String);
begin
	Str: = 'HelloWorld';
	ShowMessage(Str);
end;


Object Pascal 传值与传址


传值

传值就是声名时,传入的形参

procedure Myproc(Str: String); // 表示该过程,有一个参数,且没有返回值

注:形参传值时,会把传入的值拷贝一份,外部的值在被里面的过程修改后并不会发生改变,且值只在该过程中生效

传址

如果在过程和函数声名时,在形参名前面加var保留字进行说明的话,就是传地址的方式,也称为引用参数

// 声名部分
type 
	TForm1 = class(TForm)
		Edit1: TEdit;
		Button1: TButton;
		Label1: TLabel;
		procedure Button1Click(Sender: TObject);
		procedure Myproc(var Str: String); // 这个就是我们自己声名的一个过程
	private
	...
	public
	...
	end;
	
var 
	Form1: TForm1;
procedure TForm1.Button1Click(Sender: Tobject);
var
	x: String;
begin
	x:= "abc"
	Myproc(x); // 此时是以地址的方式传入的参数
end;

// 实现部分
procedure TFrom1.Myproce(var Str: String);
begin
	Str: = 'HelloWorld'; // 这里相当于用的外部x的地址 
	ShowMessage(Str);
end;

注:传址的方式,在过程中改变传入参数的值,外部的数据也会发生改变(两个不同的名子指向了同一个地址



Object Pascal Const 常量


const修饰的参数也称为常量参数,如果希望这具值在以后都不会发生改变就可以用const来修饰

// 声名部分
type 
	TForm1 = class(TForm)
		Edit1: TEdit;
		Button1: TButton;
		Label1: TLabel;
		procedure Button1Click(Sender: TObject);
		procedure Myproc(const Str: String); // 被修饰成常量
	private
	...
	public
	...
	end;
	
var 
	Form1: TForm1;
procedure TForm1.Button1Click(Sender: Tobject);
var
	x: String;
begin
	x:= "abc" // 常量在第一次被赋值以后,值都不能再发生改变
	Myproc(x); 
end;

// 实现部分
procedure TFrom1.Myproce(var Str: String);
begin
	Str: = 'HelloWorld'; // 这里再对一个常量进行赋值,编译器就会报错
	ShowMessage(Str);
end;


Object Pascal Const 函数的定义


  1. 在Pascal中过程和函数是很相似的,主要的区别是函数有返回值 ,而过程没有返回值
  2. 定义的方法也有些不同,过程是 procedure 而函数是用 function

语法格式:

function 方法名 ([形参列表]) : 返回值类型;
var
	// 局部声名
begin
	// 语句
end;
// 声名
type  
  TMyClass = class  
  public  
    // 声明一个无参数、无返回值的方法  
    procedure MyMethod;  
    // 声明一个带参数、有返回值的方法  
    function MyFunction(param: Integer): String;  
  end;

// 实现
implementation  
  
{ TMyClass }  
  
// 实现 MyMethod 方法  
procedure TMyClass.MyMethod;  
begin  
  // 方法体  
  ShowMessage('Hello, this is MyMethod!');  
end;  
  
// 实现 MyFunction 方法  
function TMyClass.MyFunction(param: Integer): String;  
begin  
  // 方法体  
  Result := 'The parameter is ' + IntToStr(param);  
end;

注:返回通过关键字result返回


http://www.kler.cn/news/325486.html

相关文章:

  • Ubuntu网卡配置
  • rabbitMQ 简单使用
  • 23中设计模式,以及三种常见的设计模式demo
  • 使用::selection改变文字被选中后的颜色
  • 深圳mes制造系统的主要功能
  • WIFI密码默认显示
  • OpenAI员工流失的背后:地盘争夺、倦怠、薪酬要求
  • 大模型+AIGC技术实操:GPT 大模型部署使用 AIGC实战落地方案
  • LeetCode讲解篇之3. 无重复字符的最长子串
  • springboot异常(三):异常处理原理
  • 超详细的华为ICT大赛报名流程
  • golang学习笔记32——哪些是用golang实现的热门框架和工具
  • Android Webview和ScrollView冲突和WebView使用总结
  • 数仓建模:DataX同步Mysql数据到Hive如何批量生成建表语句?| 基于SQL实现
  • cuda程序编译流程
  • Uniapp 跨域
  • 超好用的10款视频剪辑软件,从入门到精通
  • 浅谈GDDRAM的三种寻址模式
  • DigitalOcean 全球负载均衡是什么?
  • DBMS-2.3 数据库设计(3)——数据库规范化设计实现(3NF、BCNF模式分解)
  • 【有啥问啥】具身智能(Embodied AI):人工智能的新前沿
  • 基于Python大数据可视化的民族服饰数据分析系统
  • 智能编辑器、版本控制与自动化脚本
  • Spring Boot入门指南——从零开始构建你的后端服务
  • 自动化check是不是测试?
  • YoloV8改进策略:BackBone改进|PoolFormer赋能YoloV8,视觉检测性能显著提升的创新尝试
  • 《大型 C++项目的代码组织与架构设计秘籍》
  • Mac系统Docker中SQLserver数据库文件恢复记录
  • 【Linux】fork入门级使用
  • 轻量级日志管理系统SpringBoot3+Loki+grafana的使用实例