2009-12-11 18 views

Respuesta

11

La palabra clave opcional (como en VB6) no está permitido en VBScript

tal vez esto ayuda a: http://www.4guysfromrolla.com/webtech/071801-1.shtml

+0

tipo de. Idealmente, esperaba evitar el uso de una matriz o argumentos nulos suministrados a la función. Supongo que no es posible con el script VB. Gracias por la ayuda. –

3

¿Qué tal overloading?

+2

Una vez más tipo de. Todavía terminas teniendo que usar una matriz o una comprobación nula de los parámetros. Supongo que es la mejor oferta de script vb. Gracias por la ayuda. –

+0

vbscript no ofrece una sobrecarga real. –

1

Obviosly esto depende de su entorno y si es compatible con el uso tanto de JScript y VBScript en el mismo archivo, pero he tenido cierto éxito utilizando Windows script Host (archivos * .wsf), es decir

<?xml version="1.0" standalone="yes" ?> 
<package xmlns="Windows Scripting Host"> 
    <job id="param"> 
    <?job debug="true"?> 

     <script language="JavaScript"> 
      <![CDATA[ 
       function MakeString(args) { 
        var s = []; 
        for(var i = 0, length = arguments.length; i < length; i++) 
         s.push(arguments[i]); 
        return s.join(''); 
       } 
      ]]> 
     </script> 
     <script language="vbscript"> 
      <![CDATA[ 
       WScript.Echo MakeString("hello", " ", "world") 
       WScript.Echo MakeString() 
       WScript.Echo MakeString(1,2,3,4) 
      ]]> 
     </script> 
    </job> 
</package> 

donde se puede definir su función en JScript y hacer referencia a ella en VBScript. Una mejor manera bien puede ser la de incluir sus funciones JScript como un archivo externo es decir

<script language="JavaScript" src="makestring.js"/> 
    <script language="vbscript"> 
     <![CDATA[ 
      WScript.Echo MakeString("hello", " ", "world") 
      WScript.Echo MakeString() 
      WScript.Echo MakeString(1,2,3,4) 
     ]]> 
    </script> 
-4

Sólo tiene que pasar de un tipo diferente y buscar él.

wscript.echo "1: " & math(7,8,false) 
wscript.echo "2: " & math(7,8,5) 
wscript.echo "3: " & math(15,false,5) 

function math(Addend1 , Addend2, Divisor) 
dim tmpTotal 

if Addend2 then 
    TmpTotal = Addend1 + Addend2 
else 
    tmpTotal = Addend1 
end if 


if Divisor then  'if argument Divisor is other than False then do it. 
    if Divisor > 0 then 'Hated Divide by Zero since VIC-20. 
     tmpTotal = tmpTotal/Divisor) 
    end if 
end if 

end function 
2

Siempre se puede hacer un class y utilizar Public Property Let para poblar su Sub/Function antes de llamar a:

Set oSubName = New cSubName 

    'fill your parameters, you can always add more later 
    oClass.OptionalParameter1 = true 
    oClass.OptionalParameter2 = false 

    'execute sub 
    oSubName.Execute 

    Set oSubName = Nothing 

Esto requiere algún conocimiento sobre cómo hacer clases, pero es probable que la próxima La mejor solución para usar arreglos.

Buena suerte.

Cuestiones relacionadas