Εμφάνιση 1-5 από 5
  1. #1
    Εγγραφή
    04-03-2011
    Μηνύματα
    579
    Downloads
    0
    Uploads
    0
    Παρακαλώ τους ειδικούς να δώσουν τα φώτα τους.
    Το παρακάτω απόσπασμα είναι ένα script που καλείται μέσα από έναν στοιχειώδη html editor φτιαγμένον με την Qt.
    Η δουλειά του είναι να φτιάχνει αντικείμενο obj το οποίο μετρά τις λέξεις και τις γραμμές του κειμένου.
    To αντικείμενο αυτό επιστρέφεται στο καλούν πρόγραμμα και αποτελεί το στοιχείο σε ένα menu.

    Oταν φορτώνεται τo script όμως, για την εντολή "return obj;" που πρέπει να επιστρέψει το αντικείμενο obj στο
    κύριο πρόγραμμα, δίνει μήνυμα λάθους "Invalid return statment".
    Τι δεν πηγαίνει καλά ;

    Κώδικας:
    var obj = new Object;
    
    obj.text = "&Statistics...";
    
    obj.run = function() {
        var text = this.textEdit.plainText;
        this.dialog.frame.charCountLineEdit.text = text.length;
        this.dialog.frame.wordCountLineEdit.text = this.wordCount(text);
        this.dialog.frame.lineCountLineEdit.text = this.lineCount(text);
        this.dialog.exec();
    };
    
    obj.wordCount = function(text) {
        var regExp = new RegExp("\\w+", "g");
        var count = 0;
        while (regExp.exec(text))
            ++count;
        return count;
    };
    
    obj.lineCount = function(text) {
        var count = 0;
        var pos = 0;
        while ((pos = text.indexOf("\n", pos)) != -1) {
            ++count;
            ++pos;
        }
        return count + 1;
    };
    
    return obj;
    Σφάλμα (προφανώς για τον ίδιο λόγο) δίνει και όταν είναι αποθηκευμένο ως *.js και κάνω διπλό κλικ επάνω του.
    Eυχαριστώ πολύ όποιον το κοιτάξει...
    Τελευταία επεξεργασία από το μέλος A.N.T. : 17-05-11 στις 18:56.

  2. #2
    Εγγραφή
    17-09-2007
    Ηλικία
    47
    Μηνύματα
    865
    Downloads
    1
    Uploads
    0
    Καλησπέρα,

    Το script δεν είναι function για να έχει return. Δεν ξέρω στο Qt, αλλά με Java+Rhino παίρνω τα αντικείμενα από το context του script. Δες το API του Qt για κάποια μέθοδο που να επιστρέφει κάτι σε Context, Map κλπ. Εκεί θα βρείς το αντικείμενό σου με το όνομά του, δηλ "obj". Επίσης ίσως να χρειαστεί να μην το δηλώσεις ως var.

  3. #3
    Εγγραφή
    04-03-2011
    Μηνύματα
    579
    Downloads
    0
    Uploads
    0
    Έχεις δίκιο.
    Κι εγώ μετά από πολλές δοκιμές στην τύχη βρήκα ότι αν αφαιρεθεί το return και μείνει σκέτο το obj; δουλεύει κανονικά.

    Αλλά το παράξενο είναι ότι το script αυτό αποτελεί τμήμα ενός έτοιμου demo κώδικα από βιβλίο για την Qt και
    θα έπρεπε να είναι σωστό - ο συγγραφέας που είναι guru σ' αυτά είναι απίθανο να μην το ήξερε...
    Συγκεκριμμένα είναι από το βιβλίο του Summerfield, κεφ. 22.
    Έχει άλλα 2 προγράμματα-demo που επίσης έχουν return και παρουσιάζουν το ίδιο πρόβλημα.

    Τέλος, επ' ευκαιρία ρωτώ : το πρότυπο ECMAScript και η javascript είναι το ίδιο πράγμα ;

    Ευχαριστώ που το είδες πάντως...
    Τελευταία επεξεργασία από το μέλος A.N.T. : 21-05-11 στις 17:00.

  4. #4
    Εγγραφή
    17-09-2007
    Ηλικία
    47
    Μηνύματα
    865
    Downloads
    1
    Uploads
    0
    Περίεργο το λάθος, αν και λάθη γίνονται. Μήπως αναφέρεται σε παλιότερη έκδοση;

    Παράθεση Αρχικό μήνυμα από A.N.T. Εμφάνιση μηνυμάτων
    Τέλος, επ' ευκαιρία ρωτώ : το πρότυπο ECMAScript και η javascript είναι το ίδιο πράγμα ;
    Επί της ουσίας ναι (αν σε ενδιαφέρει λίγη ιστορία δές και Wikipedia)

  5. #5
    Εγγραφή
    04-03-2011
    Μηνύματα
    579
    Downloads
    0
    Uploads
    0
    Τον κώδικα τον δίνουν ως tutorial δύο συγγραφείς που είναι guru στον τομέα αυτόν και προφανώς είναι καρατσεκαρισμένος.
    Το "λάθος" υπάρχει και στα 3 demo του κεφαλαίου (επίσης και στο κείμενο όπου δείχνεται κώδικας) γι' αυτό είναι
    περίεργο - δεν μπορεί να έκαναν τέτοια χοντράδα.
    Εξάλλου κανένα άλλο παράδειγμα του βιβλίου τους δεν εμφάνισε πρόβλημα.
    Εν πάση περιπτώση, το βιβλίο αναφέρεται στην Qt 4.3 ενώ εγώ δοκιμάζω την 4.6.
    Δεν νομίζω ότι αυτό έχει σχέση με το τι συμβαίνει στην javascript (δεν την ξέρω άλλωστε)
    ούτε ότι άλλαξε κάτι σε αυτό το θέμα (Qt script κλπ) μεταξύ των Qt 4.3 & 4.6 αλλά δεν παίρνω και όρκο.
    Αν κάποιος ξέρει κάτι ας μας πει.

    Στο δεύτερο ερώτημα, το "επί της ουσίας ναι" με καλύπτει....

Παρόμοια Θέματα

  1. Πρόβλημα στην C
    Από thama στο φόρουμ Προγραμματισμός και γλώσσες προγραμματισμού
    Μηνύματα: 10
    Τελευταίο Μήνυμα: 18-08-06, 17:58

Bookmarks

Bookmarks

Δικαιώματα - Επιλογές

  • Δεν μπορείτε να δημοσιεύσετε νέα θέματα
  • Δεν μπορείτε να δημοσιεύσετε νέα μηνύματα
  • Δεν μπορείτε να αναρτήσετε συνημμένα
  • Δεν μπορείτε να επεξεργαστείτε τα μηνύματα σας
  •  
  • Τα BB code είναι σε λειτουργία
  • Τα Smilies είναι σε λειτουργία
  • Το [IMG] είναι σε λειτουργία
  • Το [VIDEO] είναι σε λειτουργία
  • Το HTML είναι εκτός λειτουργίας