欢迎使用金字塔普通技术服务论坛,您可以在相关区域发表技术支持贴。
我司技术服务人员将优先处理 VIP客服论坛 服务贴,普通区问题处理速度慢,请耐心等待。谢谢您对我们的支持与理解。


金字塔客服中心 - 专业程序化交易软件提供商金字塔软件公式模型编写问题提交 → [求助]求问一个关于显示信息的代码问题

   

欢迎使用金字塔普通技术服务论坛,您可以在相关区域发表技术支持贴。
我司技术服务人员将优先处理 VIP客服论坛 服务贴,普通区问题处理速度慢,请耐心等待。谢谢您对我们的支持与理解。    


  共有3149人关注过本帖树形打印复制链接

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

帅哥哟,离线,有人找我吗?
ebpart
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:新手上路 帖子:85 积分:115 威望:0 精华:0 注册:2011/1/26 23:20:51
[求助]求问一个关于显示信息的代码问题  发帖心情 Post By:2019/12/31 11:08:53    Post IP:120.36.230.225[只看该作者]

如下所示,只有第一段代码,能够正确的把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
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:14496 积分:0 威望:0 精华:0 注册:2017/7/4 13:40:18
  发帖心情 Post By:2019/12/31 11:21:51    Post IP:180.169.30.6[只看该作者]

同一行代码只能取一次计算的结果,也就是最后/最新的计算结果。
写在循环里面的代码无论循环多少次,都无法突破上面的那个限制。





命数如织,当如磐石。
 回到顶部
帅哥哟,离线,有人找我吗?
ebpart
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:新手上路 帖子:85 积分:115 威望:0 精华:0 注册:2011/1/26 23:20:51
  发帖心情 Post By:2019/12/31 11:24:01    Post IP:120.36.230.225[只看该作者]

那就是说,只能按我的第一种写法,每一行显示都要写一行代码,无法省略,无法用循环的方式来简化吗

 回到顶部
帅哥哟,离线,有人找我吗?
ebpart
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:新手上路 帖子:85 积分:115 威望:0 精华:0 注册:2011/1/26 23:20:51
  发帖心情 Post By:2019/12/31 11:25:46    Post IP:120.36.230.225[只看该作者]

感觉逻辑上怪怪的
[此贴子已经被作者于2019/12/31 11:25:58编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
ebpart
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:新手上路 帖子:85 积分:115 威望:0 精华:0 注册:2011/1/26 23:20:51
  发帖心情 Post By:2019/12/31 14:21:08    Post IP:120.36.230.225[只看该作者]

补充一个问题,为何如下的代码,可以在消息窗口全部显示?为何显示在消息窗口就可以,显示在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
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:14496 积分:0 威望:0 精华:0 注册:2017/7/4 13:40:18
  发帖心情 Post By:2019/12/31 14:51:03    Post IP:180.169.30.6[只看该作者]

之前说错了。重新更正下。

msgout的确能在循环内部多次执行,但是这个是为了方便调试才这样设计的。其他的输出语句或下单语句不行。
[此贴子已经被作者于2019/12/31 14:58:25编辑过]


命数如织,当如磐石。
 回到顶部
帅哥哟,离线,有人找我吗?
FireScript
  7楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:14496 积分:0 威望:0 精华:0 注册:2017/7/4 13:40:18
  发帖心情 Post By:2019/12/31 15:00:41    Post IP:180.169.30.6[只看该作者]

 主要有时候调试时候是需要看内部这个过程的,所以也就需要把这个过程输出出来。


命数如织,当如磐石。
 回到顶部