以文本方式查看主题

-  金字塔客服中心 - 专业程序化交易软件提供商  (http://222.73.7.161/bbs/index.asp)
--  公式模型编写问题提交  (http://222.73.7.161/bbs/list.asp?boardid=4)
----  IF THEN BEGIN 为何条件不成立,也执行里边的语句??  (http://222.73.7.161/bbs/dispbbs.asp?boardid=4&id=174799)

--  作者:期货大圣
--  发布时间:2020/3/5 22:31:41
--  IF THEN BEGIN 为何条件不成立,也执行里边的语句??
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编辑过]

--  作者:期货大圣
--  发布时间:2020/3/5 22:45:17
--  上边的输出是正确的,请看下边语句
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
--  发布时间:2020/3/5 23:52:47
--  

字符串比较用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