[Asp] confronto tra variabili che non va

di il
5 risposte

[Asp] confronto tra variabili che non va

In un ciclo Do While ho inserito una serie di elseif che confrontano due variabili, <b>filenum</b> che partendo da 0 si incrementa progressivamente e <b>filenumthis</b> che contiene un valore numerico fisso.
Dando per scontato che filnum assume valori inferiori uguale e superiori a filenumthis date un'occhiata a questo script

----------------------------------------------------------------
If filenum = (filenumthis - 1) then
pagprev = "[<a href='" & filename & filenum & ".asp'>Prev</a>] - "
paglinks = paglinks & "[<a href='" & filename & filenum & ".asp'>" & filenum & "</a>] - "
elseif filenum = (filenumthis + 1) then
pagnext = "[<a href='" & filename & filenum & ".asp'> Next </a>]"
paglinks = paglinks & "[<a href='" & filename & filenum & ".asp'>" & filenum & "</a>] - "
<b>elseif filenum = ((filenumthis + 1) - 1)</b> then
paglinks = paglinks & ">" & filenum & "< - "
else
paglinks = paglinks & "[<a href='" & filename & filenum & ".asp'>" & filenum & "</a>] - "
end if
----------------------------------------------------------------

Come potete vedere ho scritto in una condizione ((filenumthis + 1) - 1), non perchè mi diverto ad agiungere calcoli inutili ma perchè quando scrivo "elseif filenum = filenumthis" lo script non intercetta la condizione, come se togliendo +1 e -1 filenumthis non fosse più un numero confrontabile!

per curiosità ho messo prima di questo script:
----------------------------------------------------------------
if isnumeric(filenumthis) = true then
response.Write("filenumthis è un numero <br>")
else
response.Write("filenumthis non è un numero <br>")
end if
----------------------------------------------------------------
e naturalmente mi dice che è un numero



Mi sapete spiegare perchè se scrivo "filenum = filenumthis" non funziona e se invece cambio solo quel pezzo in "filenum = ((filenumthis + 1) - 1)" funziona perfettamente?

5 Risposte

  • Re: [Asp] confronto tra variabili che non va

    Ciao purtroppo non ho tempo di esaminare lo script,
    comunque credo di aver capito il problema.
    Le variabili usate in ASP(o meglio VBScript) sono di tipo variant
    quindi a volte senza farci neanché troppo caso ci si ritrova a fare confronti tra una variabile di tipo [int] e una creduta dello stesso tipo ma in realtà [string].
    Quindi per prova ti consiglio di eseguire i controlli utilizzando la funzione cint(var):

    Es:
    if cint(filenum) = cint(filenumthis) then

    Ciao
  • Re: [Asp] confronto tra variabili che non va

    Grazie!
    Era proprio quello il problema e l'ho risolto con cint()
    (anche se ancora non ho capito come mai non si potevano confrontare se entrambi sono dei numeri interi...)
  • Re: [Asp] confronto tra variabili che non va

    Mi associo a quanto dice il mitico Toki:
    le variabili in ASP sono di tipo Variant (tipo di variabile che occupa molta memoria, proprio perchè deve essere pronta ad accogliere qualsiasi tipo di dato).
    Ti consiglio quindi di fare sempre il così detto Casting (appunto C Int), passando da un tipo Variant ad un tipo Int, come suggerito da Toki.
    Bye bye


    fabio
  • Re: [Asp] confronto tra variabili che non va

    Grazie fabio_v
  • Re: [Asp] confronto tra variabili che non va

    Ma se la variabile numerica è stata creata all'interno della pagina non dovrebbe dare problemi nell'incremento e nel confronto!!

    Il problema dovrebbe risultare solo quando passi il valore con le querystring, ho notato che cè una barra avanti indietro, non è che il valore lo prelevi dalla querystring ?

    Se si allora devi utilizzare valore=Cint(request.querystring("valore")) cosi ritorna il numero intero di prima.



    Wolly
Devi accedere o registrarti per scrivere nel forum
5 risposte