Delphi 中将对象作为参数传递的使用

delphi传递与复制对象(DELPHI5从入门到精通75页) var Button2:Tbutton; begin Button2 := button1; 这段代码没有建立一个新对象,而是建立了对内存中同一个对象的引用。内存中只有1个对象,而Button1,Button2变量都引用它。如果将对象作为参数传递给函数也是一样,没有建立新对象,而是在代码的两个不同位置引用了同一个对象。 我们可以查询组件的类(sender.classtype),然后使用类引用建立该... 阅读详情
Delphi 中将对象作为参数传递的使用 举例分析
2009-07-24 13:40

 

下面的单击事件,将要调用一个以对象为参数的方法,并将结果显示出来。

procedure TForm1.btn1Click(Sender: TObject);
var
lStrings: TStrings;
begin
lStrings:= TStringList.Create;
try
    lStrings.Add('chen');
    GetOperatorAllDeptIDs(lStrings);
    ShowMessage(lStrings.Text);
finally
    lStrings.Free;
end;

 

调用方法一:

function GetOperatorAllDeptIDs( AStrings: TStrings):String;
begin
//
注释 AStrings:= TStringList.Create;
AStrings. Add('zhi');
end;

返回结果为:chen zhi

分析:此时传递的AStrings 为lStrings对象的对象引用副本,即也指向对象lStrings,所以当执行AStrings. Add('zhi');时操作为lStrings对象添加‘zhi’。

 

调用方法二:

function GetOperatorAllDeptIDs( var AStrings: TStrings):String;
begin
//
注释 AStrings:= TStringList.Create;
AStrings. Add('zhi');
end;

返回结果为:chen zhi

分析:此时传递的AStrings 为lStrings对象的对象引用,当执行AStrings. Add('zhi');时操作的对象为lStrings对象。

 

调用方法三:

function GetOperatorAllDeptIDs( AStrings: TStrings):String;
begin
AStrings:= TStringList.Create;
AStrings. Add('zhi');
end;

返回结果为:chen

分析:此时传递的AStrings 为lStrings对象引用的副本,当方法中执行AStrings:= TStringList.Create;又将对象引用副本 的引用指向了此时新建的一个对象,所以此时对AStrings的任何操作已经不会影响lStrings对象。

 

调用方法四:

function GetOperatorAllDeptIDs( var AStrings: TStrings):String;
begin
AStrings:= TStringList.Create;
AStrings. Add('zhi');
end;

返回结果为:zhi

分析:此时传递的AStrings 为lStrings对象的对象引用,当方法中执行AStrings:= TStringList.Create;时, lStrings这个对象引用指向了新建的AStrings对象。所以,lString的值为’Zhi’

Delphi exe文件之间参数传递(续)  上次只是研究了一个exe启动另一个exe的情况,这次研究了两个exe同时运行的情况。{Delphi 2007}{Project1.exe Unit1.pas}const  UM_MESSAGE_COMMUNICATE = WM_USER + 100;type  TForm1 = class(TForm)    Button1: TButton;    procedure Butt 阅读详情

相关推荐

Delphi的函数指针传递和调用

delphi中可以通过函数指针把一个函数作为参数来传递,然后在另外一个函数中调用。 1、首先,申明函数指针类型TFunctionParameter。 type TFunction = function(const value : integer) : string; 2、定义准备被作为参数传递的函数 function Opcname(const value : integer) : string; begin resul

zxm8513优快云博客 1447

在DELPHI中把函数作为参数传递

    有时候我们需要在一个函数内进行的操作依赖与另外一个函数,在C#中,开发者提供了委托机制,那么在DLEPHI中呢?    其实很简单    下面我么用个简单的例子来说明:type  AFunctionType = function(value: integer) : integer;//首先你要定义一个类型function AddProc(value: integer)

2144

delphi多线程传递参数及同步二

本代码介绍了如何给线程传递参数,以及用参数在主线程中显示数据

谈Delphi编程中“流”的应用

====================================================== 注:本文源代码点此下载 ====================================================== 谈delphi编程中“流”的应用 陈经韬 什么是流?流,简单来说就是建立在面向对象基础上的一种抽象的处理数据的工具。在流中,定 义了一些处理

javazhuanzai的专栏 2027

delphi多线程参数传递及同步一

此代码使用多线程传递参数,使用syn同步输出

从零开始的 AI Infra 学习之路

AI Infra(AI 基础设施)是指为上层的 AI 算法应用提供支持的 AI 全栈底层技术,通过合理利用计算机体系结构,可以实现 AI 计算的加速和部署。AI Infra 主要包括以下内容:AI 训练框架 & 推理引擎;AI 编译 & 计算架构;AI 硬件 & 体系结构。参考资料:;。

AI Infra / LLM / 软件开发 3万+

Delphi: TMethod转普通方法为对象方法

回看旧时代码,以往清楚之记忆渐渐模糊,事隔多年,遗忘正在发生。 TMethod方法,当初熟练再看已陌生,再做复习以作备忘。 简言之,它做为一相桥接,将普通事件或方法转换为类方法,其多用于事件动态设置中。 它定义如此: TMethod = record Code, Data: Pointer; end; 以代码示之,如下: //此处可为procedu...

weixin_30294295的博客 669

基于互相关(NCC)模板匹配——find_ncc_model_defocused.hdev

相关性原理:仅在NCC(r,c) = ±1时,模板与图像完全匹配; NCC绝对值越大,表示模板与正在检测部分图像越接近; NCC绝对值越接近于零,表示模板与图像越不一致。 线性光照变化不会影响NCC计算结果。 重要函数一: 创建模板:create_ncc_model( Template : : NumLevels, AngleStart, AngleExtent, AngleStep, Metric : ModelID) 参数列表: Template(in):单通道灰度图像,它的区域可被创建为模板。 Num

m0_51271525的博客 3413

Delphi 参数传递

1.数值参数  变量和结构被完全拷贝到堆栈中,调用函数接受到的只是一个副本.数值参数传递方式是Delphi的默认方式,也是其他大部分语言的默认参数传递方式(比如C++,VC,java...).形式: function  myFunc(object:TObject):Byte;          procedure myProc(object:TObject);PS:堆栈可以这样理解,每次函数或过程

Vigor's Blog 4563

从AMBA到USB:手把手教你评估和选择Synopsys DesignWare里的免费商用IP

本文详细介绍了如何评估和选择Synopsys DesignWare中的免费商用IP,从AMBA到USB等关键模块。通过技术参数核对、验证环境评估和集成注意事项,帮助工程师高效利用这些经过硅验证的商业级IP,提升SoC设计效率。文章还探讨了免费IP与付费IP的边界策略,避免常见陷阱。

weixin_42683394的博客 297

Linux基础——“C语言高级编程” C语言中的细节你真的知道吗?

文章目录GCC简介 GCC简介 gcc 所支持后缀名解释 .c c原始程序 .C / .cc /.cxx C++原始程

weixin_44278698的博客 2511

用DELPHI的RTTI实现数据集的简单对象化

用DELPHI的RTTI实现数据集的简单对象化 [Mental Studio]猛禽[Blog]在《强大的DELPHI RTTI--兼谈需要了解多种开发语言》一文中,我说了一下我用DELPHI的RTTI实现了数据集的简单对象化。本文将详细介绍一下我的实现方法。 首先从一个简单的例子说起:假设有一个ADODataSet控件,连接罗斯文数据库,SQL为: select * from

猛禽的编程艺术 9387

GoldenDB 兼容模式冲突场景解析:MySQL 连接模式 vs Oracle 语法兼容

GoldenDB 兼容模式冲突场景解析:MySQL 连接模式 vs Oracle 语法兼容

weixin_45207751的博客 2257

DELPHI XE2 BPL窗口调用主程序与BPL窗体参数传递:提升DELPHI程序交互体验

DELPHI XE2 BPL窗口调用主程序与BPL窗体参数传递:提升DELPHI程序交互体验 去发现同类优质开源项目:https://gitcode.com/ 在软件开发领域,DELPHI XE2环境下的BPL(Binary Program Library)窗口调用与参数传递一直是开发者关注的焦点。本文将详细介绍DELPHI XE2 BPL窗口调用的核心功能与场景,帮助开发者更好地理解和应用这一技...

gitblog_06746的博客 1038

JavaSwing_4.2: JDialog、JOptionPane(对话框)

JDialog,对话框。使用 JDialog 类可以创建自定义有的对话框,或者调用 JOptionPane 中的多个静态方法快速创建各种标准的对话框。JOptionPane是 JavaSwing 内部已实现好的,以静态方法的形式提供调用,能够快速方便的弹出要求用户提供值或向其发出通知的标准对话框。

谢TS的博客 7万+

delphi参数传递与寄存器

考虑如下方法: function TFoo.Test(param: Integer): Interger;begin   {   asm     mov eax, edx   end   }   Result := param;end;procedure TFoo.Caller;var  lTemp: Integer;begin   lTem

rabbitsaviola' Blog 2238

36. 在 SAP Integration Suite 里打通入站 HTTP:iFlow 端点鉴权、角色授权与多节点 403 排障实战

本文探讨了SAP Cloud Integration中HTTP入站连接的认证与授权机制。在Cloud Foundry环境下,认证(证明身份)和授权(权限控制)需分开处理:认证可采用Basic、OAuth或mTLS等方式,授权则通过角色实现。文章详细解析了两种主流配置路径:基于IdP用户的Basic认证(需配置Role Collection)和基于OAuth Client/Service Instance的系统调用(通过Service Key管理权限)。特别指出ABAP系统在多节点环境下可能因cookie编码

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 322

delphi中的对象其实也是一种指针

 谈谈Delphi中的类和对象1.登不了大雅之堂地理解几个概念   说到类和对象,我们不能不提及这样几个概念:类,对象,实例。就我个人觉得可以这样来理解:对象指的是泛称,自然界的任何实体都可以看成一个对象;而类则是以这些对象某些特征而分成的一系列的种类;实例则是特指属于某一个类的一个对象。好啦,这些大道理我就不用多说了。不如来一个“背道而驰”的作法,我们用Delphicode 来阐述这些外国人提出

jian704的专栏 2445

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

Delphi入门

​var 变量名:数据类型;​不指定常量类型指定常量类型“子界”(Subrange)是 Pascal 语言中的一个概念,它允许程序员定义一个变量的取值范围,以确保该变量只接受特定范围内的值。这在编写安全和高效的代码时非常有用,因为它通过限制值的范围来减少错误的发生。子界类型可以用于整数、字符和枚举类型等。type子界名 = 下界..上界;

qq_24867003的博客 5257

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

关于 Delphi 参数传递方式的一点研究

某次看 D6DG 说默认的参数传递方式因为会为变量产生本地副本所以会消耗额外的内存,而 const 方式会优化字符串和记录类型的参数传递时的内存占用。从而猜测 const 方式的参数传递实际也是按地址传递,只是编译器强制不允许函数内的代码修改 const 方式传递进去的变量而已。 为了证实我的猜想,特设计以下实验,本实验中使用到了字符串(本文提到的字符串都是指 Delphi 默认的字符串 Ansi

Rainux's Weblog 2032

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

delphi参数传递

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

ly930156123的博客 3800

Delphi中的参数传递方式

.参数传递方式:         Delphi中有自己的参数传递方式,而Windows API也有自己的参数传递方式,那么他们之间有什么不同呢,要如何做到兼容呢,尤其是在编写动态库时?  (1)cdecl:     通常是C/C++所使用的参数传递方式,它的传递方式是由右到左,而且当被调用的函数结束之后,将会由调用函数本身来清除堆栈上的参数数据.  (2)stdcall:     参数传递方式,也

敦格 3346

delphi控件使用

Standard页 1-      Tlistbox控件 重要属性items.* 举例,界面设计如下左,执行结果如下右:      代码为 procedure TForm1.Button1Click(Sender: TObject); begin edit1.Text := listbox1.Items.CommaText; edit2.Text := listbox1.Ite

jsrgren 1万+

DELPHI 开发JNI 之 JAVA 对象Integer应用

DELPHI 开发JNI 之 JAVA 对象Integer应用前言:DELPHI 的教程很多,在这里不加赘述,着重介绍JAVA里的常用对象的调用,公司有这方面的功能需求,用了2天的时间研究了下JNI相关的东西.把我在研究过程中比较挠头的一些问题的解决方法发上来. 主要介绍 JAVA中常用对象的在开发JNI时候的应用.    Integer 方法应用在JAVA中 Integer 和 int 是不一样的. 所以 JNI 中调用JAVA 的方法的时候要注意下. 如果是 INT 类型的 GetMethodID 的时

762
上一篇: 为服务器端控件添加js.net
下一篇: 什么是反射机制
一剑平江湖
博客等级 码龄18年 207粉丝 1070原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值