Καλώς ορίσατε στο dotNETZone.gr - Σύνδεση | Εγγραφή | Βοήθεια
σε

 

Αρχική σελίδα Ιστολόγια Συζητήσεις Εκθέσεις Φωτογραφιών Αρχειοθήκες

Πράξεις - Συνάρτηση σε Συμβολοσειρά

Îåêßíçóå áðü ôï ìÝëïò pantelee. Τελευταία δημοσίευση από το μέλος tasos στις 22-11-2006, 13:11. Υπάρχουν 4 απαντήσεις.
Ταξινόμηση Δημοσιεύσεων: Προηγούμενο Επόμενο
  •  10-11-2006, 23:54 20182

    Hmm [^o)] Πράξεις - Συνάρτηση σε Συμβολοσειρά

    Ξεκινάω από τη συνάρτηση
    Παράδειγμα: Έχω ορίσει τη μεταβλητή X ως Integer και του έχω δώσει την τιμή 4. Μπορώ να ζητήσω κάτι σαν Val("Χ^2 - 1") και να μου επιστρέψει το 4^2 - 1 = 15;

    Αυτό είναι το βασικό μου ζητούμενο. Μου έχει προκύψει αυτή η ανάγκη αρκετές φορές. Μία από αυτές: Να ζητάω από το χρήστη τον τύπο της συνάρτησης με InputBox, να μου επιστρέφει π.χ. y = x^2 - 1 και στη συνέχεια να εμφανίζεται η γραφική παράσταση της συνάρτησης αυτής.

    Και για τις πράξεις:
    Στην περίπτωση που το προηγούμενο ερώτημα έχει απάντηση, τότε το παρόν είναι ήδη λυμένο. Η μόνη διαφορά είναι στο προηγούμενο ερώτημα είχαμε και μεταβλητές
    Παράδειμα: Μπορώ να ζητήσω κάτι σαν Val("4^2 - 1") και να μου επιστρέφει 15;

    Ευχαριστώ
    Παντελής

    Edit: Είχα ξεχάσει τα εισαγωγικά μέσα στα Val
  •  15-11-2006, 22:07 20424 σε απάντηση της 20182

    Απ: Πράξεις - Συνάρτηση σε Συμβολοσειρά

    Η Val function είναι λίγο παρεξηγημένη στο τι μπορεί να κάνει. Αν θέλεις να κάνεις evaluation κάποιον τύπων, πιστεύω ότι υπάρχει καλύτερος τρόπος.

    Αυτό που θα πρότινα είναι να γράψεις μικρά προγραμματάκια σε VBScript και μετά να τρέχεις προγραμματιστικά για να πέρνεις το αποτέλεσμα. Με την χρήση του Microsoft Script Control μπορείς να κάνεις evaluation κάποιων scripts, στις 2 γλώσσες script που έρχονται με τα Windows - την Javascript και την VBScript.

    Αν πούμε ότι κάνουμε reference σε ένα VB6 project το Microsoft Script Control τότε μπορείς σε ένα ScriptControl object, είτε να κάνεις Eval() VBScript κώδικα, είτε ExecuteStatement(), είτε πρώτα να προσθέσεις δομημένο κώδικα (procedures & functions) VBScript στο control με την AddCode() και μετά να τον τρέξεις με Run().

    Οπότε κάτι σαν:

    Option Explicit
    Private o As MSScriptControl.ScriptControl

    Private Sub Command1_Click()
    Dim sCode As String

        sCode = "Sub Main()" & vbCrLf & _
            "x = 5" & vbCrLf & _
            "msgbox x^2-1" & vbCrLf & _
            "End Sub"

        Set o = New MSScriptControl.ScriptControl
        o.Language = "VBScript"
        Call o.AddCode(sCode)
        Call o.Run("Main")
       
    End Sub

    Θα σου δώσει σε message box dialog την απάντηση 24...

     

    George J.


    George J. Capnias: Χειροπρακτικός Υπολογιστών, Ύψιστος Γκουράρχης της Κουμπουτερολογίας
    w: capnias.org, t: @gcapnias, l: gr.linkedin.com/in/gcapnias
    dotNETZone.gr News
  •  22-11-2006, 01:46 20873 σε απάντηση της 20182

    Απ: Πράξεις - Συνάρτηση σε Συμβολοσειρά

    Πολύ καλό, είναι αυτό που έψαχνα. Κάτι τέτοιο δίνει απαντήσεις και σε κάποια άλλα ερωτήματα που είχα, όπως να ζητήσω εκτέλεση κώδικα σε μορφή συμβολοσειράς που θα έχει δημιουργηθεί σε χρόνο εκτέλεσης.

    Έκανα reference (αν κατάλαβα καλά) το Microsoft Script Control 1.0 και η δήλωση ήταν ...as MSScriptControlCtl.ScriptControl, όπως επίσης δεν μου έδινε τη δυνατότητα να ορίσω νέο ελεγκτήριο με Set o = New MSScriptControlCtl.ScriptControl. Αναγκάστηκα να διαγράψω τις σειρές

    Private o as MSScriptControlCtl.ScriptControl
    Set o = New MSScriptControlCtl.ScriptControl
    o.Language = "VBScript"

    και να βάλω μεσα στη φόρμα ένα τέτοιο ελεγκτήριο (ένα ScriptControl) με το όνομα o.
    Είναι η έκδοση της VB που έχω ή κάτι που κάνω στραβά;

    Πάντως η δουλειά έγινε, ευχαριστώ πολύ.
  •  22-11-2006, 13:00 20894 σε απάντηση της 20873

    Απ: Πράξεις - Συνάρτηση σε Συμβολοσειρά

    Υπάρχει κάτι αντίστοιχο για .NET;

    Έψαξα για MSScriptControl.ScriptControl στο msdn αλλά δεν βρήκα κάτι. Κάποιες κλάσεις που βρήκα, των οποίων το όνομα παραπέμπει σε κάτι σχετικό, δεν έχουν περιγραφή και υπάρχει το σχόλιο ότι δεν είναι για χρήση των κλάσεων αυτών μέσα σε κώδικα.
    Τάσος Καραγιάννης

    Baby debugging steps...
  •  22-11-2006, 13:11 20945 σε απάντηση της 20873

    Απ: Πράξεις - Συνάρτηση σε Συμβολοσειρά

    Βρήκα την συνάρτηση Eval(), η οποία κάνει αυτή τη δουλειά, οπότε οκ.
    Τάσος Καραγιάννης

    Baby debugging steps...
Προβολή Τροφοδοσίας RSS με μορφή XML
Με χρήση του Community Server (Commercial Edition), από την Telligent Systems