2009-09-04 38 views
7

Soy nuevo en el ASP clásico, toda mi experiencia está en C# .net y ColdFusion y php.classic asp cint

De todos modos, este sitio que estoy trabajando en este código tiene por todo el lugar

If (CInt("0" & myVar) > 0) Then 
    myNewCar = CInt("0" & myVar) 
End If 

Lo que no entiendo es por qué el "0" se anexe a la var en el cint() de entrada ? ¿Me estoy perdiendo algo? ¿Es algún tipo de cosa de seguridad? ¿Es eficiente?

En una nota lateral, ¿se recomienda cualquier libro de asp clásico?

+0

aquí es un poco de diversión. Add sub can not ( –

+0

Add sub cint (Val) cint = clng (Val) end sub. Lo siento por la publicación anterior –

Respuesta

11

Es un viejo truco para manejar valores nulos. Llamar a CInt en un nulo daría lugar a un error. Sin embargo, concatenar una cadena con un resultado nulo en la cadena, por lo tanto, "0" & null devuelve "0". Esto evita que CInt se equivoque cuando el valor es nulo.

2

myVar puede ser nada, un objeto, cadena vacía o no numérico. Pre-pendiente "0" garantiza que recibirá un número entero válido de vuelta pase lo que pase.

+1

CInt (Empty) devuelve 0. Un intento de concat "0" con un objeto que no tiene un valor predeterminado la propiedad daría lugar a un error. – AnthonyWJones

0

Mi ASP clásico está un poco oxidado, pero creo que es algo seguro. Por ejemplo, si myVar no se hubiera definido e intentado hacer un CInt, eso causaría un error.

+1

Con la opción explícita, el código no se compilaría, sin Option Explict una variable indefinida se define dinámicamente y se le asigna un valor de vacío. Los valores vacíos pondrán a CInt en 0. – AnthonyWJones

0

Si obtiene un valor nulo, obtendrá un error. Este no es el caso para Cstr

Suponiendo que comprobar myVar> 0 es básicamente una comprobación nula.

myVar=cstr(myVar) 
If (not length(myVar) = 0) Then 
    myNewCar = cint(myVar) 
End If 

Así myNewCar sería o "" o el valor y nunca se obtendrá un error

Cuestiones relacionadas