火山软件开发平台

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]

21

主题

289

帖子

1281

积分

金牌会员

Rank: 6Rank: 6

积分
1281
跳转到指定楼层
楼主
发表于 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再无短板了



回复

使用道具 举报

21

主题

289

帖子

1281

积分

金牌会员

Rank: 6Rank: 6

积分
1281
沙发
 楼主| 发表于 2024-4-6 23:46:18 | 显示全部楼层
小烦 发表于 2024-4-6 22:22
OK涛哥看不到      提议无效

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

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

使用道具 举报

21

主题

289

帖子

1281

积分

金牌会员

Rank: 6Rank: 6

积分
1281
板凳
 楼主| 发表于 2024-4-6 23:56:51 | 显示全部楼层
Xelloss0618 发表于 2024-4-6 23:50
火山PC的局部变量参考不能做的原因并不是安全问题,实际上变量参考很安全。
根本原因是火山的表格式定义 ...

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

使用道具 举报

21

主题

289

帖子

1281

积分

金牌会员

Rank: 6Rank: 6

积分
1281
地板
 楼主| 发表于 2024-4-7 00:11:00 | 显示全部楼层
Xelloss0618 发表于 2024-4-6 23:48
变量参考(引用)和指针是两回事,指针的话,2月份之后的版本已经可以实现了。
可以参考一下我这个例子
htt ...

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

使用道具 举报

21

主题

289

帖子

1281

积分

金牌会员

Rank: 6Rank: 6

积分
1281
5#
 楼主| 发表于 2024-4-7 03:58:28 | 显示全部楼层
uuyyhhjj 发表于 2024-4-7 03:32
其实多包几层还是能用的,你可以看一下这个例子,参考就是传地址吧,上次指针更新后也全是取,感觉巨麻烦, ...

感谢回复, 我感觉加上参考真的很有必要, 本来简单东西都被复杂了
回复

使用道具 举报

21

主题

289

帖子

1281

积分

金牌会员

Rank: 6Rank: 6

积分
1281
6#
 楼主| 发表于 2024-4-7 13:36:34 | 显示全部楼层
shuimiao 发表于 2024-4-7 10:13
必须初始化的话,吴总可以定义一个全局指针用来初始化这个参考,然后增加命令,判断参考变量是否为默认指 ...

是的, 不过引用缺点也很明显,引用必须在创建时被初始化
如果火山的参考属性 使用 引用的话局限性有点大, 他不能被动态创建和销毁
所以 参考 最佳的 应该是指针, 比如动态窗口
我的窗口类 *窗口
想创建时
窗口 = 我的窗口类(参数)
销毁时(相当于c++的 delete)
释放指针(窗口)

如果使用引用的话就没法办了
回复

使用道具 举报

21

主题

289

帖子

1281

积分

金牌会员

Rank: 6Rank: 6

积分
1281
7#
 楼主| 发表于 2024-4-7 19:33:56 | 显示全部楼层
本帖最后由 wangvoldp 于 2024-4-7 19:41 编辑
呵呵仙8 发表于 2024-4-7 18:13
创建对象指针 ()
销毁对象指针 ()
读指针处对象 (, )
【解决方案】指针动态创建窗口(不创建无消耗) - 火山平台俱乐部 - 火山软件开发平台 - Powered by Discuz! (voldp.com)

要凑乎的话方法是很多,可以用您说的几个个函数,也可以用模板
但对于用户来说到底是打钩一个"参考"简单呢, 还是理解 对象指针 简单呢
回复

使用道具 举报

21

主题

289

帖子

1281

积分

金牌会员

Rank: 6Rank: 6

积分
1281
8#
 楼主| 发表于 2024-4-8 02:10:17 | 显示全部楼层
呵呵仙8 发表于 2024-4-7 20:18
类变量作参数,可用类的变量名或用类的变量地址.

嗯, 是的, 但是咱们两个说的不在一个频道, 我给你举个例子吧
-------- 用对象指针 --------
指针 = 创建对象指针(窗口类)
读指针处对象(指针, 窗口类).创建主窗口()
读指针处对象(指针, 窗口类).自定列表.元素组.清空()
计次循环(10) // 因为列表是动态加入的, 所以每次都要取出元素组的成员数
        读指针处对象(指针, 窗口类).自定列表.元素组.加入并返回新成员2(分组类, 读指针处对象(指针, 窗口类).自定列表.元素组.取成员数(),I)
        读指针处对象(指针, 窗口类).自定列表.元素组.取成员(I).创建组件(分组框, 0,0,0,0)
        读指针处对象(指针, 窗口类).自定列表.元素组.取成员(I).标签.标题 = "我是标题" + 到文本(I)
        读指针处对象(指针, 窗口类).自定列表.元素组.取成员(I).标签.文本颜色 = 0xff0000
        读指针处对象(指针, 窗口类).自定列表.元素组.取成员(I).元素组.加入并返回新成员2(项目类, 读指针处对象(指针, 窗口类).自定列表.元素组.取成员(I).元素组.取成员数(),J)
        读指针处对象(指针, 窗口类).自定列表.元素组.取成员(I).元素组.取成员(J).创建组件(项目框)
        读指针处对象(指针, 窗口类).自定列表.元素组.取成员(I).元素组.取成员(J).编辑框.宽度 = 100
        读指针处对象(指针, 窗口类).自定列表.元素组.取成员(I).元素组.取成员(J).编辑框.高度 = 100
        读指针处对象(指针, 窗口类).自定列表.元素组.取成员(I).元素组.取成员(J).编辑框.内容 = "我是编辑框" + 到文本(J)
读指针处对象(指针, 窗口类).显示()
读指针处对象(指针, 窗口类).关闭()
销毁对象指针(指针)
-------- 有了参考 --------
窗口 = 窗口类()
窗口.创建主窗口()
窗口.自定列表.元素组.清空()
计次循环(10)
        数组1 = 窗口.自定列表.元素组
        成员1 = 数组1.加入并返回新成员2(分组类, 数组1.取成员数(),I)
        成员1.创建组件(分组框, 0,0,0,0)
        成员1.标签.标题 = "我是标题" + 到文本(I)
        成员1.标签.文本颜色 = 0xff0000
        数组2 = 成员1.元素组
        成员2 = 数组2.加入并返回新成员2(项目类, 数组2.取成员数(),J)
        成员2.创建组件(项目框, 0,0,0,0)
        成员2.编辑框.宽度 = 100
        成员2.编辑框.高度 = 100
        成员2.编辑框.内容 = "我是编辑框" + 到文本(J)
窗口.显示()
窗口.关闭()
删除对象(窗口)
--------------------------------------------
这才是两层 第一种方法看着就已经很复杂了, 更别说里面再来几层了,
当然了我们可以多写两个函数一个函数管一层,看着就稍微简单点了
开头也说了简单的用起来也能凑乎用, 层数多了就复杂了, 取来取去
每次读不还得给类名写进去, 就像 Xelloss0618 大大说的那种模板也比这种读指针对象好用,起码只用写一次类名,
这种读指针对象 哪次不得给 类名写进去(去找到类名复制来,当然最强大脑同学可以记住整个项目的全部类名),现在不只得记变量名还得记类名,
哪有解决不了的问题, 大不了用c++写了, 火山调用不就行了
现在说的不是能不能用的问题, 而是方便、简单、直观, 让火山变的更好
回复

使用道具 举报

21

主题

289

帖子

1281

积分

金牌会员

Rank: 6Rank: 6

积分
1281
9#
 楼主| 发表于 2024-4-8 19:02:18 | 显示全部楼层
呵呵仙8 发表于 2024-4-8 12:48
我是业余的.首先,我没了解火山的代码在解释为c++代码再编译时,会不会简化到和c++语法一样或生成EXE会不会 ...

你说我想要C++就当是吧,我也不再给你解释了, 除了PC都支持参考,我建议PC也支持参考是动了您的什么蛋糕么?
这种想法.我看你还是不要希望了
安卓都有的, 想让pc也有,怎么就不报希望了呢.




回复

使用道具 举报

21

主题

289

帖子

1281

积分

金牌会员

Rank: 6Rank: 6

积分
1281
10#
 楼主| 发表于 2024-4-9 23:54:59 | 显示全部楼层
qaz2428119 发表于 2024-4-9 21:51
局部参考没法实现这个功能, 因为参考是指针(火山不支持指针), 利用引用符,倒是可以实现,不过局部变量使用引 ...
局部参考没法实现这个功能, 因为参考是指针(火山不支持指针)

您所说不支持也是因为访问成员时成员必须->访问吧,
发现是参考的成员访问, 给.换成->行不通么?
对参考对象的直接访问前面需要*, 比如int
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-6-2 08:34 , Processed in 0.082772 second(s), 22 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

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