以文本方式查看主题 - 金字塔客服中心 - 专业程序化交易软件提供商 (http://222.73.7.161/bbs/index.asp) -- 公式模型编写问题提交 (http://222.73.7.161/bbs/list.asp?boardid=4) ---- [求助]求问一个关于显示信息的代码问题 (http://222.73.7.161/bbs/dispbbs.asp?boardid=4&id=173786) |
-- 作者:ebpart -- 发布时间:2019/12/31 11:08:53 -- [求助]求问一个关于显示信息的代码问题 如下所示,只有第一段代码,能够正确的把5行信息都显示出来,其他3段代码都是只能显示最后1行信息。 但是这一段代码这种写法,显得很不科学啊。 求助解决方法。 //这是可以正确显示所有行的代码 XPOINT:=20; YPOINT:=10; SPACE:=20; IF ISLASTBAR THEN BEGIN
FOR I = 1 TO 5 DO
BEGIN
LINE:=I;
PRINT_INFO:=\'这是第\'+NUMTOSTR(LINE,0)+\'行\';
IF I=1 THEN DRAWTEXTEX(1,1,XPOINT,YPOINT+LINE*SPACE,PRINT_INFO,COLORYELLOW);
IF I=2 THEN DRAWTEXTEX(1,1,XPOINT,YPOINT+LINE*SPACE,PRINT_INFO,COLORYELLOW);
IF I=3 THEN DRAWTEXTEX(1,1,XPOINT,YPOINT+LINE*SPACE,PRINT_INFO,COLORYELLOW);
IF I=4 THEN DRAWTEXTEX(1,1,XPOINT,YPOINT+LINE*SPACE,PRINT_INFO,COLORYELLOW);
IF I=5 THEN DRAWTEXTEX(1,1,XPOINT,YPOINT+LINE*SPACE,PRINT_INFO,COLORYELLOW);
END END //这是只能显示第5行的代码 XPOINT:=20; YPOINT:=10; SPACE:=20; IF ISLASTBAR THEN BEGIN
FOR I = 1 TO 5 DO
BEGIN
LINE:=I;
PRINT_INFO:=\'这是第\'+NUMTOSTR(LINE,0)+\'行\';
DRAWTEXTEX(1,1,XPOINT,YPOINT+LINE*SPACE,PRINT_INFO,COLORYELLOW);
END END //以下代码也是只能显示第5行 XPOINT:=20; YPOINT:=10; SPACE:=20; LINE:=1; IF ISLASTBAR THEN BEGIN
FOR I = 1 TO 5 DO
BEGIN
PRINT_INFO:=\'这是第\'+NUMTOSTR(LINE,0)+\'行\';
DRAWTEXTEX(1,1,XPOINT,YPOINT+LINE*SPACE,PRINT_INFO,COLORYELLOW);
LINE:=LINE+1;
END END //以下代码也是只能显示第5行 {XPOINT:=20; YPOINT:=10; SPACE:=20; LINE:=1; IF ISLASTBAR THEN BEGIN
FOR I = 1 TO 5 DO
BEGIN
PRINT_INFO:=\'这是第\'+NUMTOSTR(LINE,0)+\'行\';
IF I=LINE THEN DRAWTEXTEX(1,1,XPOINT,YPOINT+LINE*SPACE,PRINT_INFO,COLORYELLOW);
LINE:=LINE+1;
END END}
|
-- 作者:FireScript -- 发布时间:2019/12/31 11:21:51 -- 同一行代码只能取一次计算的结果,也就是最后/最新的计算结果。 写在循环里面的代码无论循环多少次,都无法突破上面的那个限制。 |
-- 作者:ebpart -- 发布时间:2019/12/31 11:24:01 -- 那就是说,只能按我的第一种写法,每一行显示都要写一行代码,无法省略,无法用循环的方式来简化吗 |
-- 作者:ebpart -- 发布时间:2019/12/31 11:25:46 -- 感觉逻辑上怪怪的 [此贴子已经被作者于2019/12/31 11:25:58编辑过]
|
-- 作者:ebpart -- 发布时间:2019/12/31 14:21:08 -- 补充一个问题,为何如下的代码,可以在消息窗口全部显示?为何显示在消息窗口就可以,显示在K线窗口就不行? IF ISLASTBAR THEN BEGIN FOR I = 1 TO 5 DO BEGIN LINE:=I; PRINT_INFO:=\'这是第\'+NUMTOSTR(LINE,0)+\'行\'; MSGOUT(1,PRINT_INFO); END END //这是只能显示第5行的代码 XPOINT:=20; YPOINT:=10; SPACE:=20; IF ISLASTBAR THEN BEGIN FOR I = 1 TO 5 DO BEGIN LINE:=I; PRINT_INFO:=\'这是第\'+NUMTOSTR(LINE,0)+\'行\'; DRAWTEXTEX(1,1,XPOINT,YPOINT+LINE*SPACE,PRINT_INFO,COLORYELLOW); END END [此贴子已经被作者于2019/12/31 14:22:34编辑过]
|
-- 作者:FireScript -- 发布时间:2019/12/31 14:51:03 -- 之前说错了。重新更正下。 msgout的确能在循环内部多次执行,但是这个是为了方便调试才这样设计的。其他的输出语句或下单语句不行。
[此贴子已经被作者于2019/12/31 14:58:25编辑过]
|
-- 作者:FireScript -- 发布时间:2019/12/31 15:00:41 -- 主要有时候调试时候是需要看内部这个过程的,所以也就需要把这个过程输出出来。 |