以文本方式查看主题

-  金字塔客服中心 - 专业程序化交易软件提供商  (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
--  
 主要有时候调试时候是需要看内部这个过程的,所以也就需要把这个过程输出出来。