2009-09-04 23 views
7

Klasik asp için yeniyim, tüm deneyimlerim C# .net ve ColdFusion ve php.classic asp cint

Neyse, üzerinde çalışıyorum bu site her yerde

"0" (CInt var eklenecek neden ne anlamıyorum olduğunu
If (CInt("0" & myVar) > 0) Then 
    myNewCar = CInt("0" & myVar) 
End If 

) girişi üzerinden bu kodu vardır ? Sadece bir şeyi özlüyor muyum? Bir çeşit güvenlik meselesi mi? Verimli mi?

Bir yan notta, herhangi bir klasik kitap önerildi?

+0

eğlenceli biraz olsun asla. Alt ekle ( –

+0

alt ipucu (Val) cint = clng (Val) alt alt ekle. –

cevap

11

Boş değerleri işlemek için eski bir kesmek. Bir boşta CInt çağırmak, bir hataya neden olur. Bununla birlikte, bir dizgenin null ile sonuçlandığı bir dizgede "0" & null ile null, "0" değerini döndürür. Bu, değer boş olduğunda CInt'in hata vermesini engeller.

2

myVar hiçbir şey, nesne, boş bir dize veya sayısal olmayan olabilir. Önceden beklemede olan "0", ne olursa olsun numaralı geçerli tam sayıyı geri alacağınızı garanti eder.

+1

CInt (Boş) 0'ın daha önceki postası hakkında üzgünüz. Varsayılan olmayan bir nesne ile "0" imzalama girişimi özellik bir hatayla sonuçlanır – AnthonyWJones

0

Klasik ASP'm biraz paslı, ancak bunun bir güvenlik olayı olduğuna inanıyorum. Örneğin, myVar tanımlanmamış ve bir CInt yapmaya çalıştıysa, bu bir hataya neden olur.

+1

Seçenek açıkken, kod, Seçenek Açıklaması olmadan tanımlanamaz, tanımsız bir değişken dinamik olarak tanımlanır ve boş bir değer verilir Boş değerler 0'a eşittir. – AnthonyWJones

0

Boş bir değer verirseniz, bir hata alırsınız. Bu, myVar> 0 kontrolünün temelde boş bir kontrol olduğunu varsaydığımızda.

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

Yani myNewCar "" veya değer olurdu ya ve bir hata burada