`
梁利锋
  • 浏览: 81794 次
  • 性别: Icon_minigender_1
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

点睛文本编码查询 D 语言版

阅读更多

  本软件用于将文本的字符串转换为 Text、Default、Unicode、UTF-8 之间的互相转换,用于文本查询。转换结果使用十六进制表示。

  D 语言版不需要特殊的运行库支持。相对于 VB5 版增加了允许输入十六进制的功能,相对于 .net 版减少了一些功能。

  对于我自己来说,这是练习使用 D 语言的一个副产品。

  程序使用 D 1.015, phobos 和 dfl 开发。

  在这一次练习中,发现 D 语言使用上可以和 c# 很类似,比如我写的 HexStringCoding 类,从 c# 复制过来,只修改了几个小地方(如增加 cast,去除 unsafe),就可以正常编译并且正常运行。另外,和 c/dll 的集成也不错,使用 WideCharToMultiByte 之类的系统函数还是很方便的。dfl 大体模仿 .net,所以使用起来很方便。

  不过,问题也不少。

  比如 bool 类型可以和任何可以转换为 0 和 1 的值进行隐式转换,就是一个语言方面的缺陷。

  另外,D 语言选择 char[] 当作字符串来处理,也是一个非常不可理解的事情。char[] 被定义为 utf8,所以如果要对它进行随机检索的话,就需要更多的代码和更差的运行效率,在我看来,utf8 根本不适合作为程序内部处理字符串的编码方案。utf16 才适合。另外,没有 string 类,而用数组来代替 string 的做法也问题多多,除了强类型检测之外,string 类还应该提供相应的字符串处理函数,而不是使用全局函数处理字符串。在我做这个程序的时候,是都使用 utf16 的 wchar[] 来做中间的字符串代替品的,不过,dfl 遵循使用 char[] 的方案,所以,和界面交互的部分也做了转换处理。也许以后可以修改一下 dfl 的代码,使之直接使用 utf16 吧。

  另一个问题是,无法使用 obj == null 来判断一个实例是否为空,这个问题不知道别人有没有遇到,或者有什么别的解决方案,我是通过 try catch 的方式处理了,不过感觉很不爽。

  另外,还遇到一个问题,基类定义了 abstract 的函数,子类实现了,但是没有使用 override 关键字,编译通过,但是运行结果莫名其妙,加上 override 之后就正常了。这个问题可能造成错误的几率要比上面说的问题大的多,本来,D 应该在这种情况下编译出错才是。

  再者,D 的 module 组织方式,感觉是在鼓励大家把所有的类写入一个文件中,实在不是一个好的方式。

  对于 dfl,也稍微说一下,它使用了首字母小写的方式,在我看来,既然模仿 .net,就不如模仿个彻底,让大家把 .net 的程序复制过来后,做最少的修改就能编译运行才好 —— 所有首字母改成小写,也是一个不小的工程啊。

  Tango 的安装步骤很罗嗦,我还没有试过,不过,嗯,回头还是应该试一下的。

分享到:
评论
4 楼 梁利锋 2008-01-05  
@oldrev

1 判断指针难道不应该用 &p == null 么?那么 &p == null 和 p == null 什么区别?

2 utf16的问题,用 phobos(D1.015) 写一个简单的程序:
char[] s = "世界,你好";
writef(s);
代码保存成 utf8 带标志的格式,运行结果是:
涓栫晫锛屼綘濂
如果用 readln 获取输入的话:
char[] s = readln();
writef(s);
输入“世界,你好”,结果是:
Error: 4invalid UTF-8 sequence
当然,这可以看作 phobos 的一个 bug,同样缺省使用 utf8 的 tango(D1.024) 就可以正确处理中文。
utf8 是一种适合于保存(对于英语世界来说)的格式,而不是一个适合于处理的格式,任何的字符串处理函数在处理 utf8 的时候都会非常麻烦 —— 如果它真的把它当作 utf8,而不是纯英文在处理的话。所以我认为,使用 utf8 作为内码只是使得英语世界的人,更容易的写出不支持多语言的程序却不自知。
我至今没有发现什么需要转换成 utf32 才能操作的文本,也许以后会有吧。

3 用 c++ 不多,不知道 std::string 成员函数太多而广受批评是什么意思。ruby 里面对于数组,连 first 和 last 都各自是一个函数,也没见有人批评,反而是赞誉居多。不过 D 也支持“扩展方法”倒是挺好的。

4 c# 也是一定要写 override 关键字的,否则编译器会抱怨说“如果你想隐藏一个父类成员,请使用 new 关键字进行隐藏”。我只是觉得奇怪,为什么 D 里面不写 override 关键字可以编译通过,特别是,父类里的是一个 abstract 的函数,根本没有缺省实现,而编译器却没有任何抱怨?

5 标准库的问题,似乎也很多人说了。tango 我也试了一下,感觉好一点,毕竟 phobos 里面,基本上连个“类”都很难找到,大都是裸函数。其实,我觉得,“标准库”只是提供一组 interface 都是好的,这样才更体现“标准”之意。

6 首字母小写只是个人习惯问题了
3 楼 oldrev 2008-01-03  
几个小问题:

1. utf16只是 ms 的一厢情愿而已,除nt外绝大多数系统都是 utf-8,真要到操纵文本的时候都得转换成 utf32。

2. 尽量用外部函数而不是成员函数这更有利于封装,C++ 的 std::string 就是因为成员函数太多而广受批评。D里对数组有个“扩展方法”的语法糖:定义了 void foo(T)(T[] array); 就可以用 array.foo() 的形式来调用了。

3. 跟 C# 不一样的地方,凡是涉及到 override 都要写 override 关键字。

4. D 的 module 官方走的是小而专的路子,就像 Ruby和Python的标准库那样,反之, tango 想重新成为 .net/java 标准库

5. 首字小写是官方推荐标准,个人感觉比较合理,比如构造函数就是  this(),天生的 camelcase,呵呵。如果说类型首字大写的话那些内置属性比如 int.Sizeof 会很难看
2 楼 oldrev 2008-01-03  
判断指针可以用 p == null,而对象引用一定要用 obj is null
1 楼 梁利锋 2008-01-01  
又试了一下,判断 obj 是否为 null 可以使用 obj is null,只是不理解为什么 obj == null 不会造成编译错误。

相关推荐

    点睛文本编码查询(文本的字符串转换工具)

    软件名:点睛文本编码查询 功能:本软件用于将文本的字符串转换为 Text、ASCII、Default、Unicode、BigEndianUnicode、UTF-8、UTF-7、GBK、BIG5 之间的互相转换,用于文本查询。转换结果使用十六进制表示。

    点睛文本编码查询,方便编码转换

    "点睛文本编码查询"工具显然旨在帮助用户轻松进行文本编码的转换,这对于跨平台工作、处理多种语言文件或者解决乱码问题非常有用。下面我们将深入探讨这个主题。 文本编码,简单来说,是将字符转化为数字的规则,...

    点睛文本编码查询 v1.2 汉化版

    本软件用于将文本的字符串转换为 Text、ASCII、Default、Unicode、 BigEndianUnicode、UTF-8、UTF-7、GBK、BIG5 之间的互相转换,用于文 本查询。转换结果使用十六进制表示。

    点睛 内码转换器

    "点睛内码转换器"是一款专为处理文本编码问题设计的工具,它能够帮助用户在不同的字符编码之间进行转换,以解决由于编码不匹配导致的乱码问题。在计算机科学领域,字符编码是用于表示文本的一系列规则,常见的有...

    点睛字串替换器 1.05 版

    本程序是一个字串替换工具,主要对 VB、C、Delphi 编译的可执行文件中的 ASCII 及 UniCode 和文本格式的语言包文件进行字串替换的工作,作为对使用 VC、eXeScope、ResHaker 汉化的程序进行进一步的修饰之用。...

    点睛字符替换器 v1.05特别修正版.rar

    点睛字符替换器v1.05特别修正版是一款针对文本处理的专业软件,主要用于批量替换文本中的特定字符或字符串。这个特别修正版可能是对原始版本的优化和改进,以解决某些问题或添加新功能。在IT领域,字符替换工具是...

    点睛网赚论坛源码整站程序+10W数据【送主动推送工具】

    点睛网赚论坛源码整站程序+10W数据【送主动推送工具】 安装教程https://www.ygwzjs.cn/post/260.html 百度推送工具https://www.ygwzjs.cn/post/181.html 效果演示:z-www.seoheimao.cn 【全新优化】点睛网论坛整站...

    点睛字串替换器V1·06

    点睛字串替换器V1·06主要用于非资源 本软件是一个本地化工具,主要用于非资源格式的本地化工作,支持的种类包括非资源格式的 C 编译的程序中的 ASCII 字符串和 UniCode 字符串、非资源格式的 Delphi(C++ Builder)...

    点睛字串替换器

    点睛字串替换器

    360点睛多语言加密示例和密码加密调试工具.zip

    《360点睛营销平台多语言加密及调试技术详解》 360点睛营销开放平台是一款由360公司推出的广告投放和营销管理工具,它为开发者提供了丰富的API接口,以帮助开发者构建和优化自己的广告系统。在这个名为"360点睛多...

    360点睛使用手册(2019.08).pdf

    下载与安装部分提示用户,可通过访问点睛平台官网(***)下载安装包。软件支持Android 5.0及以上版本和iOS 9.0及以上版本的安装。 在账户管理方面,用户可以通过点睛账户登录、手机号码登录和CRM账户登录三种方式...

    点睛网赚论坛整站程序+全套数据.zip

    【标题】"点睛网赚论坛整站程序+全套数据.zip"所涵盖的知识点主要集中在网站建设和运营领域,特别是关于论坛程序和数据管理方面。这个压缩包文件提供了一个完整的网络赚钱论坛的源代码和所有相关数据,对于想要搭建...

    PosConv AHHEdit 灵便 点睛绿色

    此外,“点睛”可能暗示这款软件在功能上具有画龙点睛的效果,能够在处理文本时提供关键性的帮助。 综上所述,PosConv AHHEdit是一款高效、灵活、轻量级的文本处理工具,结合了位置转换和高级文本编辑功能,为用户...

    Lephone Localize Plus(点睛字符替换器) 1.06

    主要用于非资源格式的本地化工作,支持的种类包括非资源格式的 C 编译的程序中的 ASCII 字符串和 UniCode 字符串、非资源格式的 Delphi(C++ Builder)编译的程序的字符串、VB 编译的程序的字符串、文本格式的字符串...

    部编版四年级语文上册全套知识点考点阅读点睛.pdf

    然而,根据标题和描述,可以推断文件“部编版四年级语文上册全套知识点考点阅读点睛.pdf”应该是针对小学四年级学生,针对部编版教材编写的语文复习资料,包含了语文学习中的一些重要知识点和考点,以及对阅读材料的...

    点睛网赚论坛整站程序 带全套数据打包.zip

    点睛网赚论坛整站程序 带全套数据打包

    12月新东方四级方法点睛.pdf

    第一部分四级语法. 一、简单句的核心构成..... 二、简单句的核心变化——谓语动词的时态/情态/语态..三、简单句的扩展——形容词/副词/介词短语. 四、简单句的提升——非谓语动词... 五、简单句的综合运用. ...

Global site tag (gtag.js) - Google Analytics