Rss & SiteMap

金字塔客服中心 - 专业程序化交易软件提供商 http://www.weistock.com/bbs/

专业程序化软件提供商
共7 条记录, 每页显示 10 条, 页签: [1]
[浏览完整版]

标题:[求助]求问一个关于显示信息的代码问题

1楼
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}
2楼
FireScript 发表于:2019/12/31 11:21:51
同一行代码只能取一次计算的结果,也就是最后/最新的计算结果。
写在循环里面的代码无论循环多少次,都无法突破上面的那个限制。



3楼
ebpart 发表于:2019/12/31 11:24:01
那就是说,只能按我的第一种写法,每一行显示都要写一行代码,无法省略,无法用循环的方式来简化吗
4楼
ebpart 发表于:2019/12/31 11:25:46
感觉逻辑上怪怪的
[此贴子已经被作者于2019/12/31 11:25:58编辑过]
5楼
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编辑过]
6楼
FireScript 发表于:2019/12/31 14:51:03
之前说错了。重新更正下。

msgout的确能在循环内部多次执行,但是这个是为了方便调试才这样设计的。其他的输出语句或下单语句不行。
[此贴子已经被作者于2019/12/31 14:58:25编辑过]
7楼
FireScript 发表于:2019/12/31 15:00:41
 主要有时候调试时候是需要看内部这个过程的,所以也就需要把这个过程输出出来。
共7 条记录, 每页显示 10 条, 页签: [1]


Powered By Dvbbs Version 8.3.0
Processed in 0.01953 s, 3 queries.