Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 11
  1. #1

    la funzione EVAL di ASP,......

    Ovvero, prima
    <%
    pippo="3" & "*" & "4"
    risultato=eval(pippo)
    %>

    <html>
    <%=risultato%>
    </html>


    vedevo scritto 12, come cavolo faccio in ASPX ????

    GRAZIE.

  2. #2
    Utente di HTML.it
    Registrato dal
    Sep 2002
    Messaggi
    4,127
    Doulbe.Parse(stringa)
    Integer.Parse(striga)
    Math.Round(stringa)

    uno di questo dovrebbe andare bene

  3. #3
    Utente di HTML.it L'avatar di pietro09
    Registrato dal
    Jan 2002
    Messaggi
    10,116
    Se non erro, non esiste la funzione Eval in asp.Net. Intendo, una funzione tipo Eval("2 + (3 * 4)" ) che restituisca il calcolo (14).

    Ma detto ciò, non è detto che non si possa fare. In rete ci sono molti esempi. Vado a memoria:
    1) un esempio faceva riferimento ad una classe creata in jscript (supportato dal framework)

    2) un altro esempio utilizzava le espressioni regolari (una cosa veramente interessante)

    3) un altro esempio è quello di fare di necessità virtù e fare come in visualbasic6, ossia, utilizzare la capacità di ADO di fare queste cose.

    4) un'altra cosa che ho sentito ma che non ho visto lo sviluppo è il sistema di fare una classe al volo con la reflection... :master:

    io ho sperimentato il caso 2, ma sono affezionato al metodo 3

    di più non so

    ciao
    Pietro

  4. #4

    provati

    Per SMS : non funzionano, mi dice che la stringa non è nel formato corretto.


    Per PIETRO09 : potresti farmi un esempio con del codice, perfavore ?

    Grazie a tutti, comunque.

  5. #5
    Utente di HTML.it L'avatar di pietro09
    Registrato dal
    Jan 2002
    Messaggi
    10,116
    Di codice adesso non ne ho.
    Ma ti invito a fare questo piccolo esperimento.
    Prendi un tool di database, per esempio Acces. Crea una qualunque tabella con un campo qualunque, ed un solo record; e prova ad eseguire la seguente query:
    SELECT (12+2*(23-4))/(1*(23+5-3))+SQR(12)-SIN(12) FROM DUMMY,
    e guarda il risultato.

    Capito il trucco?
    Adesso non ti sarà difficile scrivere una classe che implementi un parser, che potrai utilizzare in seguito, comodamente, a tuo piacimento.
    Ciao
    Pietro

  6. #6
    Grazie, ma non ho capito. Ti invio il codice della pagina (il primo programma che sto facendo per cercare di capire il VB NET : è una semplicissima calcolatrice.).

    ----------------- inizio codice -----------------------------

    <%@ Page Language="VB" debug="true" %>
    <script runat="server">
    dim a,b,c,d as double
    dim pippo as string
    sub page_load() 'lo fa ogni volta che carica la pagina
    ' lo lascio vuoto
    end sub

    sub esegui (obj as object,e as eventargs)
    if obj.text="C" then
    cancella
    exit sub
    end if
    if not isnumeric(primo.text) or not isnumeric(secondo.text) then
    risultato.text="Valori immissione errati !!"
    else
    a=cint(primo.text):b=cint(secondo.text)
    'qui sotto prima avrei scritto :
    risultato.text=eval(a & obj.text & b)
    'ma non funziona, cosa devo scrivere la posto della riga sopra ?
    end if

    end sub

    sub cancella
    primo.text="":secondo.text="":risultato.text=""
    end sub
    </script>
    </html>
    <body>
    PROVA NUOVA PAGINA ASPX



    <form runat=server>
    Valore1 :
    <asp:textbox size=6 id=primo runat=server/>
    &nbsp&nbsp
    Valore2 :
    <asp:textbox size=6 id=secondo runat=server/>
    &nbsp&nbsp&nbsp&nbsp&nbsp
    <asp:button id="per" text="*" onclick=esegui runat=server/>
    &nbsp&nbsp&nbsp&nbsp&nbsp
    <asp:button id="piu" text="+" onclick=esegui runat=server/>
    &nbsp&nbsp&nbsp&nbsp&nbsp
    <asp:button id="meno" text="-" onclick=esegui runat=server/>
    &nbsp&nbsp&nbsp&nbsp&nbsp
    <asp:button id="fratto" text="/" onclick=esegui runat=server/>
    &nbsp&nbsp&nbsp&nbsp&nbsp
    <asp:button id="canc" text="C" onclick=esegui runat=server/>



    Risultato : <asp:label id=risultato font-size="30pt" runat=server/>


    </form>
    </body>
    </HTML>
    -------------------- fine codice ------------------------------

  7. #7
    Utente di HTML.it L'avatar di pietro09
    Registrato dal
    Jan 2002
    Messaggi
    10,116
    Come sempre, sms ha intuito giusto. Allora, basta che segua il suo consiglio.

    a=cint(primo.text):b=cint(secondo.text)
    'qui sotto prima avrei scritto :
    risultato.text=eval(a & obj.text & b)

    risultato.text = (a + b).tostring()

    SE USAVI EVAL IN ASP, sbagliavi in asp
    Pietro

  8. #8

    no, eval mi serviva

    In quanto, in base al bottone schiacciato, in obj.text posso avere
    +,-,*,/

    E, volendo fare tutto in una chiamata unica, prendendo come input 8 e 4

    posso avere

    8 + 4
    8 - 4
    8 * 4
    8 / 4 dove l' operatore è appunto obj.text

    in asp, facendo eval(a + "x" + b), dove x è variabile, ottenevo il risultato voluto.

  9. #9
    Utente di HTML.it L'avatar di pietro09
    Registrato dal
    Jan 2002
    Messaggi
    10,116
    Senti, non te la prendere, ma ognuno ha il proprio punto di vista.
    Per quanto mi riguarda non ho mai visto utilizzare Eval per compiti così elementari (un classico select case è quello che si vede in giro)

    In javascript lo uso, ma solo con parsimonia, e solo quando serve.
    In ASP non l'ho mai usato, e già che qualcosa ho fatto anch'io.
    In VisualBasic 6, non esiste questa funzione.
    In C++ credo che non esista
    In vb.net credo che non esista.
    In javascript ho sentito che è deprecato

    insomma, ci deve pur essere una ragione, se tanti linguaggi seri non usano eval.

    Di più non so. Ciao
    Pietro

  10. #10
    Utente di HTML.it L'avatar di pietro09
    Registrato dal
    Jan 2002
    Messaggi
    10,116
    codice:
        Private Sub esegui(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles per.Click, piu.Click, canc.Click, fratto.Click, meno.Click
            Dim cmd As Button = DirectCast(sender, Button)
            If cmd.Text.ToLower = "c" Then
                Me.primo.Text = ""
                Me.secondo.Text = ""
                Me.risultato.Text = ""
            Else
                Dim a%, b%
    
                If Not IsNumeric(Me.primo.Text) OrElse Not IsNumeric(Me.secondo.Text) Then
                    Me.risultato.Text = "valori non validi"
                    Return
                End If
                Dim s$ = (Me.primo.Text & cmd.Text & Me.secondo.Text)
                Dim tmp# = Eval(s)
                Me.risultato.Text = s & " = " & tmp.ToString
    
    
            End If
    
        End Sub
    
        Private Function Eval#(ByVal s$)
            Return CDbl(Libreria.RisultatoAggregazioneSQL(StringaConnessione, String.Format("SELECT {0} AS V FROM EVAL", s)))
        End Function
    
        Private ReadOnly Property StringaConnessione$()
            Get
                Return String.Format("Provider=Microsoft.Jet.OLEDB.4.0;Password="""";User ID=Admin;Data Source={0};Mode=Share Deny None;Extended Properties="""";Jet OLEDB:System database="""";Jet OLEDB:Registry Path="""";Jet OLEDB:Database Password="""";Jet OLEDB:Engine Type=5;Jet OLEDB:Database Locking Mode=1;Jet OLEDB:Global Partial Bulk Ops=2;Jet OLEDB:Global Bulk Transactions=1;Jet OLEDB:New Database Password="""";Jet OLEDB:Create System Database=False;Jet OLEDB:Encrypt Database=False;Jet OLEDB:Don't Copy Locale on Compact=False;Jet OLEDB:Compact Without Replica Repair=False;Jet OLEDB:SFP=False", "C:\DATI\test\test.mdb")
            End Get
        End Property
    Pietro

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 © 2026 vBulletin Solutions, Inc. All rights reserved.