参数传递的几种用法。

原创 2002年11月15日 14:02:00

参数传递的几种用法。

一次需要在几个窗口之间传递参数,最开始想到的是定义一个全局变量。

可以做了以后发现并不太理想。

最后向别人学习了参数传递,解决了很多问题,感觉上也不容易出错。

现在写出来与大家分享,也为自己保留,以便察看。
-----------------------------------------------------------
先来解释一下参数传递的函数意义:
message.stringparm  (传的是字符)
message.DoubleParm   (传的是数值)
message.PowerObjectParm (传的是可以是窗口、对象、结构等等)
例如:(以数值传递为例)
在w_old窗口的相关事件中写入如下代码,表示发送要传递参数:
long ll_old
ll_old = 你要传递的数值
openwithparm(w_new(//新窗口),ll_old)
------------
在w_new窗口(新窗口)的相关事件中写如下代码表示接受参数:
long ll_new
ll_new = Message.DoubleParm /*这样就接收到了你要的参数了。*/
-----------------------------------------------------------

上面只是一个参数的传递,
对于多参数的传递,说是有3种方法:
      1.用字符传组传递,到目的地进行分割
      2.传递结构对象
      3.用对象做载体传递 
我现在掌握的也就前两种,最后一种我不太理解。以后会了再补充。

现在先来说:1.用字符传组传递,到目的地进行分割
意思也就是说,把多个参数组合成一个进行传递,
组合的时候需要加入分割符---自己定义的。接收参数后再将其分割成多个。
*在w_old窗口的相关事件中写入如下代码:
/*例如组合好的自符串为pass_old="123|4567"  ---注意组合前123和4567
可能都是long型的,不要紧,转换类型就行*/
string pass_old
pass_old =string(ll_pre) + "|" + string(ll_tra)
// ll_pre = 123,ll_tra = 4567
openwithparm(w_new(//新窗口),pass_old)
----------
*在w_new窗口(新窗口)的相关事件中写如下代码:
integer li_fen /*定义用来记录分割符的位置*/
long ll_newpre,ll_newtra /*用来分别存放两部分*/
string pass_new
pass_new = message.stringparm

li_fen=Pos(pass_new,"|") /*确定并记录分割符的位置*/

ll_newpre=long(left(pass_new,li_fen - 1))

ll_newtra=long(right(pass_new,len(pass_new) - li_fen))

/* 上面就是第一种方法-----用字符传组传递,到目的地进行分割*/
--------------------------------------
在来说说:2.传递结构对象
在库文件中 创建一个structure对象,注意是创建,因为它就象一个窗口一样
是个对象,不是用与句定义的。structure s_info
  变量名      变量类型
  ID         long
  Name        Char
    Sex         Char
/* 先以此为例。 */
**在w_old窗口的相关事件中写入如下代码:
s_info lstr_pre
lstr_pre.id = 1 /* 赋ID的值
lstr_pre.name = "zhdleo"  /* 赋name的值
lstr_pre.name = "male"  /* 赋sex的值
openwithparm(w_new(//新窗口),lstr_pre)
**在w_new窗口(新窗口)的相关事件中写如下代码:
s_info lstr_tra
long tra_id
string tra_name
string tra_sex /* 定义要接收的变量

lstr_tra = message.PowerObjectParm /* 接收参数
tra_id = lstr_tra.id 
tra_id = lstr_tra.name
tra_id = lstr_tra.sex /* 赋值

/* 上面就是第二种方法------传递结构对象
-------------------------------------------
我个人觉得第二种方法还是非常优的,不但结构清楚,而且定义了结构体也
可以看见,容易理解。

至于第三种,还有待我慢慢研究。

如果谁还有好的方法,或是比较清楚第三种的,或是还有更好的方法的,
E-mail:zhdleo@163.com

函数参数三种传递方式的区别

问题提出:1、当一个类的对象作为实参数传递时,使用值传递和引用传递有什么区别? 比如: DateType ExampleFun(CString &strFileName,…)与 ...
  • My__long
  • My__long
  • 2017年01月07日 13:47
  • 1708

HTTP传递数据的几种方法

达人科技 2016-12-19 20:40 Http请求的时候,需要传递参数给后端,一般都是key-value的形式,传递的方法有很多种 例如需要传递的数据是 dict(key1=value...
  • u011277123
  • u011277123
  • 2016年12月30日 15:06
  • 1867

Android五种数据传递方法汇总

Android开发中,在不同模块(如Activity)间经常会有各种各样的数据需要相互传递,我把常用的几种 方法都收集到了一起。它们各有利弊,有各自的应用场景。 我现在把它们集中到一个例子中展示,...
  • u012894266
  • u012894266
  • 2016年08月25日 11:03
  • 1579

C、C++动态分配函数暨几种参数传递疑难解析

C、C++动态分配函数暨几种参数传递疑难解析
  • IT_DS
  • IT_DS
  • 2016年01月13日 15:16
  • 1135

python中函数参数传递的几种方法

python中函数参数传递的几种方法 洗头用飘柔 2008-06-19 13:06:48 Python中函数参数的传递是通过“赋值”来传递的。但这条规则只回答了函数参数传递的“战略问题”,并没...
  • qiujiwuhen00
  • qiujiwuhen00
  • 2015年05月28日 16:41
  • 305

ionic入门教程第七课-简要说明几种界面之间的参数传递及优缺点

ionic入门教程第七课-简要说明几种界面之间的参数传递及优缺点
  • huwei2003
  • huwei2003
  • 2016年08月22日 15:49
  • 447

python中函数参数传递的几种方法

python中函数参数传递的几种方法
  • samxx8
  • samxx8
  • 2011年05月23日 10:35
  • 9809

java参数传递

  • 2017年11月21日 20:44
  • 615KB
  • 下载

Spring Mvc参数传递例子

  • 2017年12月10日 17:49
  • 108KB
  • 下载

android参数传递

  • 2014年10月29日 22:00
  • 1.37MB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:参数传递的几种用法。
举报原因:
原因补充:

(最多只允许输入30个字)