发现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_函数参数的更多相关文章

  1. 【C/C++】引用&的含义/语法/作为函数参数/函数返回值/本质/常量引用

    含义 引用不产生副本,只是给原变量起了别名. 对引用变量的操作就是对原变量的操作. 基本语法 数据类型 &别名 = 原名 e.g. int a = 10; int &b = a; // ...

  2. Delphi_07_Delphi_Object_Pascal_基本语法_05_函数参数

    这里主要讨论Delphi中函数.方法的相关内容. 一.工程文件 { Delphi语法方法和函数 1.方法 2.函数 } program Routine; {$APPTYPE CONSOLE} uses ...

  3. C++中对C的扩展学习新增语法——内联函数以及函数参数

    内联函数以及函数参数 内联函数 使用 inline 关键字必须和函数体放在一起. 内联函数具有内部链接属性. 内联函数会被编译器在编译阶段替换到函数调用的地方. 可以把内联函数定义写到头文件中,多个c ...

  4. python基础语法5 函数定义,可变长参数

    函数 1.什么是函数 函数就是一种工具. 可以重复调用 2.为什么要用函数 1.防止代码冗(rong)余 2.代码的可读性差 3.怎么用函数 1.定义函数-->制造工具 2.调用函数--> ...

  5. Python基本语法_函数属性 & 参数类型 & 偏函数的应用

    目录 目录 前言 软件环境 Python Module的程序入口 函数的属性 Python函数的创建 函数的参数 必备参数 缺省参数 命名参数 不定长参数 匿名参数 偏函数的应用 前言 Python除 ...

  6. ES6新增语法(二)——函数和参数

    箭头函数 箭头函数:将原来函数的function关键字和函数名都删掉,并使用"=>"连接参数列表和函数体. 箭头函数语法: (参数1,参数2)=>{ 函数体 } 注意点 ...

  7. JS基础语法---函数---介绍、定义、函数参数、返回值

    函数: 把一坨重复的代码封装,在需要的时候直接调用即可 函数的作用: 代码的重用 函数需要先定义,然后才能使用 函数名字:要遵循驼峰命名法 函数一旦重名,后面的会把前面的函数覆盖 Ctrl +鼠标左键 ...

  8. 深入理解javascript函数参数与闭包(一)

    在看此文章,希望先阅读关于函数基础内容 函数定义与函数作用域 的章节,因为这篇文章或多或少会涉及函数基础的内容,而基础内容,我放在函数定义函数作用域 章节. 本文直接赘述函数参数与闭包,若涉及相关知识 ...

  9. Swift3.0P1 语法指南——函数

    原档:https://developer.apple.com/library/prerelease/ios/documentation/Swift/Conceptual/Swift_Programmi ...

随机推荐

  1. python中IndentationError: expected an indented block错误的解决方法

    IndentationError: expected an indented block 翻译为IndentationError:预期的缩进块 解决方法:有冒号的下一行要缩进,该缩进就缩进

  2. atitit.attilax的软件 架构 理念.docx

    atitit.attilax的软件 架构 理念.docx 1. 预先规划.1 2. 全体系化1 3. 跨平台2 4. 跨语言2 5. Dsl化2 5.1. 界面ui h5化2 6. 跨架构化2 7. ...

  3. Xamarin.Android多界面

    一.准备 开始学习本教程前必须先完成该教程http://www.cnblogs.com/yaozhenfa/p/xamarin_android_quickstart.html 否则将无法继续. 二.界 ...

  4. Asp.Net 5 新增公告仓库

    一直以来Asp.Net 5 都没有一个比较统一的公告页,对于一个在日夜更新的项目来说,很多人经常会遇到问题但是不知道去哪里寻找帮助,现在Asp.Net 5 项目组新增了一个公告仓库来解决这个问题.  ...

  5. HBase笔记:对HBase原理的简单理解

    早些时候学习hadoop的技术,我一直对里面两项技术倍感困惑,一个是zookeeper,一个就是Hbase了.现在有机会专职做大数据相关的项目,终于看到了HBase实战的项目,也因此有机会搞懂Hbas ...

  6. 如何安装一个优秀的BUG管理平台——真的是手把手教学!

    前言 就BUG管理而言,国内的禅道做得很不错,而且持续有更新.我们来看看如何从头到尾安装禅道,各位要注意的是,不是文章深或者浅,而是文章如何在遇到问题的时候,从什么途径和用什么方法解决问题的.现在发觉 ...

  7. 在rem布局下使用背景图片以及sprite

    现在移动端页面用rem布局已经是一大流派了,成熟的框架如淘宝的flexiable.js,以及我的好友@墨尘写的更轻量级的hotcss.用rem作单位使得元素能够自适应后,还有一块需要关注的,那就是背景 ...

  8. 【原】彻底解决WPS弹出热点广告、WPS购物图标的办法

    一直用WPS,但一直有一个问题迟迟没有解决,那就是讨厌的WPS广告问题! 每次开机都会自动在托盘上闪烁图标:“WPS购物”和“WPS热点”! 用自定义托盘图标隐藏都不管用,自动又会给改回来!这简直是流 ...

  9. Google翻译之路

    如何将整个网站都翻译成某种语言,想必大家都有碰到这样的问题吧. 如果能够访问Google的话, 那这个太容易不过了. 来看,下面的就是Google提供的直接翻译某个网站. http://transla ...

  10. 大数据之Oozie——源码分析(一)程序入口

    工作中发现在oozie中使用sqoop与在shell中直接调度sqoop性能上有很大的差异.为了更深入的探索其中的缘由,开始了oozie的源码分析之路.今天第一天阅读源码,由于没有编译成功,不能运行测 ...