递归火山软件开发平台

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

[视窗] 对象数组 自定义排序

[复制链接]

117

主题

1131

帖子

6225

积分

核心用户

Rank: 9Rank: 9Rank: 9

积分
6225
跳转到指定楼层
楼主
发表于 昨天 08:56 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 小蜗牛 于 2026-1-15 09:04 编辑

由于火山没有把对象数组的获取指针函数公开,所以需要修改火山的头文件.
文件位于:
           \plugins\vprj_win\classlib\sys\base\libs\win_base\include\vol_array.h
           在 648 行后面添加:     inline_ CVolObject** GetData() { return m_arypObjects.GetData(); }
缺点是每次更新都要修改..
优点是排序要方便一点..如果要文本排序 就是   比较结果 = 文本比较 (成员A.姓名,成员B.姓名) < 0

火山要好用,就要深度封装,而要封装的时候,很多因为火山的各种原因.实现不了..
从而导致有些功能用C++比火山写起来还更方便N倍..




                    

                        

                           

                           
正在渲染火山代码...

                        

                    

                    复制代码
               



评分

参与人数 1金钱 +1 收起 理由
一代码农 + 1 很给力!

查看全部评分

回复

使用道具 举报

22

主题

259

帖子

2881

积分

核心用户

Rank: 9Rank: 9Rank: 9

积分
2881
沙发
发表于 昨天 09:33 来自手机 | 只看该作者
看出来了,为了绕过火山限制,整了不少活
回复

使用道具 举报

117

主题

1131

帖子

6225

积分

核心用户

Rank: 9Rank: 9Rank: 9

积分
6225
板凳
 楼主| 发表于 昨天 09:42 | 只看该作者
小小小小鸟 发表于 2026-1-15 09:33
看出来了,为了绕过火山限制,整了不少活

我没理解的一点就是..C++那么优秀的标准库..火山为啥要自己重复造轮子,自己实现一套..比如文本型.数组..等等...从而导致很多C++生态不能直接用.而且性能也没有标准库的高.虽然说可以用别名类.
回复

使用道具 举报

9

主题

117

帖子

3511

积分

论坛元老

Rank: 8Rank: 8

积分
3511
地板
发表于 昨天 09:44 | 只看该作者
这种场景我觉得使用标准数组类+三方库比较好,在火山里也能写接近原生C++的代码。我之前发的这个帖子,能在火山C++17标准下使用C++20的投影算法:火山标准数组扩展类, 一行代码排序结构体数组
火山PC交流群: 748413192
回复

使用道具 举报

22

主题

259

帖子

2881

积分

核心用户

Rank: 9Rank: 9Rank: 9

积分
2881
5#
发表于 昨天 09:52 来自手机 | 只看该作者
小蜗牛 发表于 2026-1-15 09:42
我没理解的一点就是..C++那么优秀的标准库..火山为啥要自己重复造轮子,自己实现一套..比如文本型.数组.. ...

我是这么猜的,火山有自己的基类,有自己的内存池,在基类内部实现了内存分配等的重载,从而在跨dll或部件时传递对象不会引发内存错误,但如果在这个基础上用标准库就会很麻烦了,当初设计就是这么设计好了,后期再改就很难,基本要重构,所以在大改和打补丁之间选择了打补丁,新增本地类,之前的代码能用就用着
回复

使用道具 举报

117

主题

1131

帖子

6225

积分

核心用户

Rank: 9Rank: 9Rank: 9

积分
6225
6#
 楼主| 发表于 昨天 09:55 | 只看该作者
龙纹 发表于 2026-1-15 09:44
这种场景我觉得使用标准数组类+三方库比较好,在火山里也能写接近原生C++的代码。我之前发的这个帖子,能在 ...

:噜阿噜 确实很优秀..唯一缺点就是要写输出名..如果能捕获到输出名就好很多.
回复

使用道具 举报

117

主题

1131

帖子

6225

积分

核心用户

Rank: 9Rank: 9Rank: 9

积分
6225
7#
 楼主| 发表于 昨天 10:02 | 只看该作者
小小小小鸟 发表于 2026-1-15 09:52
我是这么猜的,火山有自己的基类,有自己的内存池,在基类内部实现了内存分配等的重载,从而在跨dll或部 ...

嗯,这就造成,很多资源不能直接使用,需要自己写一套转换.
估计是为了实现定义事件/标记值..内部需要记录...估计对象类 就是干这个事情的...
回复

使用道具 举报

22

主题

259

帖子

2881

积分

核心用户

Rank: 9Rank: 9Rank: 9

积分
2881
8#
发表于 昨天 10:08 来自手机 | 只看该作者
小蜗牛 发表于 2026-1-15 10:02
嗯,这就造成,很多资源不能直接使用,需要自己写一套转换.
估计是为了实现定义事件/标记值..内部需要记录.. ...

是啊,除非有大佬重新撸一套基础库,而且还得兼容火山语法,撸出来还得配套封库,太难了太难了。。
回复

使用道具 举报

27

主题

553

帖子

3047

积分

核心用户

Rank: 9Rank: 9Rank: 9

积分
3047
9#
发表于 昨天 10:33 | 只看该作者
小蜗牛 发表于 2026-1-15 09:42
我没理解的一点就是..C++那么优秀的标准库..火山为啥要自己重复造轮子,自己实现一套..比如文本型.数组.. ...

:噜阿噜谁叫老吴最开始开发的是安卓的JAVA呢
回复

使用道具 举报

9

主题

117

帖子

3511

积分

论坛元老

Rank: 8Rank: 8

积分
3511
10#
发表于 昨天 12:56 | 只看该作者
小蜗牛 发表于 2026-1-15 09:55
:噜阿噜 确实很优秀..唯一缺点就是要写输出名..如果能捕获到输出名就好很多. ...

火山的语法不能直接写 类::成员名,如果能写就简单多了
火山PC交流群: 748413192
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-1-16 07:30 , Processed in 0.103990 second(s), 22 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

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