设为首页 加入收藏

TOP

Delphi_08_Delphi_Object_Pascal_基本语法_06_函数参数(一)
2017-10-10 12:06:20 】 浏览:6065
Tags: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(10);
    //提供参数
    unit1.defaultParameter(10,'volcanol');

    //调用无类型参数的函数
    {
    1、constant object cannot be passed as var paramter
    }
    //WriteLn(noTypeParameter('100'));  //这样无法调用
    nVar := 100;
    WriteLn(noTypeParameter(nVar));

    //转换时出现了异常,因此不建议使用无类型参数
    strVar:= '100';
    WriteLn(noTypeParameter(strVar));

    //调用短字符串类型参数的函数
    for i := 0 to sizeof(ShortString)  do
    begin
         strVar[i]:='a';
    end;
    shortSringParameter(strVar);

    //如果将 string类型的变量传递给 shortString 类型变量会自动截断
    for i := 0 to sizeof(ShortString) + 128 do
    begin
         strVar[i]:= 'a';
    end;
    shortSringParameter(strVar);

    //动态数组参数
    try
        SetLength(nVarArray,10);
        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 下一页 尾页 1/2/2
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇[范例] Firemonkey TForm 实现 On.. 下一篇[django]手动数据库备份

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目