无忧启动论坛

 找回密码
 注册
搜索
系统gho:最纯净好用系统下载站广告联系 微信:wuyouceo QQ:184822951
楼主: zhaohj
打印 上一主题 下一主题

GRUB4DOS更新建议、bug反馈专帖

    [复制链接]
1981#
发表于 2011-12-13 10:48:38 | 只看该作者

回复 #1983 chenall 的帖子

C大能不能详解下call Fn.0 0 和 call Fn 11.0 的用法?

这用法真是不伦不类的,C语言不是C语言。批处理不是批处理。。。。。

毫无头绪。
回复

使用道具 举报

1982#
发表于 2011-12-13 11:22:59 | 只看该作者
fat命令不支持长文件名?


[ 本帖最后由 zxw 于 2011-12-13 11:24 编辑 ]
回复

使用道具 举报

1983#
 楼主| 发表于 2011-12-13 11:30:13 | 只看该作者
主要是我们对字符串的格式不了解,如:
%s      这个应该用来输出一个字符串
%08x  这个表示8位的16进制数
%08d 这个表示8位的10进制数
%016d 这个表示16位的10进制数,注意前面的0,表示位数不足时补0
因为比较数值需要长度相同,所有才用%08x的格式,表示8位的16进制数
---------------------------------
格式符:
  1、d格式符:按十进制格式输出。
      %d 输出数字长度为变量数值的实际长度
      %md m指定输出数据的宽度。当数据本身的实际宽度小于m时,则数据左端补空格;若大于m,则按数据的实际位数输出。
      %ld,%mld l(小写字母L)表示输出“长整型”数据
      %0md,%0mld 0(数字0)表示位数不足m时补0
   2、x格式符:按十六进制格式输出整数。(不会出现负数格式)
   3、o(字母)格式符:按八进制格式输出整数。(不会出现负数格式)
   4、u格式符:以十进制数形式输出unsigned的整数。
   5、c格式符:用来输出一个字符
   6、s格式符:用来输出一个字符串。
        %s 用来输出一个字符串,不含双引号. 例:printf("%s","CHINA");
        %ms m指定宽度(字符串长度小于m时左补空格,大于时按实际宽度输出)
        %-ms 左对齐,不足m时右补空格
        %m.ns 输出占m列,只取字符串中左端n个字符.这n各字符输出在m列的右侧,左补空格.
        %-m.ns 同上,右补空格
   7、f格式符:按实数格式输出。
        %f 整数部分全部显示出来,小数部分显示6位.但并不是显示的所有数字都是有效数字
        %m.nf 指定数据的宽度共为m列,其中有n位小数.如果数值长度小于m,则左侧补空格。
        %-m.nf 与%m.f类似,只是应在右侧补空格
   8、e格式符:以指数形式输出实数。
        %e 按规范化指数形式输出实数,系统自动给出6位小数,指数部分占5位
        %m.ne 与前面的叙述相同
        %-m.ne 与前面的叙述相同
   9、g格式符:它将根据数值的大小,自动选用f格式或e格式输出数据,并且它不输出无意义的0.


@ZXW:
fat在目标上只支持8.3格式。

[ 本帖最后由 zhaohj 于 2011-12-13 12:11 编辑 ]
回复

使用道具 举报

1984#
发表于 2011-12-13 11:40:34 | 只看该作者

回复 #1987 zhaohj 的帖子

那就悲剧了。发现一个驱动文件名超长。
回复

使用道具 举报

1985#
发表于 2011-12-13 12:39:55 | 只看该作者

回复 #1980 sratlf 的帖子

map --status=0 && echo 1 ! echo 2
这个命令返回是1
很快的,连1秒都没用,
另外版主的新RUN试过了,也很快,没有卡住
回复

使用道具 举报

1986#
发表于 2011-12-13 14:56:03 | 只看该作者

回复 #1989 tulongwa 的帖子

那不对啊  要是显示1的话说明你机器上面有软驱  或者是之前有map过fd0  是启动到主界面之后就执行的吗
回复

使用道具 举报

1987#
发表于 2011-12-13 17:16:21 | 只看该作者

回复 #1985 hotdll 的帖子

给你一个网站。C语言函数查询,用法等

http://www.kuqin.com/clib/
回复

使用道具 举报

1988#
发表于 2011-12-13 17:30:49 | 只看该作者
Chenall  老大,g4d 是不是不再支持ansi的字库了???
回复

使用道具 举报

1989#
发表于 2011-12-13 17:45:43 | 只看该作者

回复 #1992 jianliulin 的帖子

新的版本没有编译支持的版本。新的只能使用UNICODE字库。

需要的话可以自己编译。
回复

使用道具 举报

1990#
发表于 2011-12-13 21:20:34 | 只看该作者

回复 #1990 sratlf 的帖子

重新试过,返回是2
同样很快
回复

使用道具 举报

1991#
发表于 2011-12-13 21:29:01 | 只看该作者

回复 #1994 tulongwa 的帖子

返回是2就正常了  谢谢测试
回复

使用道具 举报

1992#
发表于 2011-12-13 21:41:57 | 只看该作者
新版本上传

2011-12-13
        1.修正grub_sprintf函数%d不能正确显示负数的bug.

2011-12-12  command 'if' added '>=' and '<=', and able to perform numeric comparison.
        1.if命令新增>=和<=比较符。
          新的if命令支持三种比较>=,==,<=
          如果两边都是数字,则自动转换成数值型来比较,否则按字符串的ASCII大小比较.
回复

使用道具 举报

1993#
发表于 2011-12-13 22:04:46 | 只看该作者

回复 #1996 chenall 的帖子

数值最大是多少

t.jpg (21.55 KB, 下载次数: 98)

t.jpg
回复

使用道具 举报

1994#
发表于 2011-12-13 22:13:42 | 只看该作者

回复 #1997 sratlf 的帖子

64位整数。
0xffffffffffffffff
回复

使用道具 举报

1995#
发表于 2011-12-13 22:29:41 | 只看该作者
原帖由 chenall 于 2011-12-13 17:16 发表
给你一个网站。C语言函数查询,用法等

http://www.kuqin.com/clib/


谢谢C大。明天起床后去研究下。
回复

使用道具 举报

1996#
发表于 2011-12-13 22:31:45 | 只看该作者

回复 #1991 chenall 的帖子

嘿嘿,淘到宝了。
没看到substring函数,该怎么用?
回复

使用道具 举报

1997#
 楼主| 发表于 2011-12-13 22:47:45 | 只看该作者
数值比较测试ok。现在负数显示也正常了。
回复

使用道具 举报

1998#
发表于 2011-12-13 22:50:35 | 只看该作者

回复 #2000 zxw 的帖子

这个SUBSTRING函数没有多大用处。

相当于strcmp的功能。只是多了一个case_insensitive是否忽略大小写
substring(const char *s1, const char *s2, int case_insensitive)

要比较字符串,可以使用我重新写的函数strncmpx,为了节省代码空间,基本上把所有的字符串比较功能都集中在一起了。

/* strncmpx 增强型字符串比较函数 by chenall 2011-12-13
        int strncmpx(const char *s1,const char *s2, unsigned long n, int case_insensitive)
        比较两个字符串s1,s2.长度: n,
        如果n等于0,则只比较到字符串结束位置。否则比较指定长度n.不管字符串是否结束。
        如果case_insensitive非0,比较字母时不区分大小写。
        可以替换strcmp/memcmp等字符串比较函数
        返回值: s1-s2
                当s1<s2时,返回值<0
                当s1=s2时,返回值=0
                当s1>s2时,返回值>0
*/

用这个函数就可以实现包括目前的substring函数。
strcmp/stricmp
strncmp/strnicmp
memcmp/memicmp

strncmpx 的功能号是 76

n=0时和substring效果一样。
n=0  case_insensitive=0 時就是strcmp
case_insensitive=0 並且n>0時就是strncmp
case_insensitive 非0 n 也是非0 就是strnicmp

....

[ 本帖最后由 chenall 于 2011-12-13 22:54 编辑 ]
回复

使用道具 举报

1999#
发表于 2011-12-13 22:53:00 | 只看该作者

回复 #2002 chenall 的帖子

1213版是否有bug  1212版没问题

[ 本帖最后由 sratlf 于 2011-12-13 22:54 编辑 ]

t.jpg (38.42 KB, 下载次数: 108)

t.jpg

t.jpg (36.75 KB, 下载次数: 127)

t.jpg
回复

使用道具 举报

2000#
发表于 2011-12-13 22:56:58 | 只看该作者

回复 #2003 sratlf 的帖子

我看看。。。。。。。。
回复

使用道具 举报

2001#
发表于 2011-12-13 23:37:23 | 只看该作者
抱歉,没注意测试,找到一个BUG,已经重新上传。

grub4dos-0.4.5b-2011-12-13f.7z
回复

使用道具 举报

2002#
发表于 2011-12-14 08:51:06 | 只看该作者

回复 #2002 chenall 的帖子

谢谢。grub4dos.h也应该更新了。
回复

使用道具 举报

2003#
发表于 2011-12-14 11:46:30 | 只看该作者
C 大 echo 命令里单行最大可以显示多少字符啊?

我无意间用echo 命令输入很多字符时出现如下情况,当字符超过一行后滚屏会把 grub> echo **************** 的“grub> echo”不显示,不知道可以处理成下面这样吗?当超过一行时转入下一行显示,不把grub> 顶没啊?
grub> echo **************************************************
************************


还有就是echo 在菜单文件里用时,字符多了会显示错误“ unrecognized command ” 未确认命令!无法显示字符!


[ 本帖最后由 thttht 于 2011-12-14 12:02 编辑 ]
回复

使用道具 举报

2004#
发表于 2011-12-14 16:08:01 | 只看该作者

回复 #2007 thttht 的帖子

最长1500个字符(变量扩展之后)

。在菜单里面使用我试了没有问题。可能是你的其它命令影响的。上面的提示不一定是ECHO的问题。
回复

使用道具 举报

2005#
发表于 2011-12-14 16:12:56 | 只看该作者

回复 #2007 thttht 的帖子

图中的管道符 | 有问题吧  估计被当作命令执行了

t.jpg (29.73 KB, 下载次数: 111)

t.jpg
回复

使用道具 举报

2006#
发表于 2011-12-14 16:27:21 | 只看该作者

回复 #2009 sratlf 的帖子

嗯,没注意看。就是这个问题。。。
回复

使用道具 举报

2007#
发表于 2011-12-14 16:54:02 | 只看该作者
谢谢!两位大大的解答!!!问题解决了!十分感谢!!!
回复

使用道具 举报

2008#
发表于 2011-12-15 00:10:42 | 只看该作者
@chenall

这个正常吗  1213版grub

t2.jpg (18.13 KB, 下载次数: 124)

t2.jpg
回复

使用道具 举报

2009#
发表于 2011-12-15 11:53:53 | 只看该作者
@chenall

见图  parttype得到的磁盘类型能不能也改成0x07格式的  统一下

t.jpg (50.04 KB, 下载次数: 124)

t.jpg
回复

使用道具 举报

2010#
发表于 2011-12-20 11:55:46 | 只看该作者
用configfile (md)4+8可以调用grldr装载到内存后的内置菜单。


请问怎样确定硬盘上的grldr文件中内置菜单的起始地址?如图,42659H是开始位置?那么更新GRLDR版本后,怎样计算出这个地址?

回复

使用道具 举报

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

本版积分规则

小黑屋|手机版|Archiver|捐助支持|无忧启动 ( 闽ICP备05002490号-1 )

闽公网安备 35020302032614号

GMT+8, 2024-5-25 18:38

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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