Crystal reports crystal reports开关语句响应不正确
为什么我的代码不能正确读取Switch语句中的值?代码如下 我已经验证了它是正确的迭代,一次迭代一个字符,并且数字字符似乎与条件匹配。但是每个字符都是默认处理的,没有一个字符是由条件处理的Crystal reports crystal reports开关语句响应不正确,crystal-reports,Crystal Reports,为什么我的代码不能正确读取Switch语句中的值?代码如下 我已经验证了它是正确的迭代,一次迭代一个字符,并且数字字符似乎与条件匹配。但是每个字符都是默认处理的,没有一个字符是由条件处理的 Local StringVar inString := "X12y1023" ; Local StringVar outString; Local NumberVar i :=1; ... While i <= Length(inString) Do ( Local StringVar in
Local StringVar inString := "X12y1023" ;
Local StringVar outString;
Local NumberVar i :=1;
...
While i <= Length(inString)
Do (
Local StringVar inC := mid(inString, i, 1);
Local StringVar outC;
Switch(
inC = "1", outC := "!",
inC = "2", outC := "Z",
inC = "3", outC := "E",
...
inC = "0", outC := "O",
True, outC := inC
);
outString := outString + outC;
i := i+1;
);
outString;
产出产生
X_1,1_1,2_1,y_1,1_1,0_1,2_1,3_1
我错过了什么
谢谢一个
开关
语句并不是真的要按照您试图使用它的方式来使用的;它用于返回简单的值,而不用于更复杂的语句,如变量赋值。我猜您看到的行为可能只是函数特定实现的副产品
相反,您可以使用case语句
或重新排列开关
,使其仅用于返回简单值
//Your code changed to use a case-statement
Local StringVar inString := "X12y1023" ;
Local StringVar outString;
Local NumberVar i :=1;
While i <= Length(inString)
Do (
Local StringVar inC := mid(inString, i, 1);
Local StringVar outC;
Select inC
Case "1" : outC:="!"
Case "2" : outC:="Z"
Case "3" : outC:="E"
Case "0" : outC:="O"
Default : outC:=inC;
outString := outString + outC;
i := i+1;
);
outString;
//您的代码已更改为使用case语句
本地StringVar指令:=“X12y1023”;
局部突出;
局部数为i:=1;
而我只是建议,如果开关不工作,为什么不试试如果,否则如果你的要求
//Your code changed to use a case-statement
Local StringVar inString := "X12y1023" ;
Local StringVar outString;
Local NumberVar i :=1;
While i <= Length(inString)
Do (
Local StringVar inC := mid(inString, i, 1);
Local StringVar outC;
Select inC
Case "1" : outC:="!"
Case "2" : outC:="Z"
Case "3" : outC:="E"
Case "0" : outC:="O"
Default : outC:=inC;
outString := outString + outC;
i := i+1;
);
outString;
//Your code rearranged to use switch as intended
Local StringVar inString := "X12y1023" ;
Local StringVar outString;
Local NumberVar i :=1;
While i <= Length(inString)
Do (
Local StringVar inC := mid(inString, i, 1);
outString := outString +
switch(
inC = "1", "!",
inC = "2", "Z",
inC = "3", "E",
inC = "0", "O",
True, inC);
i := i+1;
);
outString;