Delphi_08_Delphi_Object_Pascal_基本语法_06_函数参数
发现Delphi中关于函数参数部分的内容还是比较多的,暂时说到这篇随笔为止吧,以后再继续讨论一下函数的参数部分的内容。
一 工程文件
- program DefaultParameter;
- {$APPTYPE CONSOLE}
- uses
- SysUtils,
- Unit1 in 'unit1.pas';
- var
- nVar:integer;
- strVar:string;
- i:integer;
- nVarArray:array of integer;
- begin
- {
- 1、 调用具有默认参数的方法
- }
- //不提供参数
- unit1.defaultParameter();
- //提供参数
- unit1.defaultParameter(,'volcanol');
- //调用无类型参数的函数
- {
- 1、constant object cannot be passed as var paramter
- }
- //WriteLn(noTypeParameter('100')); //这样无法调用
- nVar := ;
- WriteLn(noTypeParameter(nVar));
- //转换时出现了异常,因此不建议使用无类型参数
- strVar:= '';
- WriteLn(noTypeParameter(strVar));
- //调用短字符串类型参数的函数
- for i := to sizeof(ShortString) do
- begin
- strVar[i]:='a';
- end;
- shortSringParameter(strVar);
- //如果将 string类型的变量传递给 shortString 类型变量会自动截断
- for i := to sizeof(ShortString) + do
- begin
- strVar[i]:= 'a';
- end;
- shortSringParameter(strVar);
- //动态数组参数
- try
- SetLength(nVarArray,);
- WriteLn(Low(nVarArray));
- WriteLn(High(nVarArray));
- for i := Low(nVarArray) to High(nVarArray) do
- begin
- nVarArray[i] := i;
- end;
- WriteLn(High(nVarArray));
- arrayParameter(nVarArray);
- except
- on E:Exception do
- ReadLn;
- end;
- ReadLn;
- ReadLn;
- end.
二、单元文件
- { 参数
- 1、默认参数
- 2、无类型参数
- 3、短字符串参数
- 4、数组参数
- }
- {
- 1、 和其他的OOP编程语言一样,Delphi的Object Pascal语言也支持方法和函数的
- 默认参数机制
- 2、 默认参数在某些场合非常适用,当一些方法、函数的参数在不同的场合调用时
- 均具有同样的设置时,就可以设置为默认参数
- 3、 如何函数参数设置过默认参数,那么在调用的时候就可以不提供实际参数
- }
- unit Unit1;
- interface
- {
- 单元文件的结构需要注意
- }
- uses
- SysUtils;
- {
- 单元文件中, type类型定义必须在 uses 子句后面
- }
- type
- PInt=^integer;
- { 默认参数
- 1、默认参数的定义的规则与C++里面默认参数的规则类似
- 2、默认参数定义的形式参数必须从最后一个参数开始,及从右往左定义
- 3、如果一个参数定义了默认参数,则其后面的参数均需要定义默认参数
- 4、如果在一个类型中定义了多个形式参数,则这些形式参数均不能定义默认参数
- 5、
- }
- procedure defaultParameter(nVar:integer;varStr:string='Delphi');
- { 无类型参数
- 1、无类型参数就是例程声明时形式参数不指定形式参数的类型
- 2、无类型参数定义时必须用关键字var、const、out之中的一个
- 3、无类型参数不能使默认的传值方式
- 4、在使用无类型参数时,必须将参数进行类型转换后才能使用
- 5、调用时需要注意存在一些限制
- A) 整型字面值不能传递给无类型参数
- B) 无类型的整型值不能传递给无类型参数
- 6、由于无类型参数在转换的时候存在太多的限制,建议一般不要使用这种类型的定义
- 方法
- }
- function noTypeParameter(var noTypeVar):string;
- { 短字符串参数
- 1、 短字符串类型 ShortString 是255字节长度的字符串类型
- 2、 可以通过 string[length] 的方法定义指定长度小于255字节的字符串类型
- varStr:string[255]; 就是定义一个长度最大为255字节的字符串变量
- 3、 形式参数不能用 string[length] 的方式定义 ,如果需要的话就必须定义新的
- 数据类型
- 3、 2010以后 string默认为WideString, 需要打开开关才能使 AnsiString类型
- }
- procedure shortSringParameter(strVar:ShortString);
- { 数组参数
- 1、数组分为静态数组、动态数组,还有一种数组类型 开发数组
- 2、静态数组定义为
- nVarArray:array[1..10] of integer; //在定义的时候自定数组维度
- 3、动态数组定义为
- 定义动态数组类型
- nVarArray:array of integer; //定义时不指定数组的维度,
- 使用前用 SetLength(数组名,第一维的长度,第二维的长度,) 函数申请
- 数组空间。
- 3、数组参数在定义时不能指定数组的维度和大小,要使用指定类型的参数,则必须定义
- 新的数据类型
- 4、还可以使用开放数组形式定义数组参数
- }
- procedure arrayParameter(nVarArray:array of integer);
- implementation
- procedure defaultParameter(nVar:integer;varStr:string='Delphi');
- var
- str:string;
- begin
- str := 'Hello ' + varStr;
- WriteLn(str);
- end;
- function noTypeParameter(var noTypeVar):string;
- var
- str:string;
- begin
- //将 noTypeVar 无类型参数转换为整型数
- str:= IntToStr(integer(noTypeVar));
- //隐含的变量 result 返回函数值
- result := str;
- end;
- procedure shortSringParameter(strVar:ShortString);
- begin
- WriteLn(strVar);
- end;
- {
- 1、下面的函数执行的过程中还存在一定的问题,需要继续研究一下
- 2、动态数组的上、下界最好通过Low()、High()函数来求取,所以与 C/C++ 有一点区别
- }
- procedure arrayParameter(nVarArray:array of integer);
- var
- i:integer;
- begin
- WriteLn(Low(nVarArray));
- WriteLn(High(nVarArray));
- for i := Low(nVarArray) to High(nVarArray) do
- begin
- //WriteLn(IntToStr(nVarArray[i])); //这样编译就会出错,原因??
- WriteLn(nVarArray[i]) ;
- end;
- end;
- end.
欢迎转载本系列文章,转载请注明来源。
Delphi_08_Delphi_Object_Pascal_基本语法_06_函数参数的更多相关文章
- 【C/C++】引用&的含义/语法/作为函数参数/函数返回值/本质/常量引用
含义 引用不产生副本,只是给原变量起了别名. 对引用变量的操作就是对原变量的操作. 基本语法 数据类型 &别名 = 原名 e.g. int a = 10; int &b = a; // ...
- Delphi_07_Delphi_Object_Pascal_基本语法_05_函数参数
这里主要讨论Delphi中函数.方法的相关内容. 一.工程文件 { Delphi语法方法和函数 1.方法 2.函数 } program Routine; {$APPTYPE CONSOLE} uses ...
- C++中对C的扩展学习新增语法——内联函数以及函数参数
内联函数以及函数参数 内联函数 使用 inline 关键字必须和函数体放在一起. 内联函数具有内部链接属性. 内联函数会被编译器在编译阶段替换到函数调用的地方. 可以把内联函数定义写到头文件中,多个c ...
- python基础语法5 函数定义,可变长参数
函数 1.什么是函数 函数就是一种工具. 可以重复调用 2.为什么要用函数 1.防止代码冗(rong)余 2.代码的可读性差 3.怎么用函数 1.定义函数-->制造工具 2.调用函数--> ...
- Python基本语法_函数属性 & 参数类型 & 偏函数的应用
目录 目录 前言 软件环境 Python Module的程序入口 函数的属性 Python函数的创建 函数的参数 必备参数 缺省参数 命名参数 不定长参数 匿名参数 偏函数的应用 前言 Python除 ...
- ES6新增语法(二)——函数和参数
箭头函数 箭头函数:将原来函数的function关键字和函数名都删掉,并使用"=>"连接参数列表和函数体. 箭头函数语法: (参数1,参数2)=>{ 函数体 } 注意点 ...
- JS基础语法---函数---介绍、定义、函数参数、返回值
函数: 把一坨重复的代码封装,在需要的时候直接调用即可 函数的作用: 代码的重用 函数需要先定义,然后才能使用 函数名字:要遵循驼峰命名法 函数一旦重名,后面的会把前面的函数覆盖 Ctrl +鼠标左键 ...
- 深入理解javascript函数参数与闭包(一)
在看此文章,希望先阅读关于函数基础内容 函数定义与函数作用域 的章节,因为这篇文章或多或少会涉及函数基础的内容,而基础内容,我放在函数定义函数作用域 章节. 本文直接赘述函数参数与闭包,若涉及相关知识 ...
- Swift3.0P1 语法指南——函数
原档:https://developer.apple.com/library/prerelease/ios/documentation/Swift/Conceptual/Swift_Programmi ...
随机推荐
- 微软发布VSBT,无需安装Visual Studio即可实现项目编译
安装了Visual Studio的那些使用微软平台的开发者通常能够非常容易地操作自己的项目:打开解决方案,修改内容,设置好所有必须的文件以及配置后编译项目.但是在构建服务器或者持续交付系统等没有安装V ...
- C#使用Aspose.Cells导出Excel简单实现
首先,需要添加引用Aspose.Cells.dll,官网下载地址:http://downloads.aspose.com/cells/net 将DataTable导出Xlsx格式的文件下载(网页输出) ...
- Android中Fragment的两种创建方式
fragment是Activity中用户界面的一个行为或者是一部分.你可以在一个单独的Activity上把多个Fragment组合成为一个多区域的UI,并且可以在多个Activity中再使用.你可以认 ...
- Autofac 的点滴
泛型类型的注册和使用 public interface IRepository<T> where T:class { } public interface ISchoolDetailRep ...
- Spring MVC入门
1.什么是SpringMvc Spring MVC属于SpringFrameWork的后续产品,已经融合在Spring Web Flow里面.Spring 框架提供了构建 Web 应用程序的全功能 M ...
- [BOT]自己动手实现android 饼状图,PieGraphView,附源码解析
本文要介绍的是一个参照手机支付宝app里面记账本功能里的"饼状图"实现的控件.通常app中可能的数据展示控件有柱状图,折线图,饼状图等,如果需要一个包含多种View控件的库,那么 ...
- Vue.js——60分钟快速入门
Vue.js介绍 Vue.js是当下很火的一个JavaScript MVVM库,它是以数据驱动和组件化的思想构建的.相比于Angular.js,Vue.js提供了更加简洁.更易于理解的API,使得我们 ...
- 压缩javascript文件方法
写在前面的话:正式部署前端的时候,javascript文件一般需要压缩,并生成相应的sourcemap文件,对于一些小型的项目开发,这里提供一个简单的办法. ======正文开始====== 1.下载 ...
- CSharpGL(23)用ComputeShader实现一个简单的ParticleSimulator
CSharpGL(23)用ComputeShader实现一个简单的ParticleSimulator 我还没有用过Compute Shader,所以现在把红宝书里的例子拿来了,加入CSharpGL中. ...
- ABP(现代ASP.NET样板开发框架)系列之22、ABP展现层——导航栏设置
点这里进入ABP系列文章总目录 基于DDD的现代ASP.NET开发框架--ABP系列之22.ABP展现层——导航栏设置 ABP是“ASP.NET Boilerplate Project (ASP.NE ...