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


金字塔客服中心 - 专业程序化交易软件提供商金字塔软件公式模型编写问题提交 → IF THEN BEGIN 为何条件不成立,也执行里边的语句??

   

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


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

主题:IF THEN BEGIN 为何条件不成立,也执行里边的语句??

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


加好友 发短信
等级:论坛游侠 帖子:110 积分:0 威望:0 精华:0 注册:2019/6/10 11:24:28
IF THEN BEGIN 为何条件不成立,也执行里边的语句??  发帖心情 Post By:2020/3/5 22:31:41    Post IP:117.147.41.68[只看该作者]

s:='';
a := if(s='','s为空','s不为空');
drawtext(ISLASTBAR,L,a);
IF s!='' THEN
BEGIN
p1:STRTONUM( s ), COLORred,linedot; //转为数字
END

以上同样的语句,在我的主图公式里,输出p1:0
我新建一个新的主图公式,就没有输出
这是为什么呢?
[此贴子已经被作者于2020/3/5 22:33:27编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
期货大圣
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:论坛游侠 帖子:110 积分:0 威望:0 精华:0 注册:2019/6/10 11:24:28
上边的输出是正确的,请看下边语句  发帖心情 Post By:2020/3/5 22:45:17    Post IP:117.147.41.68[只看该作者]

s1:=GETINIFILESTRING('c:/jzt_data/mycore/alert_price_current.ini' ,code , 'price'); //读取ini文件中的价格

a := if(s1='','s1为空','s1不为空');
drawtext(ISLASTBAR,L,a);
IF s1!='' THEN
BEGIN
p1:STRTONUM( s1 ), COLORred,linedot; //转为数字
END

看来关键是在GETINIFILESTRING函数,当它取不到值的时候,返回是不是空字符串呢?
我用a := if(s1='','s1为空','s1不为空');判断,确实是空字符串。
但是,用if 判断,就不行了。
以上语句输出如图:

图片点击可在新窗口打开查看此主题相关图片如下:sshot-2.png
图片点击可在新窗口打开查看


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


加好友 发短信
等级:管理员 帖子:26632 积分:0 威望:0 精华:7 注册:2015/4/9 14:59:07
  发帖心情 Post By:2020/3/5 23:52:47    Post IP:101.88.241.192[只看该作者]

字符串比较用STRCMP函数。

 

 

s1:=GETINIFILESTRING('d:/aaa.ini' ,'code' , 'price1');   //读取ini文件中的价格


a := if(STRCMP( s1,'')=0,'s1为空','s1不为空');
drawtext(ISLASTBAR,L,a);
IF STRCMP( s1,'' )<>0 THEN
BEGIN
 p1:STRTONUM(s1), COLORred,linedot;   //转为数字
END

 



编程无捷径,技巧靠积累。
 回到顶部