cnCalc计算器论坛

 找回密码
 注册
搜索
查看: 7421|回复: 25

[聊天] 【预告】 Malical 2.5

[复制链接]
发表于 2011-12-17 11:47:46 | 显示全部楼层 |阅读模式
本帖最后由 Wudy 于 2011-12-17 11:50 编辑

Malical  2.5已经基本完成~

它在Malical 2.15的基础上,扩充了函数库,加快了速度,修改了一些细节。可以在计算器上实现和SDK一样的效果!

函数库:
超频函数,RTC函数,显存操作应有尽有!(以后还可能增加文件操作)

速度:
画图因为应用了显存,绝对prog快

较之2.15版的其他新特性:
1.可设置ac+exe强退
2.exit()退回主菜单
3.去掉布尔值,0是假,非零是真
4.一行写多条语句
5.错误提示加上错误行
6.其他小修改


建议先去熟悉一下2.15版,到时候上手更快。(http://www.cncalc.org/viewthread.php?tid=6317
发布的时候会附带发布一系列示例程序(时钟,超频程序,画图,元素周期表,3D作图(这不是我的作品),分解质因数,平方根等)

趁还没发布,大家还有什么建议快提吧。

发表于 2011-12-17 12:03:04 | 显示全部楼层
多行与分行好像是Win32版本里面的吧.....
 楼主| 发表于 2011-12-17 12:06:42 | 显示全部楼层
2# diameter
对9860也算新特性了。。
发表于 2011-12-17 17:31:31 | 显示全部楼层
建议把浮点数转字符串的问题好好解决一下,以前版本都是默认输出6位的。
还有就是字符串缓存,我设的buffer都是128 byte,如果有了文件操作,需要处理大规模的的文本,这点缓存就不够用了。
发表于 2011-12-17 18:57:44 | 显示全部楼层
啊,强烈支持。
 楼主| 发表于 2011-12-17 20:09:02 | 显示全部楼层
本帖最后由 Wudy 于 2011-12-17 20:10 编辑

4# diameter
已经解决,可以选择不输出后面的0,缓存也扩大了

字符输出改了很多,可以输出小字,还有locate像SDK一样
比如光标本来在1,1。print[“123”]之后光标自动变成4,1,这个可以为输出带来很大方便,不知道原来设计的时候为什么不这么做。
发表于 2011-12-17 20:20:18 | 显示全部楼层
6# Wudy
因为文字换行、翻页是个大问题....
 楼主| 发表于 2011-12-17 20:34:04 | 显示全部楼层
还有一个小bug,我也不知道到底什么情况....
 楼主| 发表于 2011-12-17 22:38:11 | 显示全部楼层
下面的代码是正确的,但malical会报错。它不会执行a = 9,但是会执行if a > 12,而因为没有a = 9, a还是NIL类型的,不能比较,就报错了。
::main
  var[a]

  if 0
    locate[1][1]
    print["11"]
    a = 9
    if a > 12
      a = 0
    end
  end
::end
发表于 2011-12-17 22:45:28 | 显示全部楼层
下面的代码是正确的,但malical会报错。它不会执行a = 9,但是会执行if a > 12,而因为没有a = 9, a还是NIL类型的,不能比较,就报错了。
::main
  var[a]

  if 0
    locate[1][1]
    print["11"]
    a  ...
Wudy 发表于 2011-12-17 22:38


输出“11”正确运行了?那就有点奇怪了。整段代码应该都不会运行啊(if 0在那里摆着呢)
 楼主| 发表于 2011-12-17 22:53:12 | 显示全部楼层
本帖最后由 Wudy 于 2011-12-17 22:56 编辑

RunFunction里的todo是0,语句不会执行,但是还是会一行一行的解析,碰到if a > 12还会算a>12
有没有什么解决办法?
发表于 2011-12-17 23:14:48 | 显示全部楼层
RunFunction里的todo是0,语句不会执行,但是还是会一行一行的解析,碰到if a > 12还会算a>12
有没有什么解决办法?
Wudy 发表于 2011-12-17 22:53

不对呀这个...上一个语句块的todo会被穿到下一个语句块的_todo里面去,只有todo和_todo都为真的时候才会运行。我怀疑是不是去掉了boolean出的问题
以前都这样的用法:(在RunFunction处理if的里面)

  1. if (obj.tag != VT_BOOL)
  2.     MalicalError("if statement condition need boolean value");
  3. _todo = obj.value.b;
复制代码
发表于 2011-12-17 23:15:49 | 显示全部楼层
是不是引用obj.value.b没改过来(这样的话肯定出错)?亦或是floating转为int时的问题?
 楼主| 发表于 2011-12-17 23:22:40 | 显示全部楼层
本帖最后由 Wudy 于 2011-12-17 23:27 编辑

都改过来了,你把这段代码的0改成false放在2.15版里试试看,报告一样的错误
发表于 2011-12-17 23:28:13 | 显示全部楼层
都改过来了,你把这段代码的0改成false放在2.15版里试试看
Wudy 发表于 2011-12-17 23:22


2.15也出现了这个问题....看来是设计缺陷,干脆让if语句块的解析如果_todo为假就不计算condition
 楼主| 发表于 2011-12-17 23:35:08 | 显示全部楼层
本帖最后由 Wudy 于 2011-12-17 23:36 编辑
2.15也出现了这个问题....看来是设计缺陷,干脆让if语句块的解析如果_todo为假就不计算condition
diameter 发表于 2011-12-17 23:28

最开始我改成如果todo为0就不执行整个处理if的语句块,然后失败了。只不算条件应该可以。
 楼主| 发表于 2011-12-18 11:03:39 | 显示全部楼层
有没有人知道picture,capture这些文件按什么格式储存的?
发表于 2011-12-18 11:19:05 | 显示全部楼层
17# Wudy

说的是存在9860RAM里面的吗?应该跟PRGM一样有ENTRY POINT。只不过官方不让调用。不如到CK上问问吧。
 楼主| 发表于 2011-12-18 18:18:37 | 显示全部楼层
18# diameter 对,想加个可以显示这些图片的函数。
不是有个可以把这些图片转换为bmp文件的转换器,那个作者应该知道
 楼主| 发表于 2011-12-18 18:58:30 | 显示全部楼层
完成了,在测试几天就发布
元素周期表





时钟

超频


随意画线


原来的3d作图

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

x

评分

参与人数 1金钱 +3 收起 理由
diameter + 3 好!

查看全部评分

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

本版积分规则

Archiver|手机版|cnCalc计算器论坛

GMT+8, 2024-11-25 12:06 , Processed in 0.090149 second(s), 28 queries .

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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