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

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);
beginStr: = '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);
varx: String;
beginx:= "abc"Myproc(x); // 此时是以地址的方式传入的参数
end;// 实现部分
procedure TFrom1.Myproce(var Str: String);
beginStr: = '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);
varx: String;
beginx:= "abc" // 常量在第一次被赋值以后,值都不能再发生改变Myproc(x); 
end;// 实现部分
procedure TFrom1.Myproce(var Str: String);
beginStr: = '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.mrgr.cn/news/39377.html

相关文章:

  • 三元祖表的定义
  • RVC变声器入门
  • PostgreSQL数据库与PostGIS在Windows中的部署与运行
  • 《OpenCV 计算机视觉》—— Harris角点检测、SIFT特征检测
  • 彩虹易支付最新版源码及安装教程(修复BUG+新增加订单投诉功能)
  • Grafana链接iframe嵌入Web前端一直跳登录页面的问题记录
  • C#基于SkiaSharp实现印章管理(10)
  • C++番外篇-------排序算法总结
  • 前海桂湾地铁E出口免费停车位探寻
  • rocky9.2实现lvs(DR模式)+keepalived实现高可用的案例详解(双机热备、lvs负载均衡、对后端服务器健康检查)
  • 端侧多模态 | 不到10亿参数的端侧Agent竟媲美GPT-4V?AI手机不远了!
  • Java 之 ssm框架入门
  • Java中的PriorityQueue详解
  • 2-107 基于matlab的hsv空间双边滤波去雾图像增强算法
  • 清理windows 内存 (RamMap)
  • 鸿蒙开发(NEXT/API 12)【硬件(振动开发1)】振动
  • calibre-web浏览器标题icon修改
  • “找不到emp.dll,无法继续执行代码”需要怎么解决呢?分享6个解决方法
  • ORM的了解
  • 每日OJ_牛客_NC95数组中的最长连续子序列_排序+模拟_C++_Java