我的程序运行时间较长,任何才能实现类似进度条或完成百分比的设计
我编的vlisp程序,运行时不需要交互操作,但运行时间较长.为了明确的告诉用户程序正在运行,我想设计出类似进度条或完成百分比进度的程序.想用(princ "|")在命令行不停的打印竖杠的方法来表示程序正在运行,但却发现程序运行时并不在命令行逐个显示竖杠,而是程序运行完后才同时把所有的竖杠都显示出来.达不到告诉用户"程序正在运行中"的目的.请高手指点. 下面是试验程序,(我的计算机是300M主频)(defun c:bb (/ all counter)
(setq all 10)
(setq counter 1.0)
(while (> all 0)
(setq counter 1.0)
(while (< counter 100000)
(setq counter (* counter 1.0001))
)
(princ "|")
(setq all (1- all))
)
(princ "完成")
(princ )
) 我也来发个简易版的,采用grtext方式
;;(jd n i),n为重复运算的第几个,i为需要运算的总个数
(defun jd (n i / box in re)
(setq box '("" "▏" "▎" "▍" "▌" "▋" "▊" "▉"))
(setq in (fix (/ (* 160 n) i)))
(setq re (rem in 8))
(setq in (* 2 (fix (/ in 8))))
(setq re (nth re box))
;;;(setq n (1+ n))
(grtext -2
(strcat (rtos (/ (* 100.0 n) i) 2 1) "%"
"程序正在运行,请稍等"
(substr "████████████████████" 1 in)
re)
)
)
呵呵,老张回来了?
一个趣味程序,很久以前的事情了(defun c:setup ()
;;;_____________________________
(defun done (/ n m)
(mode_tile "accept" 1)
(mode_tile "cancel" 1)
(start_image "t2")
(fill_image
0
0
(dimx_tile "t2")
(dimy_tile "t2")
5
)
(end_image)
(setq n 1)
(repeat 100
(setq m 0)
(repeat 4500
(setq m (1+ m))
)
(set_tile "t1"
(strcat "已经进行了% " (vl-princ-to-string n))
)
(start_image "t2")
(fill_image
0
0
(fix (* n (/ (dimx_tile "t2") 100.0)))
(dimy_tile "t2")
1
)
(end_image)
(setq n (1+ n))
)
(mode_tile "accept" 1)
(mode_tile "cancel" 0)
(set_tile "t1" "OursCAd 注册程序已经完成!")
)
;;;_____________________________
(setq t1 " ☆☆☆☆☆ ") ;serial由oursjg1-->oursjgjs后得到
(setq dh nil)
(setq seria1 "缺省值为1234567890 ")
(SETQ dh (LOAD_DIALOG "atcad.DCL"))
(if (new_dialog "oursetup" dh)
(progn
(set_tile "t1" t1)
(set_tile "pass" seria1)
(action_tile "cancel" "(done_dialog 0)")
(action_tile "accept" "(dogwrite)(done)")
(action_tile "pass" "(setq seria1 $value)")
(setq do_next (start_dialog))
(cond
((= 1 do_next)
(progn
(done)
)
)
)
)
)
(unload_dialog dh)
(PRINC)
)
;;;;;;;;;;dcl文件
oursetup:dialog{label="☆ ☆ ☆ Ours CAD安 装 程 式 ☆ ☆ ☆";
alignment=centered;
spacer_1;
:row{
:text{label=" Ours CAD 疯狂设计工具软件环境初始化";}
:text{label=" %%% ";key="t1";}
}
: image_button {color=5;key="t2";width=60;height=1;}
:row{
:edit_box{label="输入密码:";edit_width=55;key="pass";password_char="*";}
}
spacer_1;
ok_cancel;
} 我试了一下,跟你说的不一样,程序运行时在命令行逐个显示竖杠,我的计算机是2.4G主频
我的怎麼不行
zhang8755发表于2003-7-26 14:25:00static/image/common/back.gif我试了一下,跟你说的不一样,程序运行时在命令行逐个显示竖杠,我的计算机是2.4G主频我的怎麼不行,主频怎麼看??? 我的也是全部显示!1.7g主频 myfreemind发表于2003-7-26 20:01:00static/image/common/back.gif我的也是全部显示!1.7g主频
如何知道我電腦的主频 你买电脑的时候没有看cpu的主频吗?在启动的时候,会有显示cpu的主频和内存容量!
我是用公司的電腦.
我同样有过楼主的现象,我们用的是同样的方法,当然,也是同样的结果!不过,我看到了doslid函数中,有 “操作AutoCAD状态栏的进度器” dos_progbar,应该可以用,不过,我试过一次,好像不知道是怎么控制进度的,只出现一个静态的进度器框。