火山软件开发平台

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
热搜: 火山 源码 类库
查看: 1261|回复: 31
打印 上一主题 下一主题

[视窗] ★★★火山PC的参考(不知道怎么叫,C++是叫指针)★★★

[复制链接]

21

主题

288

帖子

1275

积分

金牌会员

Rank: 6Rank: 6

积分
1275
跳转到指定楼层
楼主
发表于 2024-4-6 14:16:26 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
  • 程序中定义了几十个窗口, 程序启动时候就需构造要全部窗口类, 窗口类里面会使类对象(比如Curl类或自定义类), 那么也要构造, 想想如果是个大工程, 一开始连个窗口都没显示呢, 就构造这么多东西了,窗口不创建也没必要去构造对不对, 虽说现在CPU强劲, 内存量大, 也不能这么浪费吧
  • 从一个数组中取个成员放到局部变量操作时, 这个成员如果是类对象, 放到局部变量后只是个复制品, 我们操作这个局部变量是修改不了那个成员的对象数组的成员,想要挂接事件、调用函数、修改成员都要给成员取出来,单一层的话还能凑乎,层数多了简直是地狱不停地取成员,火山本来就是将复杂的东西简单化,现在成了简单的东西更复杂了

-----------------------------------------------------------------------------------
例如我想写一个带分组的自定列表框
第一层组件布局器,里面放个数组用来存分组
    第二层分组类,里面放个数组用来存列表成员
        第三层列表成员类,1个编辑框和1个矩形类(可能还有其他)

写到最后我想操作第I个分组里的第J个成员里的矩形,我需要这么写
控件名.元素组.取成员(I).元素组.取成员(J).矩形.左边 = 1
控件名.元素组.取成员(I).元素组.取成员(J).矩形.顶边 = 1
上面只是例子实际还要操作其他, 每次操作都要不停地取取取

如果有了局部参考的话, 我们只需取出一次
矩形 = 控件名.元素组.取成员(I).元素组.取成员(J).矩形
矩形.左边 = 1
矩形.顶边 = 1
-------------------------  局部参考实现  ---------------------------
实现局部变量参考打钩后, 将该变量变为指针, 以矩形为例
矩形 矩形类 参考
翻译后如下
矩形类 *矩形
----------------
矩形 = 控件名.元素组.取成员(I).元素组.取成员(J).矩形
翻译后如下
矩形 = &控件名.元素组.取成员(I).元素组.取成员(J).矩形
----------------
矩形.左边 = 1
矩形.顶边 = 1
矩形.重置(1,1,1,1)
翻译后如下
矩形->左边 = 1
矩形->顶边 = 1
矩形->重置(1,1,1,1)
-------------------------  动态窗口实现  ---------------------------
定义窗口时使用参考, 因为是指针可以为空
窗口A 我的窗口类 参考
翻译为
我的窗口类 * 窗口A
----------------
当窗口需要显示时
窗口A = 我的窗口类(参数1, 参数2, 参数3)
翻译为
窗口A = new 我的窗口类(参数1, 参数2, 参数3)
-------
窗口A.创建主窗口(参数...)
翻译为
窗口A->创建主窗口(参数...)
-------------------------  最后  ---------------------------
参考定义时变量多了个 *, 访问时给.换成->
这样函数返回如果是 @视窗.返回参考 = 真 的话也能完美接收
既能实现局部变量随意存取, 挂接事件, 又能实现类的动态创建
就算有1000个窗口,我不创建显示你, 你就不能浪费内存和CPU
另外类的动态创建接收构造参数是个问题, 因为火山的类里面已经有无参的构造函数了

此时涛哥要是能给函数重载和符号重载搞出来岂不是更美,从此火山PC再无短板了



回复

使用道具 举报

54

主题

402

帖子

2731

积分

核心用户

Rank: 9Rank: 9Rank: 9

积分
2731
QQ
沙发
发表于 2024-4-6 22:05:39 | 只看该作者
QQ:350246356
回复

使用道具 举报

24

主题

428

帖子

3459

积分

核心用户

Rank: 9Rank: 9Rank: 9

积分
3459
QQ
板凳
发表于 2024-4-6 22:18:37 来自手机 | 只看该作者
确实每次取代码太长了,效率应该也不行!
回复

使用道具 举报

13

主题

67

帖子

416

积分

核心用户

Rank: 9Rank: 9Rank: 9

积分
416
地板
发表于 2024-4-6 22:22:52 | 只看该作者
      OK涛哥看不到      提议无效

我听到最多的就是  没空搞    现在在忙着开发火山GO
回复

使用道具 举报

372

主题

2269

帖子

7389

积分

核心用户

Rank: 9Rank: 9Rank: 9

积分
7389
5#
发表于 2024-4-6 23:27:54 来自手机 | 只看该作者
参考搞起来应该没什么瓶颈吧,不知道为什么一直不愿意?怕东怕西的,怕小白乱用,合着为了小白就可以无视进阶用户的使用需求。再怕那你弄个全局选项,是否开启参考功能啊,或者搞个包属性,是否开启参考,不是很简单的事吗
回复

使用道具 举报

21

主题

288

帖子

1275

积分

金牌会员

Rank: 6Rank: 6

积分
1275
6#
 楼主| 发表于 2024-4-6 23:46:18 | 只看该作者
小烦 发表于 2024-4-6 22:22
OK涛哥看不到      提议无效

我听到最多的就是  没空搞    现在在忙着开发火山GO ...

帖子就是涛哥审核的他肯定看到了
回复

使用道具 举报

26

主题

1500

帖子

5635

积分

核心用户

Rank: 9Rank: 9Rank: 9

积分
5635
7#
发表于 2024-4-6 23:48:53 | 只看该作者
变量参考(引用)和指针是两回事,指针的话,2月份之后的版本已经可以实现了。
可以参考一下我这个例子
https://bbs.voldp.com/thread-20901-1-1.html
回复

使用道具 举报

26

主题

1500

帖子

5635

积分

核心用户

Rank: 9Rank: 9Rank: 9

积分
5635
8#
发表于 2024-4-6 23:50:56 | 只看该作者
shuimiao 发表于 2024-4-6 23:27
参考搞起来应该没什么瓶颈吧,不知道为什么一直不愿意?怕东怕西的,怕小白乱用,合着为了小白就可以无视进 ...

火山PC的局部变量参考不能做的原因并不是安全问题,实际上变量参考很安全。
根本原因是火山的表格式定义变量,跟C++变量参考必须初始化赋值,从设计上就不能共存。
回复

使用道具 举报

21

主题

288

帖子

1275

积分

金牌会员

Rank: 6Rank: 6

积分
1275
9#
 楼主| 发表于 2024-4-6 23:56:51 | 只看该作者
Xelloss0618 发表于 2024-4-6 23:50
火山PC的局部变量参考不能做的原因并不是安全问题,实际上变量参考很安全。
根本原因是火山的表格式定义 ...

那可以用指针的, 引用需要再定义时初始化, 指针不用的, 可以先定义, 然后再赋值
回复

使用道具 举报

21

主题

288

帖子

1275

积分

金牌会员

Rank: 6Rank: 6

积分
1275
10#
 楼主| 发表于 2024-4-7 00:11:00 | 只看该作者
Xelloss0618 发表于 2024-4-6 23:48
变量参考(引用)和指针是两回事,指针的话,2月份之后的版本已经可以实现了。
可以参考一下我这个例子
htt ...

动态窗口我现在也是用的模板
缺点是定义窗口后必须再多定义一个模板实现类
取出的时候需要一个属性读函数取出
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|小黑屋|火山软件开发平台 ( 鄂ICP备18029190号 )

GMT+8, 2024-5-19 02:38 , Processed in 0.103723 second(s), 20 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表