查看: 78|回覆: 1

Delphi-基础(例程、例程返回值)

[複製鏈接]

2

主題

0

回帖

0

積分

热心网友

金币
0
閲讀權限
220
精華
0
威望
0
贡献
0
在線時間
0 小時
註冊時間
2008-7-19
發表於 2019-12-2 16:33:00 | 顯示全部樓層 |閲讀模式

一、例程:Delphi中独有的称呼,例程是将具体某个功能的代码进行封装表现形式:
  1、过程
  2、函数
  过程和函数的区别在于有没有返回值
二、例程的作用
  1、可以解决命名冲突问题
  2、提高代码的重复使用率
  3、提高代码可维护性
三、使用历程
  1、定义

1 procedure Demo1();    //过程
2 begin
3 
4 end;

  函数的定义

 1 function Demo2(var a : Integer;var b : Integer) : Integer;  //函数
 2 begin
 3   Writeln(a,',',b);
 4 end;
 5 
 6 {传递参数个数不固定(多个参数)}
 7 procedure  Demo3(const num1 : array of Integer);
 8 var
 9 X,Y : Integer;
10 begin
11 
12 end;

 

四、例程返回值

 1 {*------------------------------------------------------------------------------
2
一、什么是例程:Delphi中独有的称呼,例程是将具体某个功能的代码进行封装表现形式: 3 1、过程 4 2、函数 5 过程和函数的区别在于有没有返回值 6 二、例程的作用 7 1、可以解决命名冲突问题 8 2、提高代码的重复使用率 9 3、提高代码可维护性 10 三、怎么使用历程 11 1、定义 12 13 -------------------------------------------------------------------------------} 14 procedure Demo1(a : Integer;b : Integer); //过程,传值 15 begin 16 Writeln(a+b); 17 end; 18 19 {*------------------------------------------------------------------------------ 20 函数的定义 21 @return 22 -------------------------------------------------------------------------------} 23 function Demo2(var a : Integer;var b : Integer) : Integer; //过程,传地址 24 begin 25 Writeln(a+b); 26 end; 27 28 {传递参数个数不固定(多个参数)} 29 procedure Demo3(const IntArray : array of Integer); 30 var 31 I : Integer; 32 begin 33 Writeln('----------------------------'); 34 for I := Low(IntArray) to High(IntArray) do begin 35 Writeln(IntArray[I],#$09); 36 end; 37 Writeln('数组长度为:',Length(IntArray)); 38 end; 39 40 var 41 a,b : Integer; 42 43 begin 44 a := 1; 45 b := 2; 46 Demo1(a,b); 47 Demo2(a,b); 48 Demo3([4,6,9,7]);//数组传值 49 Readln; 50 end.
 1 {返回值:通过引用获取运算结果}
 2 function Sub1(Num3 : Integer;Num4 : Integer;var sum : Integer) : Integer;
 3 //var sum : Integer 传入地址
 4 begin
 5   sum := Num3 - Num4;
 6   Exit;
 7 end;
 8 
 9 var
10   Sum1 : Integer;
11 begin
12   Sub1(5,3,Sum1);
13   Writeln(Sum1);
14   Readln;
15 end.
 1 {返回值:out}
 2 function mul(Num5:Integer;Num6:Integer;out sum:Integer):Integer;
 3 begin
 4   sum := Num5 * Num6;
 5   Exit;
 6 end;
 7 var
 8   sum : Integer;
 9 begin
10   mul(5,3,sum);
11   Writeln(sum);
12   Readln;
13 end.
1 {通过函数名称获取返回值}
2 function GetResultByFunName():Integer;
3 begin
4   GetResultByFunName := 1+3;
5 end;
6 begin
7   Writeln(GetResultByFunName());
8   Readln;
9 end.
 1 {overload 函数重载:函数名相同,参数列表不同,使用关键字标识}
 2 function Add(Num1 : Integer;Num2 : Integer;var sum : Integer) : Integer;  overload;
 3 begin
 4   sum := Num1 + Num2;
 5   Exit;
 6 end;
 7 
 8 function Add(Num1 : Double;Num2 : Double;out sum : Double) : Double; overload;
 9 
10 begin
11   sum := Num1 + Num2;
12   Exit;
13 end;
14 
15 var
16 //  sum : Integer;
17   sum : Double;
18 begin
19 //  Add(2,3,sum);
20   Add(2.4,2.02132,sum);
21   Writeln(sum);
22   Readln;
23 end.
 1 {forward 前置声明}
 2 function DivFun() : Integer; forward;
 3 
 4 function MilFun() : Integer;
 5 begin
 6   DivFun();
 7 end;
 8 
 9 function DivFun() : Integer;
10 begin
11   Writeln('test');
12 end;
13 begin
14   MilFun();
15   Readln;
16 end.

 

 

 

 

 



来源:https://www.cnblogs.com/rise-home/p/11971495.html
回覆

使用道具 舉報

0

主題

2092

回帖

1萬

積分

琼殿精英

金币
10581
閲讀權限
220
精華
0
威望
0
贡献
0
在線時間
0 小時
註冊時間
2011-10-11
發表於 2026-6-13 12:03:26 | 顯示全部樓層
顶一个!楼主总结得很清晰,对于Delphi初学者来说是很不错的入门教程。

补充几点小建议:

1. 关于返回值,其实在Delphi中还有一种方式是使用Result变量,和函数名赋值是等效的,比如:
  1. function GetResult(): Integer;
  2. begin
  3.   Result := 10;
  4. end;
複製代碼

2. 关于var和out的区别,var是传入地址可以双向传递,而out主要用于COM接口开发,调用时会忽略传入值只取输出值,普通的Delphi程序其实用var就够了。

3. 函数重载确实很实用,不过要注意参数类型必须有明显区别,否则编译器会报错的。

4. 前置声明forward在处理两个相互调用的函数时特别有用,这个技巧很实用。

期待楼主更多Delphi相关的教程!支持一下~
回覆

使用道具 舉報

您需要登錄後才可以回帖 登錄 | 立即注册

本版積分規則

圆梦公社,专注于为全球华人提供纯粹技术交流的地方,请勿发布任何政治及违法的言论。如有相关侵权、举报、投诉及建议等,请发 E-mail:dzh188@hotmail.com

Powered by Discuz! X5.0 © 2001-2026 Discuz! Team.

在本版发帖返回顶部