[转]Delphi过程函数传递参数的几种方式
在Delphi过程、函数中传递参数几个修饰符为Const、Var、Out。另一种不加修饰符的为默认按值传递参数。
一、默认方式以值方式传递参数
procedure TForm1.ProcNormal(Value: string);
begin
OrigNum:=Value+ Me;
lblReturn.Caption:=OrigNum;//OrigNum为Hello Me
lblOrig.Caption:=Value;//Value为Hello
end;
调用:
OrigNum:=Hello;
ProcNormal(OrigNum);
二、以Const方式传递参数,这个参数在调用过程中不能改变,并且这种方式会被编译器优化,一般建议尽可能地使用这种方式。
procedure TForm1.ProcConst(const Value: string);
begin
OrigNum:=Value+ Me;
lblReturn.Caption:=OrigNum;//为Hello Me‘
lblOrig.Caption:=Value;//为Hello Me
end;
三、按引用方式传递参数
procedure TForm1.ProcRef(var value: string);
begin
OrigNum:=Value+ Me;
lblReturn.Caption:=OrigNum;//为Hello Me‘
lblOrig.Caption:=Value;//为Hello Me
end;
四、按Out方式传递参数,这个方式传递参数时,参数可以不被初始化,即使有值也被忽视,它一般用于输出,它可以实现在一个过程中返回多个值,我们通常在分布式对象模型,如COM中使用它。
procedure TForm1.ProcOut(out Value: string);
begin
OrigNum:=Value+ Me;
lblReturn.Caption:=OrigNum;//为Me
lblOrig.Caption:=Value;//为Me
end;
五、无类型参数,这是一种较为特殊的方法,参数的类型不确定,只能用Const、Var、Out修饰,不能用于值方式传递参数,具体使用示例如下:
procedure TForm1.ProcUntype(const Value);
begin
OrigNum:=string(Value)+ Me;
lblReturn.Caption:=OrigNum;//为Hello Me
lblOrig.Caption:=string(Value);//为Hello Me
end;
六、默认参数,即如果此参数在调用时未提供时,将使用默认值。
procedure TForm1.ProcDefault(const Value, const DefaultValue:string= 123);
begin
OrigNum:=Value+ Me+DefaultValue;
lblReturn.Caption:=OrigNum;//为Hello Me 123
lblOrig.Caption:=Value;// 为Hello Me 123
end;
七、开放数组参数,即参数数组的元素个数不确定。
procedure TForm1.ProcArray(const Value: array of string);
var
i:Integer;
begin
for i:=Low(Value) to High(Value) do
OrigNum:=OrigNum+Value[i];//调用后为Hello abc dbd
lblReturn.Caption:=OrigNum;
end;
调用:
OrigNum:=Hello;
ProcArray([ abc , dbd]);
八、无类型开放数组参数,即类型及元素个数皆不确定。在WIN32平台中,这个参数的类型实际为array of TVarRec,其使用示例如下:
procedure TForm1.ProcArrayConst(const Value: array of const);
var
i:Integer;
begin
for i:=Low(Value) to High(Value) do
with Value[i] do
case VType of
vtAnsiString: OrigNum:= OrigNum+String(VAnsiString);
vtInteger: OrigNum:=OrigNum+IntToStr(VInteger);
vtBoolean: OrigNum := OrigNum + BoolToStr(VBoolean);
vtChar: OrigNum := OrigNum + VChar;
vtExtended: OrigNum := OrigNum + FloatToStr(VExtended^);
vtString: OrigNum := OrigNum + VString^;
vtPChar: OrigNum := OrigNum + VPChar;
vtObject: OrigNum := OrigNum + VObject.ClassName;
vtClass: OrigNum := OrigNum + VClass.ClassName;
vtCurrency: OrigNum := OrigNum + CurrToStr(VCurrency^);
vtVariant: OrigNum := OrigNum + string(VVariant^);
vtInt64: OrigNum := OrigNum + IntToStr(VInt64^);
end;
lblReturn.Caption:=OrigNum;//调用后为Hello abc 3
end;
调用:
OrigNum:=Hello;
ProcArrayConst([ abc ,3]);
以上就是常见几种传递参数的方式。
转载于:https://www.cnblogs.com/moon25/archive/2012/02/04/2337769.html
[转]Delphi过程函数传递参数的几种方式相关推荐
- 向函数传递结构的三种方式
向函数传递结构的三种方式 零.写在前面 在程序设计的过程当中,我们经常会涉及到选择数据的类型,在很多情况下,单单是普通的变量和数组并不足以满足我们的需求,这时候,C语言为我们提供了一种计较好用的数据类 ...
- 表单提交和超链接请求传递参数的几种方式
表单提交和超链接请求传递参数的几种方式 这段时间在使用easy-ui的datagrid,他有自己提交表单的方式,所以就整理整理页面对参数的提交方式: 注:下面代码都已经过测试. 1. HTML提交表单 ...
- vue-router 传递参数的几种方式
本文转载自:https://blog.csdn.net/crazywoniu/article/details/80942642 vue-router传递参数分为两大类 编程式的导航 router.pu ...
- JSP中页面向Action传递参数的几种方式
转自:http://zhidao.baidu.com/link?url=kEOyifTghb--LvcQVpkh-kkpgZIcYU-dlqQyNM5e3b_9fywiDQGVxAOHVedJkqGA ...
- Flink获取外部传递参数的两种方式
目录 一.前言 二.实现 2.1 通过参数方式直接传递 2.2 通过配置文件来获取参数值 一.前言 在Flink中,我们会对接Kafka,Kafka的参数比较多,如果我们希望通过灵活的方式修改参数,而 ...
- mybatis 传递参数的三种方式
mybatis 框架的主要工作是数据层, 侧重于与数据库打交道的sql语句的编写,对sql也要求比较熟练. mybatis 传递参数的方式主要有三种: 1. 多个参数的传递方式 形式如: ...
- Python传递参数的5种方式
一.位置传参 # 位置传递实例: def fun1(a,b,c):return a+b+cprint(fun1(1,2,3)) 输出: 6 二.关键字传参 根据每个参数的名字写入函数参数 # 关键字传 ...
- react --- 隔代传递参数的三种方式
组件跨层级通信 - Context 上下文提供一种不需要每层设置props就能跨多级组件传递数据的方式 方式1 Provider提供值 Consumer来消费传递的值 import React fro ...
- Mybatis传递参数的三种方式
第一种: Dao层使用@Param注解的方法 VersionBox getVersionByVersionNumAndVersionType(@Param("versionNum" ...
最新文章
- 蚂蚁金服 Service Mesh 实践探索
- HDU2029:Palindromes _easy version
- 微信红包要哭了...给抢红包设计一个新交互
- 微信公众号 JSSDK 提示:invalid signature
- 手把手带你入门Python爬虫(二、爬虫预备知识)
- 崇高文本_崇高文本片段指南
- 【华为云技术分享】大数据容器化,头部玩家尝到了甜头
- 为什么要学数据结构?| 原力计划
- JQuery+div+css实现无限级联树
- 关键词组合工具_关键词的优化方法及搜索工具,亚马逊关键词处理
- java json-rpc_JSON-RPC(jsonrpc4j)使用demo
- 微信修改步数 Android,安卓微信怎么改步数
- 2021年中国发改委和财政部PPP项目整体现状分析,城市基础建设仍是重中之重「图」
- 卡内基梅隆大学计算机专业介绍,美国卡内基梅隆大学计算机专业介绍
- 用Auto.js批量删除空间说说
- 微型计算机中的数据总线用来进行什么的传输,汽检2011级汽车车载网络复习题答案...
- 【流体机械原理及设计03】
- 【科创人独家】EasyStack王瑞琳:All In超级领先,知易行难
- winform 使用SplashScreen窗口
- 计算机主机内部主要由哪些硬件构成,计算机硬件由哪几部分组成?各部分的作用是什么?...