Visualizzazione dei risultati da 1 a 5 su 5
  1. #1

    Errore: Funzioni, Sub e parentesi

    Ciao a tutti,
    Sto sviluppando una pagina in cui attraverso una funzione mostro certi contenuti.
    Dentro questa prima funzione ce ne è un'altra (che è quindi annidata):

    '''Rende innocui i tag html e converte gli a capo in invio (notate che ho aggiunto degli spazi nella codifica del carattere, altrimenti non veniva correttamente visualizzato):
    Function NoHtml(campo)
    Replace(campo, "<", "& #60;") '<-Riga 423
    Replace(campo, ">", "& #62;")
    Replace(campo, VbCrlf, "
    ")
    End Function
    Provando a vedere la pagina ricevo questo errore:

    Cannot use parentheses when calling a Sub
    /!mom/profilo.asp, line 423
    Replace(campo, "<", "& #60;")
    -----------------------------^
    Mi sembra tutto regolare... dunque dove sbaglio?

    Grazie del supporto,

    Riccardo

  2. #2
    codice:
    Function NoHtml(campo)
    dim no_html
    no_html=Replace(campo, "<", "& #60;") 
    no_html=Replace(no_html, ">", "& #62;")
    no_html=Replace(no_html, VbCrlf, "
    ")
    NoHtml=no_html
    End Function
    replace è una funzione (quindi restituisce un valore) non una sub (che modifica il valore passato e/o fa operazioni grazie ad esso)


  3. #3
    ah, dimenticavo


    codice:
    
    testo="Prova"
    
    response.write testo & "
    "
    
    response.write server.htmlEncode(testo)
    nota la differenza

  4. #4
    Si effetivamente sono il solito distratto..
    e ggrazie alla tua dritta, ho trasformato in

    codice:
    Function NoHtml(campo)
     NoHtml=server.htmlEncode(campo)
     NoHtml=Replace(NoHtml, VbCrlf, "
    ")
     Response.Write(NoHtml)
    End Function
    Più avanti però ho riscontrato un altro problema del tutto analago a quello appena risolto.
    Volevo creare una funzione che utilizza due valori passati ma forse sbaglio come richiamarli, infatti se ne specifico uno solo -adattando la funzione perchè lavori solo su un valore- tutto va bene, ma se ne metto due è un errore:
    Cannot use parentheses when calling a Sub
    FuncInteresse("interessi","3")
    ------------------------------^
    In particolare l'errore avviene quando richiamo la funzione richiamo la funzione:
    <% FuncInteresse("interessi","3") %>

    Da notare che l'errore me lo da lo stesso anche se faccio
    <% FuncInteresse("interessi",3) %>

    E più sotto la funzione..
    '''Mostra elenco interessi con relativi n° utenti con stesso interesse
    function FuncInteresse(campo,valore) %>
    <font face="<%= strDefaultFontFace %>" size="<%= strDefaultFontSize %>"><%
    sql="SELECT M_HOBBIES,interessi,film,libri FROM FORUM_MEMBERS WHERE MEMBER_ID ='"& id &"'"
    Rs.Open sql, conn
    If not rs.eof Then
    M_HOBBIES = rs.fields("M_HOBBIES")
    interessi = rs.fields("interessi")
    film = rs.fields("film")
    libri = rs.fields("libri")
    End If
    Rs.close
    if trim(campo) <> "" then
    If campo="interessi" Then
    interesse_=Split((interessi),",")
    ElseIf campo="M_HOBBIES" Then
    interesse_=Split((M_HOBBIES),",")
    ElseIf campo="film" Then
    interesse_=Split((film),",")
    ElseIf campo="libri" Then
    interesse_=Split((libri),",")
    End If
    If Ubound(interesse_)> (Cint(valore)-1) Then 'Mostro i primi 3 valori..
    j= (Cint(valore)-1)
    If Cint(valore)=0 Then'se indico 0 come valore, vuol dire mostrare tutti gli elementi
    j= Ubound(interesse_)
    End If
    Else
    j = Ubound(interesse_)
    End If
    For i=0 to j '[0 1 2 ]
    If Len(Trim(interesse_(i)))>1 Then
    Response.Write("<a href=""/community/interesse.asp?cat="& campo &"&q="& Trim(interesse_(i)) &""">")
    Response.Write(Trim(interesse_(i))&"</a> (")
    sql_interesse="SELECT COUNT(*) FROM " & strTablePrefix & "MEMBERS WHERE "& campo &" LIKE '%"&Trim(Replace(Replace(interesse_(i),"'","_"),"" "","_"))&"%'"
    rs.open sql_interesse,conn
    tot=Rs.Fields.Item(0).Value
    rs.close
    Response.Write(tot&")
    ")
    End If
    Next
    If CInt(valore)<>0 Then'Se mostro tutti gli elementi non specifico il >> di proseguo
    %> &page=hobbies">&raquo; <%
    End If
    Else
    Response.Write(" -
    ")
    End If
    %>
    </font><%
    End Function

  5. #5
    non fare come in javascript...una function restituisce un valore, una sub no..quindi se devi solo stampare a video invece del blocco function...end function devi usare sub...end sub

    chiamata di una function:

    codice:
    risultatoFunction=nomeFunction(parametri)
    chiamata di una sub:
    codice:
    nomeSub parametro1,paramaetro2...,parametroN
    
    oppure:
    
    call nomeSub(parametro1,paramaetro2...,parametroN)

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.