主题:  不好意思,第一次使用函数就出了问题

crazyf

职务:普通成员
等级:1
金币:0.0
发贴:32
#12003/9/29 11:00:51
我想用函数实现一个数组排序,例子如下:
oriarray{3,4,5,8}
charray{4,5}

调用changearray后,charray应该为{0,4,5,0},即charray中的数据与oriarray中的数据位置一致。可是出现了错误,
“Microsoft VBScript 编译器错误 错误 '800a0414'
调用子程序时不能使用括号 ”

我不知道为什么,不好意思,请大家指点一下。

<%
function changearray(oriarray,charray)
temparray=array(ubound(oriarray))
for i=0 to ubound(charray)
for j=0 to ubound(oriarray)
if(charray(i)=oriarray(j)) then
temparray(j)=oriarray(j)
else
temparray(j)=0
end if
next
next
erase charray
'将charray
charray=array(ubound(temparray))
for i=0 to ubound(temparray)
charray(i)=temparray(i)
next
erase temparray
return charray
end Function

%>

<%
'调用changearray函数
changearray(array1,array2)
%>



风之翅

职务:普通成员
等级:2
金币:10.0
发贴:540
#22003/9/30 10:51:31
[Call] name [argumentlist]
在调用过程时,不必使用 Call 关键字。然而,如果使用 Call 关键字调用要求参数的过程,则必须用括号将 argumentlist 括起来。如果省略 Call 关键字,那么必须也同时省略 argumentlist 参数两边的括号。使用 Call 语法调用内部函数或使用用户自定义函数,函数返回值都会被放弃。
但是程序本身好像有问题,我正在试。。。



风之翅

职务:普通成员
等级:2
金币:10.0
发贴:540
#32003/9/30 13:08:29
<%@LANGUAGE="VBSCRIPT"%>
<%
Dim oriarray,charray,temp
oriarray = Array(3,4,5,8)'可以多定义,试试
charray = Array(4,5)
%>
<%
Function changearray(array1,array2)
nub1 = ubound(array1)'数组上界
nub2 = ubound(array2)
temp = array1'只是为了定义临时数组的大小
j = 0
For i = 0 To nub2'分2次循环,第一次循环到array2上界
If array1(i) = array2(j) Then
temp(i) = array2(j)
j = j + 1'有相同则检查array2数组的下一个数字
Else
temp(i) = 0
End If
next
For i = nub2+1 To nub1'第二次循环到array1上界
If j < nub2+1 Then'防止array2出界
If array1(i) = array2(j) Then
temp(i) = array2(j)
j = j + 1
Else
temp(i) = 0
End If
Else
temp(i) = 0
End If
next
array2 = temp
end Function
%>
<%
Call changearray(oriarray,charray)
%>


数组排序


<%
For k = 0 To ubound(charray)
Response.Write charray(k)
Next
%>



crazyf

职务:普通成员
等级:1
金币:0.0
发贴:32
#42003/10/8 10:04:44
非常感谢你的帮助,你不仅告诉了我如何调用函数,而且还帮我进一步完善了函数,真的谢谢你了!