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

 

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

Μπορεί ένα αρχείο να περιέχει εντολές VB και να εκτελούνται από τη VB ?

Îåêßíçóå áðü ôï ìÝëïò Perarg. Τελευταία δημοσίευση από το μέλος Perarg στις 08-02-2010, 18:03. Υπάρχουν 11 απαντήσεις.
Ταξινόμηση Δημοσιεύσεων: Προηγούμενο Επόμενο
  •  05-02-2010, 14:29 56965

    Μπορεί ένα αρχείο να περιέχει εντολές VB και να εκτελούνται από τη VB ?

    Καλησπέρα παιδιά. Η αλήθεια είναι ότι δε γνωρίζω πως ακριβώς να εκφράσω-αναζητήσω τη συγκεκριμένη απορία μου. Ακόμη ακόμη δεν ξέρω αν είναι εφικτό κάτι τέτοιο. Ποιο όμως ?

    Θα ήθελα να ετοιμάσω την εφαρμογή μου έτσι ώστε να μπορεί να λειτουργεί σαν template και να εκτελεί εντολές που να προέρχονται μέσα από κάποιο αρχείο. Να γίνω πιο συγκεκριμένος, σκεφτείτε την εφαρμογή να έχει ένα TextBox και να φορτώνει κείμενο διαφορετικό κάθε φορά από ένα αρχείο ή μια βάση δεδομένων με διάφορα κείμενα. Αν υποθέσουμε πώς αυτό δεν είναι δύσκολο, θέλω να προχωρήσω λίγο παρακάτω. Ας πούμε πως στο textbox υπάρχει μια ερώτηση, που ζητάει συγκεκριμένες ενέργειες από το χρήστη. Κάθε φορά με ένα randomized τρόπο, να φορτώνεται ένα "πακέτο" εντολών που περιέχει για κάθε μια ερώτηση, τους διάφορους ελέγχους για την ορθότητα της απάντησης.

    Με λίγα λόγια να δημιουργήσω ένα αρχείο (για παράδειγμα), που να περιέχει την ερώτηση αλλά κι εντολές της visual basic για την ορθότητα της κάθε απάντησης. Σκέφτομαι το συγκεκριμένο τρόπο υλοποίησης γιατί θα ήθελα να έχω εύκολο τρόπο updating της "βάσης" των ερωτήσεων.

    Υπάρχει τρόπος τέτοιου είδους υλοποίησης ή είμαι σε εντελώς λάθος κατεύθυνση;

    Ελπίζω να έγινα κατανοητός, αν όχι, εδώ είμαστε...
  •  05-02-2010, 16:04 56967 σε απάντηση της 56965

    Απ: Μπορεί ένα αρχείο να περιέχει εντολές VB και να εκτελούνται από τη VB ?

    Απ' ότι βλέπω περισσότερο περιγράφεις κάποια γενική υλοποίηση που έχεις στο μυαλό σου, παρά το πρόβλημα που έχεις. Είσαι κάπως στη μέση, η ερώτηση δεν είναι ούτε τεχνική, ούτε conceptual. Πιστεύω θα είναι καλύτερα αν περιγράψεις τι θες να φτιάξεις γιατί διαφορετικά, ότι και να προτείνουμε μπορεί να είναι κατάλληλο, μπορεί και όχι. Πες ένα παράδειγμα από μια τέτοια ερώτηση και το ανάλογο πακέτο εντολών. Πάντως, γενικά, υπάρχει η δυνατότα να εκτελέσεις ad-hoc source κώδικα κατά το runtime μιας εφαρμογής αλλά όχι έτσι γενικά κι αόριστα.

     


    Vir prudens non contra ventum mingit
  •  05-02-2010, 19:39 56969 σε απάντηση της 56967

    Απ: Μπορεί ένα αρχείο να περιέχει εντολές VB και να εκτελούνται από τη VB ?

    Σωστό. Στο μυαλό σας φέρτε μια εφαρμογή τύπου εξετάσεις πιστοποίησης πληροφορικής (π.χ. ECDL). Στο πλαίσιο της εφαρμογής εμφανίζεται η ερώτηση και ο χρήστης πρέπει να κάνει τις κατάλληλες ενέργειες. Να φέρω κι ένα παράδειγμα, Ερώτηση: "Ανοίξτε την εφαρμογή σημειωματάριο(notepad)". Ο χρήστης λοιπόν θα προσπαθήσει να ανοίξει το σημειωματάριο και θα πατήσει ένα κουμπί check_answer. Εκεί ελέγχεται η ορθότητα της απάντησης που έδωσε. Κι έτσι προχωράμε σε επόμενη ερώτηση κ.ο.κ.

    Έχω δημιουργήσει το απαραίτητο πλαίσιο της εφαρμογής, έτσι ώστε να είναι πάντα σε πρώτο πλάνο, να καταλαμβάνει χώρο ως AppBar εφαρμογή (σαν μια επιπλέον taskbar). Εδώ λοιπόν υπάρχει ένα textbox που θα περιλαμβάνει την εκάστοτε ερώτηση αλλά και το κουμπάκι check_answer. Η λογική που θέλω να εφαρμόσω είναι να υπάρχει μια βάση με ερωτήσεις (που φυσικά θα είναι κείμενο) και μια βάση με απαντήσεις (που ίσως θα είναι κομμάτια κώδικα VB μέσω του οποίου θα ελέγχονται οι απαντήσεις). Θα το ήθελα εξωτερικά κι όχι να περικλείονται οι ερωτήσεις/απαντήσεις μέσα στην εφαρμογή, για να μπορώ στο μέλλον να προσθέτω εξωτερικά επιπλέον ερωτήσεις, να αφαιρώ ή να τροποποιώ.

    Ίσως τώρα τα κατάφερα καλύτερα ??
  •  06-02-2010, 11:39 56972 σε απάντηση της 56969

    Απ: Μπορεί ένα αρχείο να περιέχει εντολές VB και να εκτελούνται από τη VB ?

    Αυτό που μου έρχεται κατά νου είναι να χρησιμοποιήσεις scripting.Ας χρησιμοποιήσουμε το παράδειγμα που έδειξες εσύ.Σε μια βάση θα μπορούσες να αποθηκεύεις τα ερωτήματα σε ένα πίνακα (π.χ Questions) με πεδία Text (το κείμενο που θα εμφανίζεις στο χρήστη σου,nvarchar) και Command (η εντολή που θα περνάς στον parser σου,varchar).

    Στην συγκεκριμένη περίπτωση η εγγραφή θα ήταν κάπως έτσι: "Ανοίξτε την εφαρμογή σημειωματάριο(notepad)" ,"OPENED NOTEPAD.EXE".

    Έπειτα αφού έχεις κάνει την απαραίτητη διασύνδεση με τη βάση σου και φορτώσεις τα παραπάνω πεδία σε αντίστοιχες μεταβλητές θα κάνεις parse το περιεχόμενο της Command.Θα ήταν κάπως έτσι:

    Private Sub Parse(ByVal Cmd As String) 
            Dim Commands As String() = Cmd.Split(" ") 
            
            If Commands(0) = "OPENED" Then 
                PollAnswer(Opened, Commands(1)) 
            End If 
        End Sub 
    Με άλλα λόγια σπας το string  σε εντολές και χρησιμοποιείς το πρώτο substring ως ένδειξη της συνάρτησης που θα χρησιμοποιήσεις (εδώ η Opened) και το επόμενο ως παράμετρο της Opened.
    Όσον αφορά την PollAnswer,θα αποτελεί μέρος ένος υποθετικού συστήματος polling ώστε το σύστημά σου να ελέγχει περιοδικά αν ο χρήστης σου επιτέλεσε την ζητούμενη λειτουργία 
    (π.χ με τη χρήση ενός timer).Φυσικά δεν είναι υποχρεωτικό να κάνεις κάτι τέτοιο,αν θα το επέλεγες θα έμοιαζε κάπως έτσι:
    Private Delegate Function ActionDelegate(ByVal parameter As String) As Boolean 
    Private Opened As ActionDelegate 
        
    Private Sub PollAnswer(ByVal action As ActionDelegate, ByVal parameter As String) 
     
    Και αντίστοιχα η Opened θα έκανε enumerate όλα τα processes και θα κοίταζε αν ανάμεσα σε αυτά βρίσκεται το NOTEPAD.EXE.
    Φυσικά απέχει πολύ από το να είναι μια ολοκληρωμένη λύση,π.χ θα πρέπει να βάλεις και status messages στη βάση σου,(π.χ αν αποτυγχάνει ο χρήστης να του δείχνεις το λάθος του),αλλά αυτά 

    υλοποιούνται εύκολα.Τέλος το σύστημα αυτό μπορεί εύκολα να περιέχει μόνο τον parser και το polling system στο εκτελέσιμό σου,ενώ όλες οι εντολές (π.χ Opened κτλ) να υλοποιούνται σε ξεχωριστά dll που θα φορτώνονται δυναμικά,ένα plugin system δηλαδή.Ελπίζω να σου έδωσα κάποιες ιδέες για ξεκίνημα.

  •  07-02-2010, 12:27 56983 σε απάντηση της 56965

    Απ: Μπορεί ένα αρχείο να περιέχει εντολές VB και να εκτελούνται από τη VB ?

    Perarg:
    Θα ήθελα να ετοιμάσω την εφαρμογή μου έτσι ώστε να μπορεί να λειτουργεί σαν template και να εκτελεί εντολές που να προέρχονται μέσα από κάποιο αρχείο.

    Generic απάντηση:

    • Μέσα από τα controls της VB6 μπορείς να χρησιμοποιήσεις "Microsoft Script Control v1.0". Αυτό το control σου επιτρέπει να τρέξεις VBScript ή Javascript κώδικα που θα εκτελούσες από το command prompt του υπολογιστή σου, αλλά σου επιτρέπει να λάβεις μία τιμή από την εκτέλεση του κώδικα - περίπου όπως αν έτρεχες τον εξωτερικό κώδικα σαν ένα function.

    Update:

    Διαβάζοντας το documentation του control, μπορείς να κάνεις περισσότερα με αυτό από ότι ανάφερα παραπάνω (copy & paste από το help):

    • The ScriptControl provides a simple interface for hosting scripting engines that support ActiveX scripting. The ScriptControl object supports the following:
      • Any scripting language that supports ActiveX scripting.
      • A macro Run dialog box that lists available macros.
      • The ability to compile scripts and display rich error information describing any errors that may occur.
      • The ability to trap and display run-time errors that occur during script execution.
      • The ability to expose object model functionality to scripts.
      • The ability to expose global functions to scripts.
      • An Immediate window.
      • The ability to limit a script's execution both in terms of its functionality and its time limitations.
      • The ability to use Microsoft script debugging tools to debug scripts written with a scripting-enabled version of Notepad.

     

    George J.


    George J. Capnias: Χειροπρακτικός Υπολογιστών, Ύψιστος Γκουράρχης της Κουμπουτερολογίας
    w: capnias.org, t: @gcapnias, l: gr.linkedin.com/in/gcapnias
    dotNETZone.gr News
  •  08-02-2010, 14:31 57004 σε απάντηση της 56983

    Απ: Μπορεί ένα αρχείο να περιέχει εντολές VB και να εκτελούνται από τη VB ?

    Στη VB 2008 όμως που χρησιμοποιώ δεν έχει κάτι τέτοιο. Σ' ευχαριστώ πολύ όμως 
  •  08-02-2010, 14:44 57006 σε απάντηση της 57004

    Απ: Μπορεί ένα αρχείο να περιέχει εντολές VB και να εκτελούνται από τη VB ?

    Perarg:
    Στη VB 2008 όμως που χρησιμοποιώ δεν έχει κάτι τέτοιο. Σ' ευχαριστώ πολύ όμως 

    ??? Τότε γιατί έκανες την ερώτηση στο VB6 forum ????????????????????


    Παναγιώτης Καναβός, Freelancer
    Twitter: http://www.twitter.com/pkanavos
  •  08-02-2010, 14:52 57008 σε απάντηση της 57006

    Απ: Μπορεί ένα αρχείο να περιέχει εντολές VB και να εκτελούνται από τη VB ?

    Σταυρώστε με! Λάθος... Correct me αρχηγέ!
  •  08-02-2010, 14:57 57009 σε απάντηση της 57008

    Απ: Μπορεί ένα αρχείο να περιέχει εντολές VB και να εκτελούνται από τη VB ?

    Perarg:
    Σταυρώστε με! Λάθος... Correct me αρχηγέ!

    Αυτό δεν αλλάζει κάτι - και στην VB.NET μπορείς να χρησιμοποιήσεις τα control της VB6...

     

    George J.


    George J. Capnias: Χειροπρακτικός Υπολογιστών, Ύψιστος Γκουράρχης της Κουμπουτερολογίας
    w: capnias.org, t: @gcapnias, l: gr.linkedin.com/in/gcapnias
    dotNETZone.gr News
  •  08-02-2010, 15:00 57010 σε απάντηση της 57009

    Απ: Μπορεί ένα αρχείο να περιέχει εντολές VB και να εκτελούνται από τη VB ?

    Ζητώ συγγνώμη για την αναστάτωση, ίσως αν μεταφερθεί στο κατάλληλο section να ήταν καλύτερα ;
  •  08-02-2010, 15:18 57011 σε απάντηση της 57009

    Απ: Μπορεί ένα αρχείο να περιέχει εντολές VB και να εκτελούνται από τη VB ?

    Αυτό που αλλάζει είναι ότι στο .NET μπορεί να χρησιμοποιήσει κανείς το VBCodeProvider για να κάνει compile ένα script και να δημιουργήσει έτσι ένα assembly και να το φορτώσει στην εφαρμογή του. Έτσι τουλάχιστον αποφεύγεις πιθανά προβλήματα ασφάλειας που δημιουργεί το Script Control.

    Όπως και να έχει, είτε με το Script control είτε με το VBCodeProvider θα πρέπει να σχεδιαστεί με προσοχή το API που θα είναι διαθέσιμο στο script.


    Παναγιώτης Καναβός, Freelancer
    Twitter: http://www.twitter.com/pkanavos
  •  08-02-2010, 18:03 57021 σε απάντηση της 57011

    Απ: Μπορεί ένα αρχείο να περιέχει εντολές VB και να εκτελούνται από τη VB ?

    Φυσικά χωρίς προσπάθεια δε γίνεται τίποτα ή να το πω πιο λαϊκά, με <censored> αυγά δε βάφονται... αλλά νομίζω ζόρισε λίγο το πράγμα για μένα. Ή θα πρέπει να σκεφτώ αν υπάρχει διαφορετικός - πιο κατανοητός τρόπος ή να μελετήσω πολύ προσεχτικά τους καινούργιους "δρόμους" που δεν είμαι εξοικειωμένος.

    Σας ευχαριστώ πολύ πάντως για όλες τις πληροφορίες
Προβολή Τροφοδοσίας RSS με μορφή XML
Με χρήση του Community Server (Commercial Edition), από την Telligent Systems