Crystal 报表函数中字符串数组的空值 - Crystal 语法
Null value of String Array in Function of Crystal Reports - Crystal Syntax
我正在尝试创建一个解析此结构字符串的函数:
4:20,5:30,8:40
最多包含 15 个以逗号分隔的值,但也可以包含少于 15 个值。
我首先使用 Split 方法拆分这些值,然后用这些拆分值创建一个数组。
然后我有一个 for 循环,我在其中再次拆分值,这次使用“:”作为分隔符。
但在使用第二次拆分之前,我想检查字符串是否为空。
我怎样才能做到这一点?如果我分配给它的数组变量大于它将 return 的值,Split 会做什么?
它是否用空白字符串、空值填充它?
我试过的
我尝试检查空字符串 ("")、空白 space (" ") 并使用 IsNull。
前两个选项不起作用(函数 return 什么都没有,就好像它总是假的一样),最后一个选项给我一个错误,好像我不能使用那个方法来检查那个字符串变量。
我的代码
Function (StringVar Detalle)
local NumberVar DetalleSplitLength;
local NumberVar i := 1;
local StringVar TipoMoneda;
local StringVar Result;
local StringVar array DetalleSplit;
local StringVar array TipoMonedaSplit;
local BooleanVar First := True;
If Detalle <> "" Then
(
DetalleSplit := Split(Detalle, ',');
DetalleSplitLength := 15;
Redim Preserve DetalleSplit [DetalleSplitLength];
for i := 1 to DetalleSplitLength do
(
' This is the conditional that fails to do what I need.
If (DetalleSplit[i] <> "") Then
(
TipoMonedaSplit := Split(DetalleSplit[i], ':');
If TipoMonedaSplit[2] <> "0" And Result <> "" Then
(
' Here I parse the result.
);
);
)
);
Result
我正在使用 Crystal 语法。
我用“'”添加了注释,以便它们的颜色格式正确。
@mweber 指出,这是我在内部条件中的错误。与空串比较正确
这是工作代码:
(稍后编辑补充)
我想你对非空值的测试确实工作正常,但内部块之前的条件不正确:
If TipoMonedaSplit[2] <> "0" And Result <> "" Then
(
' Here I parse the result.
);
部分 And Result <> "" 阻止您的函数进入您要解析结果的块,因为 Result
之前未初始化。
我正在尝试创建一个解析此结构字符串的函数:
4:20,5:30,8:40
最多包含 15 个以逗号分隔的值,但也可以包含少于 15 个值。
我首先使用 Split 方法拆分这些值,然后用这些拆分值创建一个数组。 然后我有一个 for 循环,我在其中再次拆分值,这次使用“:”作为分隔符。
但在使用第二次拆分之前,我想检查字符串是否为空。 我怎样才能做到这一点?如果我分配给它的数组变量大于它将 return 的值,Split 会做什么? 它是否用空白字符串、空值填充它?
我试过的
我尝试检查空字符串 ("")、空白 space (" ") 并使用 IsNull。 前两个选项不起作用(函数 return 什么都没有,就好像它总是假的一样),最后一个选项给我一个错误,好像我不能使用那个方法来检查那个字符串变量。
我的代码
Function (StringVar Detalle)
local NumberVar DetalleSplitLength;
local NumberVar i := 1;
local StringVar TipoMoneda;
local StringVar Result;
local StringVar array DetalleSplit;
local StringVar array TipoMonedaSplit;
local BooleanVar First := True;
If Detalle <> "" Then
(
DetalleSplit := Split(Detalle, ',');
DetalleSplitLength := 15;
Redim Preserve DetalleSplit [DetalleSplitLength];
for i := 1 to DetalleSplitLength do
(
' This is the conditional that fails to do what I need.
If (DetalleSplit[i] <> "") Then
(
TipoMonedaSplit := Split(DetalleSplit[i], ':');
If TipoMonedaSplit[2] <> "0" And Result <> "" Then
(
' Here I parse the result.
);
);
)
);
Result
我正在使用 Crystal 语法。 我用“'”添加了注释,以便它们的颜色格式正确。
@mweber 指出,这是我在内部条件中的错误。与空串比较正确
这是工作代码:
(稍后编辑补充)
我想你对非空值的测试确实工作正常,但内部块之前的条件不正确:
If TipoMonedaSplit[2] <> "0" And Result <> "" Then
(
' Here I parse the result.
);
部分 And Result <> "" 阻止您的函数进入您要解析结果的块,因为 Result
之前未初始化。