Coldfusion RemoveChars函数的2参数现在为0,必须为正整数

Coldfusion RemoveChars函数的2参数现在为0,必须为正整数,coldfusion,coldfusion-9,Coldfusion,Coldfusion 9,我在浏览zzvp.cfm页面时遇到此错误 The 2 parameter of the RemoveChars function, which is now 0, must be a positive integer The error occurred in /www/zzvp.cfm: line 578 Called from /www/zzvp.cfm: line 530 Called from /www/zzvp.cfm: line 1 576 : &

我在浏览zzvp.cfm页面时遇到此错误

The 2 parameter of the RemoveChars function, which is now 0, must be a positive integer


The error occurred in /www/zzvp.cfm: line 578
 Called from /www/zzvp.cfm: line 530
 Called from /www/zzvp.cfm: line 1
 576 :              <cfset updir = #RemoveChars(updir, len(updir), 1)#>
 577 :              <cfloop condition = "Right(updir, 1) neq '\'">
 578 :                  <cfset updir = #RemoveChars(updir, len(updir), 1)#>
 579 :              </cfloop>
 580 :              <th class=chkbx><input type=checkbox width='13px'
   class=chkbx></th><td width="20%"><strong><a href="?action=goto&scr=#updir#">..</a></strong></td>`
RemoveChars函数的2参数现在为0,必须是正整数
错误出现在/www/zzvp.cfm:第578行
从/www/zzvp.cfm调用:第530行
从/www/zzvp.cfm调用:第1行
576 :              
577 :              
578 :                  
579 :              
580:`

关于如何解决这个问题,有什么想法吗?

即使我不了解代码背后的逻辑,下面介绍您的问题

出现错误,因为字符串长度变为零,但仍然未找到
\
。添加额外条件以检查循环中字符串的长度

<cfloop condition = "Right(updir, 1) neq '\' AND  len(updir)">
    <cfset updir = RemoveChars(updir, len(updir), 1)>
</cfloop>

对于这个逻辑,我认为有更好的方法来实现这个逻辑而不需要循环。见下文

<!--- Treat string as a list with \ as delimiter ---> 
<cfset updir = ListDeleteAt(updir, listlen(updir,'\'), '\') >



错误消息的意思与它所说的完全一致。您正在使用错误的参数调用函数。如文档和错误消息中所述,第二个参数必须大于零。到目前为止,您试图解决的问题是什么?在进行了第一组更改
之后,我得到了相同的错误,但第577行575:576:577:578:579:@martin不需要循环。用此
替换
cfloop
。我会设法找出出错的原因。你能发布一个示例输入吗?因此,删除循环并最终看起来像@martin我要说的是替换整个
块<代码>
您好,谢谢,但即使您做了更改,我也无法使其正常工作。不过还是谢谢你的帮助
<!--- Reverse string --->
<cfset updir = Reverse(updir)> 
<!--- Get from left till the position of the \  --->
<cfset updir = Left( Reverse(updir), len(updir) - find(updir , '\') + 1 ) >