78592802 发表于 2026-5-22 17:42:42

我要来吐槽一下"标准文本类"

命名也不好,"文本型utf8"这样定义类型名也好找,非要搞个独特的名字"标准文本类",通常定义文本变量时按一下文本就出来所有文本类型相关的类型,瞬间就知道自己需要的哪个类型,"标准文本类"得靠脑子记,而且初次不知道它是以什么编码为标准的,得跳进去看一下才知道,看不懂就傻眼只能手动去测试。
火山视窗的文本型通常也就是调用windows API才用的上,用W的API用户心理一般都有数的自己会去转码,保存文件或数据啥的都不喜欢用宽字符保存吧,要跟着系统记事本的标准ut8编码来,就算之前设计限制的宽文本字符集就算了,这个”标准文本类“也搞好一些啊,搞的跟文本型用法一样啊,像这样:
标准文本类变量 = 标准文本类.创建 ("1") + 文本2 + 标准文本类.创建 ("2") // 不能这样玩
标准文本类变量 = "1" // 也不能这样搞
简直不好用额。
至少要做到跟”文本型“一个用法才行啊,根据赋值给目标文本变量的编码类型赋值就行了,如果是参数就根据参数自动转码,如果参数不清晰无法识别的的纯字符串参数就发出警告就行,哪怕中间"+"加了其它编码类型在合并时也要做到自动转码统一到目标变量编码。
这种常用的数据类型也不好好整一下,就目前这个作用范围像个固体的存储型变量,整个放、整个取,整个换,想增加就先去转个码添加完再转码回来吧。
另外的提议,wsv文件通常用来让AI写代码用的,书签可以改成存到配置文件里面去,如果行号超出子程序范围了就跳转到子程序即可,wsv文件内容变化后重载文件后滚动条继续保持在之前的行号即可

609177738 发表于 2026-5-22 20:42:01

要想 标准文本类变量 = "1"   那么火山的文本型变量就必须得 = L"1"
标准文本 核心是char火山文本型是wchar_t不是一个东西而且编码与这个没有关系

Xelloss0618 发表于 2026-5-22 22:34:07

609177738 发表于 2026-5-22 20:42
要想 标准文本类变量 = "1"   那么火山的文本型变量就必须得 = L"1"
标准文本 核心是char火山文本型 ...

火山26版的“类型转换”特性可以实现这些功能了

Xelloss0618 发表于 2026-5-22 22:35:42

火山的标准文本类本身就是随便封的,九成的命令都没实现。
这方面封装最完整的是PIV模块,但“类型转换”这些特性要等模块的下一个版本。

std::string本来就没区分UTF-8和多字节编码,直到C++20才单独搞一个std::u8string。

609177738 发表于 2026-5-22 23:22:19

Xelloss0618 发表于 2026-5-22 22:34
火山26版的“类型转换”特性可以实现这些功能了

其他的情况算是好用的 对应文本来说就是败笔, 明文都需要靠隐士转换来实现太损失性能了

78592802 发表于 2026-5-23 00:55:13

609177738 发表于 2026-5-22 20:42
要想 标准文本类变量 = "1"   那么火山的文本型变量就必须得 = L"1"
标准文本 核心是char火山文本型 ...

底层是char,但是我看着火山的"标准文本类.创建"写的是utf8编码的文本。
火山文本前面加L已经晚了,过去这么长时间了,要改的化只能在IDE上做自动识别了

78592802 发表于 2026-5-23 01:10:17

Xelloss0618 发表于 2026-5-22 22:35
火山的标准文本类本身就是随便封的,九成的命令都没实现。
这方面封装最完整的是PIV模块,但“类型转换”这 ...

真是太随便了,何止九成命令没实现,那里面就2个命令,火山文本创建+取出,没了。就算是让别人去封装,那么大部分人都喜欢直接文本+文本+++的,封装出来的肯定也没有这种方便啊

创世魂 发表于 2026-5-23 08:07:32

本帖最后由 创世魂 于 2026-5-23 08:14 编辑

不过用了 类型转换 本质上还是调用了内部的转换方法的,并不是直接对这个标准文本赋值。
只是在火山代码层面来说,用起来方便一些了。

<火山程序 类型 = "通常" 版本 = 1 />

方法 我的主窗口_创建完毕 <接收事件 类型 = 整数 注释 = "当本组件及其中所有子组件均被创建完毕后发送此事件.">
参数 来源对象 <类型 = 我的主窗口 注释 = "提供事件产生的具体来源对象">
参数 标记值 <类型 = 整数 注释 = "用户调用\"挂接事件\"命令时所提供的\"标记值\"参数值,非此方式挂接事件则本参数值固定为0.">
{
    变量 标准文本 <类型 = 标准文本类>
    标准文本 = "测试"
    标准文本 = 标准文本 + "标准文本"
    调试输出 ((文本型)标准文本)
    返回 (0)
}

Xelloss0618 发表于 2026-5-23 12:25:23

609177738 发表于 2026-5-22 23:22
其他的情况算是好用的 对应文本来说就是败笔, 明文都需要靠隐士转换来实现太损失性能了 ...

使用一点封装技巧,明文可以不做类型转换,但不能写成隐式转换了,只能用方法了。
的确除了文本型,火山的其他对象都没开放+运算符
页: [1]
查看完整版本: 我要来吐槽一下"标准文本类"