DELPHI参数几个概念上的区别 收藏

delphi12中Tarray<string> 在 Delphi 里,属于动态字符串数组类型,其长度能在运行时动态改变。下面为你介绍。 阅读详情

DELPHI参数几个概念上的区别 收藏
 引用参数:

引用参数用var关键字标示

procedure DoubleTheValue (var Value: Integer);
begin
  Value := Value * 2;
end;在这种情况下,参数既把一个值传递给过程,又把新值返回给调用过程的代码。当你执行完以下代码时:

var
  X: Integer;
begin
  X := 10;
  DoubleTheValue (X);x变量的值变成了20,因为过程通过引用访问了X的原始存储单元,由此改变了X的初始值 在C++中, 引用用&表示

值得注意的是:

Delphi 3增加了一种新的参数:out。out参数没有初始值,只是用来返回一个值。out参数应只用于COM过程和函数,一般情况下最好使用更有效的var参数。除了没有初始值这一点之外,out参数与var参数相同。

常量参数

和C++一样,用CONST关键字表示

function DoubleTheValue (const Value: Integer): Integer

编译器会选用一种与引用参数相似的方法编译常参(C++术语中的常量引用),但是从表面上看常参又与值参相似,因为常参初始值不受例程的影响。

开放数组参数

与C语言不同,Pascal 函数及过程的参数个数是预定的。如果参数个数预先没有确定,则需要通过开放数组来实现参数传递。

一个开放数组参数就是一个固定类型开放数组的元素。 也就是说,参数类型已定义,但是数组中的元素个数是未知数。

function Sum (const A: array of Integer): Integer;类型变化的开放数组参数

除了类型固定的开放数组外,Delphi 还允许定义类型变化的甚至无类型的开放数组。这种特殊类型的数组元素可随意变化,能很方便地用作传递参数。

技术上,array of const 类型的数组就能实现把不同类型、不同个数元素组成的数组一下子传递给例程

function Format (const Format: string; const Args: array of const): string;N := 20;
S := 'Total:';
Label1.Caption := Format ('Total: %d', [N]);
Label2.Caption := Format ('Int: %d, Float: %f', [N, 12.4]);
Label3.Caption := Format ('%s %d', [S, N * 2]);

但我们往往会遇到这样的问题:

在FUN()中传入 var a: array of integer 参数之后
不能在函数里SetLength(a,num);

所以我们把参数设为动态数组类型

type

tarrayofinteger = array of integer;

procedure grow( var data: tarrayofinteger );

begin

setlength( data, length(data) ,   新长度 );

// 动态数组作为参数可以改变数组大小。

end;

参考BLOG:

http://hi.baidu.com/broland/blog/item/0ab119f516b4ade57609d75c.html

参考文献:

<PASCAL精要>


本文来自优快云博客,转载请标明出处:http://blog.youkuaiyun.com/jqandjq/archive/2010/03/02/5339123.aspx

基于CubeMX与lwip的STM32轻量级HTTP服务器搭建及VSCode高效开发指南 本文详细介绍了如何在STM32单片机上,利用STM32CubeMX图形化配置工具和轻量级TCP/IP协议栈lwIP,快速搭建一个轻量级HTTP服务器。通过结合VSCode的高效代码编辑能力,提供了一套从硬件连接到动态网页交互(SSI/CGI)的完整开发指南,旨在为嵌入式设备提供零成本、跨平台的Web交互界面。 阅读详情

相关推荐

STC8H硬件IIC从机模式实战:手把手教你驱动OLED屏幕(附完整代码)

本文详细介绍了如何使用STC8H单片机的硬件IIC从机模式驱动SSD1306 OLED屏幕,包括硬件连接、寄存器配置、中断处理和实际应用中的优化技巧。通过完整的代码示例和实战经验分享,帮助开发者快速掌握I2C通信协议和OLED屏幕驱动技术,提升嵌入式开发效率。

weixin_33747129的博客 336

Delphi 泛型的使用案例

Delphi 泛型的使用案例解决问题:如有一组数字,55 68 79 120 130 180 先进行最大两个数的比对,譬如 130 180 比对,取小值,得到130,大的180-130=50, 然后在将50放入剩余的55 68 79 120比对,重复上面的比对要求,如79 120 比对结果41 再和55 68比对,运行直至最后两个的差值。 应用泛型的排序与复制 Tarray.Sort Tarray.

tanqth的专栏 4373

TL431过压保护电路实战:5.5V阈值设计全流程(附MOSFET选型建议)

本文详细介绍了基于TL431和MOSFET构建5.5V阈值过压保护电路的完整设计流程。内容涵盖核心原理、阈值计算、驱动电路设计,并重点针对大电流应用场景,提供了MOSFET选型与散热处理的实战建议,帮助工程师打造可靠高效的电源保护方案。

weixin_28327051的博客 537

Delphi中关于动态数组的引用操作

先看下面2个例子:procedure TForm1.Button1Click(Sender: TObject);var  A1, A2: array[0..3] of Integer;      //普通数组begin  A2 := A1;  A1[0] := 1;  A2[0] := 26;  ShowMessage(IntToStr(A1[0]));                    

【昆山人在上海】 1334

MYSQL、ORACLE、PostgreSQL数据库对象层次及权限管理对比

本文为出于自己扩展、比较、图形化的思维路径自行总结归纳,可能有些细节不太准确,欢迎指正。MySQL、Oracle、PostgreSQL关系型数据库都有管理员用户、用户、权限管理、表函数索引等数据库对象,schema。但在数据库对象隶属层次上有差异和相同的地方。

rachel_2016的博客 1490

1553B通信项目开发笔记(一)协议概述

最近接了个项目,需要用1553B协议通信,仅作为RT端口进行通信,控制器采用ARM 使用芯片为国产的BU61580芯片,功能和引脚和DDC的61580完全一致。

u010396127的博客 2万+

Delphi中的数组和指针数学

在 Delphi 中,数组可以通过几种方式显式声明固定长度数组其中的符号[]允许开始和结束索引,或者您可以提供枚举类型作为索引。您通常应该从 0 开始索引范围,但如果您不能,那么下面的示例将需要偏移起始索引的值。

sonadorje的专栏 1656

Auto.js凉了之后,我们该用啥?AutoX.js保姆级环境搭建与第一个脚本实战(2024最新)

本文详细介绍了AutoX.js作为Auto.js替代方案的环境搭建与脚本开发实战指南。从技术生态现状分析到2024最新环境配置,再到编写第一个实用脚本和进阶调试技巧,帮助开发者无缝迁移至AutoX.js平台。特别适合需要手机自动化的JavaScript开发者,涵盖从基础到企业级应用的全套解决方案。

weixin_28737073的博客 391

DELPHI参数几个概念上的区别

 引用参数: 引用参数用var关键字标示procedure DoubleTheValue (var Value: Integer);begin Value := Value * 2;end;在这种情况下,参数既把一个值传递给过程,又把新值返回给调用过程的代码。当你执行完以下代码时:var X: Integer;begin X := 10; D

互联网产品管理、交互、设计、开发、用户体验专栏 1495

Delphi解决 openssl DLL 与 Indy 的SSL/TLS 连接问题

​ 使用 SSL 连接时出错。错误 1409442E:SSL 例程:ssl3_read_bytes:tlsv1 警报协议版本 由于我使用的是最新版本的Indy,根据Delphi Praxis 上的此线程,这种情况不应该发生。事实证明,不知何故,一个非常旧版本的 openssl DLLlibeay32.dll和ssleay32.dll已被放置在我计算机上的 sarch 路径中(版本 1.0.0e)。

Delphi开发局QQ群:32422310 2495

从菜鸟到高手:我的Abaqus壳单元S4R、S3R、S8R选择心路历程

第一次打开Abaqus的单元库时,我被琳琅满目的壳单元类型晃花了眼。S4R、S3R、S8R、STRI65、S9R5...这些看似随意的字母数字组合,背后却隐藏着影响仿真精度的关键密码。作为一名从土木工程转行到汽车结构仿真的工程师,我花了三年时间才真正理解如何根据问题特性精准选择壳单元。这段学习历程充满试错与顿悟,今天就用几个关键案例,分享我的壳单元选择方法论。

weixin_42525637的博客 419

delphi中Create参数区别

默认分类 2009-08-05 14:59:31 阅读265 评论0 字号:大中小  delphi中我们创建一个VCL控件时,有多种参数: From.create(参数)参数有以下几种:Application:你的控件的父级是主程序,所以他的级别最高.Self:你的控件的父级是当前窗口,他关闭你也关闭.Sender:你的控件的父级是当前对象.Handle:你的控件的父级是此句柄.Nil:无定义.生成的独立窗体需代码释放。     一般说来,Delphi类的构造方法在TComponent前是不用重载的,而T

波波的专栏 6072

最强游戏投屏串流搭档Sunshine+Moonlight配置方法

因祸得福的是,sunshine作为开源的self-host的服务端,不仅可以代替Novidia的服务端角色,还拓展了moonlight可以服务的主机,非novidia显卡的PC也可以通过这对搭档实现高质量的游戏窜流投屏了。回到moonlight,点击电脑图表,会给你一个Pincode,到Sunshine控制台,菜单点击Pin,输入moonlight给出的pin码。高质量的图像: Moonlight支持高清(HD)和甚至4K分辨率的投屏,同时还提供了对音频的传输支持,确保用户可以享受到高质量的视频和音频。

每日出拳老爷子的博客 1万+

关于Delphi过程或者函数的参数时,有var与无var的区别

<br />在网上看到这样的代码unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls; type TTest = class pu

fdc43627169的专栏 1438

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

Delphi中易混淆的概念

====================================================== 注:本文源代码点此下载 ====================================================== delphi中易混淆的概念 林毅 (06/22/2000) 一、owner和parent的区别: parent属性是指构件的包容器,构件只能

javazhuanzai的专栏 260

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

delphi数组作为参数传值

在函数中如果数组的个数不定,可以使用开放数组参数 实参可以接受静态数组和动态数组 procedurep1(a:arrayofByte); begin ShowMessage( IntToHex(Integer(@a),2)); ShowMessage(IntToStr(a[0])); end; procedureTForm1.btn1Click(Sender: TObjec...

oNewLife123的博客 1328

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

Delphi几种调用模式的区别

几种调用模式的区别?作者:Builder_Soft请高手帮我说一下几种调用模式的区别?  http://www.faq-it.org/office/">faq-it.org/office/ ---------------------------------------------------------------   register    Delphi默认调用        从左到右  c

James Deng的专栏 1954

delphi与变长参数——开放数组(1)

与C/C++不同,Delphi中是通过可变类型(TVarRec)的开放数组来指定变长参数的。其实这里已经不能称“变长参数”了,因为实际上只传递了一个参数,只是该参数是由多个基础类型数据构成的一个开放数组。Delphi使用开放数组来容纳不定数目的参数,使用可变类型(TVarRec)表示各种类型数据,因此二者的结合可以达到C/C++中变长参数的功能。        TVarRec是一个记录类型,该记

TU2的专栏 8498

Delphi中易混淆的概念 Owner, Parent, Self,

一、Owner和Parent的区别:   Parent属性是指构件的包容器,构件只能在此范围内显示和移动。举例子如下:   (1)在Form1的窗体上,放一个Panel1,并将Panel1拉大,   (2)在Panel1上放一Button1;   (3)在Form1上放一Button2。   现在如果移动Panel1,则Button1随着Panel1移动,这是因为Button1的Pare...

qq_18932003的博客 549

delphi和C# 语法所有区别和示例

delphi和C# 语法所有区别和示例

u010117029的博客 1063

delphi开放数组参数

delphi中,开放数组是指数组元素个数不定的数组,并非是变量类型,而是一种参数类型,只有在声明方法定义形参时才会用到。而在调用参数为开放数组的方法时,传入的实参可以是静态数组,也可以是动态数组。 开放数组和动态数组的形式都是array of Type,只是根据位置的不同表明不同的身份,在方法声明中定义形参时使用array of Type定义的是开放数组参数;在其他位置使用array of Ty

FantasyWind-奇风的悟道之地 1858

delphi 数组作为参数传递

在函数中如果数组的个数不定,可以使用开放数组参数 实参可以接受静态数组和动态数组 procedurep1(a:arrayofByte); begin ShowMessage( IntToHex(Integer(@a),2)); ShowMessage(IntToStr(a[0])); end; procedureTForm1.btn1Click(Sender: T...

aldsot0997的博客 847

Delphi Override 和 Overload 的区别

其实很本质的区别就是看函数特征:覆写(Override)的两个函数的函数特征相同,重载(Overload)的两个函数的函数名虽然相同,但函数特征不同。 函数特征包括函数名,参数的类型和个数。 Override 是在继承的时候,如果你写的函数与要继承的函数函数特征相同,那么,加上这个关键字,在使用这个子类的这个函数的时候就看不见父类(或超类)的函数了,它被覆盖掉了。 比如:Derived继承了Bas

373

Delphi中Self和Sender的区别

在事件处理程序参数表中,至少含有一个参数Sender,它代表触发事件处理程序的构件,如在上例中,Sender就指Button2,有了Sender参数,可以使多个构件共用相同的事件处理程序,如下例:    Procedure Tform1.Buttonclick(Sender:Tobject);    Begin    If sender=button1 then    Label

haiou327’blog 2970

delphi参数传递

delphi参数传递 参数传递     声明/实现一个过程使用的参数称为形式参数(简称形参),调用过程时传入的参数称为实际参数(简称实参)。 { Info是形参} procedure ShowInfo(Info: String); begin   ShowMessage(Info); end; var   S: String; begin   S := 'lx

ly930156123的博客 3800
上一篇: 关于JQUERY动态加载页面时的JS失效的问题
下一篇: Delphi中DLL初始化和退出处理
一剑平江湖
博客等级 码龄18年 207粉丝 1070原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值