Το Στέκι των Πληροφορικών

Γενικό Λύκειο => Αλγοριθμική και Προγραμματισμός => Διερμηνευτής της ΓΛΩΣΣΑΣ => Μήνυμα ξεκίνησε από: bobpit στις 24 Φεβ 2009, 10:23:14 ΜΜ

Τίτλος: Εσφαλμένος τύπος variant
Αποστολή από: bobpit στις 24 Φεβ 2009, 10:23:14 ΜΜ
Το ακόλουθο πρόγραμμα δεν τρέχει σε όλα τα pc.  Γενικά τρέχει σε pc winXP με αρκετή RAM (>400 ΜΒ).  Σε pc όμως με windows 2000 και RAM μικρότερη από 300 ΜΒ, βγάζει το ακόλουθο λάθος:

"Εσφαλμένος τύπος variant"

>>>>>>>>>>>>
ΠΡΟΓΡΑΜΜΑ μμ
ΑΡΧΗ
  ΚΑΛΕΣΕ ΤΕΤΡ(5, 'Α')
  ΓΡΑΨΕ "  ---------"
  ΚΑΛΕΣΕ ΤΕΤΡ(10, '*')
ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ

ΣΥΝΑΡΤΗΣΗ ΣΤΡ(Ν, Χ): ΧΑΡΑΚΤΗΡΑΣ
ΜΕΤΑΒΛΗΤΕΣ
  ΑΚΕΡΑΙΕΣ: Ν, Α
  ΧΑΡΑΚΤΗΡΕΣ: Χ, Υ
ΑΡΧΗ
  Υ <- ""
  ΓΙΑ Α ΑΠΟ 1 ΜΕΧΡΙ Ν
    Υ <- Υ + Χ
  ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
  ΣΤΡ <- Υ
ΤΕΛΟΣ_ΣΥΝΑΡΤΗΣΗΣ

ΔΙΑΔΙΚΑΣΙΑ ΤΕΤΡ(Ν, Χ)
ΜΕΤΑΒΛΗΤΕΣ
  ΧΑΡΑΚΤΗΡΕΣ: Χ
  ΑΚΕΡΑΙΕΣ: Ν, Α
ΑΡΧΗ
  ΓΡΑΨΕ ΣΤΡ(Ν, Χ)
  ΓΙΑ Α ΑΠΟ 1 ΜΕΧΡΙ Ν - 2
    ΓΡΑΨΕ Χ, ΣΤΡ(Ν - 2, " "), Χ
  ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
  ΓΡΑΨΕ ΣΤΡ(Ν, Χ)
ΤΕΛΟΣ_ΔΙΑΔΙΚΑΣΙΑΣ
<<<<<<<<<<<<

Το ίδιο λάθος "Εσφαλμένος τύπος variant" μου βγάζει στα pc με win2000 όταν προσπαθώ να χρησιμοποιήσω ΣΤΑΘΕΡΕΣ του κυρίως προγράμματος, μέσα σε ΣΥΝΑΡΤΗΣΕΙΣ.  Αναγκάζομαι να τις δηλώσω σα μεταβλητές για να δουλέψει.

Αυτά είναι γνωστά προβλήματα?  Υπάρχουν κατώτατες απαιτήσεις RAM?
Τίτλος: Απ: Εσφαλμένος τύπος variant
Αποστολή από: alkisg στις 24 Φεβ 2009, 11:42:46 ΜΜ
Κατώτατο όριο μνήμης RAM: τρέχει άνετα σε Windows 95 με 8 ΜΒ RAM.
Σε Windows 2000 το λιγότερο που έτυχε να το δουλέψω ήταν με 64MB RAM, αλλά ουσιαστικά την περισσότερη RAM την χρησιμοποιούνε τα ίδια τα Windows. Σε καμία περίπτωση δεν υπάρχει πρόβλημα μνήμης λοιπόν.

Για το σφάλμα: τα Windows έχουν αρκετά bugs σε διάφορες εκδόσεις του .dll που υποστηρίζει τους variants. Έχω "παρακάμψει" δύο τέτοια bugs με variants (επαναλαμβάνω των Windows - ούτε ο Διερμηνευτής φταίει, ούτε το Delphi) μέχρι στιγμής, λογικά πέτυχες τρίτο που δεν το έχω πετύχει εγώ ακόμα.

Δοκίμασε να κάνεις πλήρη ενημέρωση των Windows, κι αν δεν τρέξει, θα ήθελα να μου στείλεις (Alkis.Georgopoulos στο gmail.com) τις εκδόσεις των .dll που έχεις για να δοκιμάσω κι εγώ με τα ίδια. Ένας εύκολος τρόπος είναι με το πρόγραμμα "Έναρξη » Εκτέλεση » msinfo32" και "Αρχείο » Αποθήκευση" των πληροφοριών που εμφανίζονται (ελπίζω να τα θυμάμαι σωστά, είμαι σε Linux αυτή τη στιγμή).

Επίσης για να τρέξει το πρόγραμμα θα πρέπει να απενεργοποιήσεις την επιλογή "[ ] Να μην επιτρέπεται συνένωση αλφαριθμητικών" από το μενού Εργαλεία » Επιλογές του Διερμηνευτή, κάτι που δεν προτείνεται όσον αφορά στις πανελλαδικές: https://alkisg.mysch.gr/steki/index.php?topic=918.0
Τίτλος: Απ: Εσφαλμένος τύπος variant
Αποστολή από: bobpit στις 25 Φεβ 2009, 12:01:10 ΠΜ
Ξέχασα να πω την άλλη παρατήρηση.  Μου βγάζει το ίδιο λάθος όταν προσπαθώ να καλέσω ΔΙΑΔΙΚΑΣΙΑ η οποία δέχεται 2 παραμέτρους διαφορετικού τύπου.  Ένα ακέραιο και ένα χαρακτήρα.

Θα προσπαθήσω μεθάυριο να στείλω τα στοιχεία που ζήτησες.  Και μετά θα δοκιμάσω να κάνω ενημέρωση των windows.
Τίτλος: Απ: Εσφαλμένος τύπος variant
Αποστολή από: bobpit στις 24 Μαρ 2009, 08:54:08 ΠΜ
Έχω windows2000 pro, service pack 4.  Έστειλα τις πληροφορίες στο e-mail.
Τίτλος: Απ: Εσφαλμένος τύπος variant
Αποστολή από: alkisg στις 09 Απρ 2009, 09:51:56 ΜΜ
Διορθώθηκε το πρόβλημα με τους variants - και ελπίζω σε αρκετά "κεντρικό" σημείο ώστε να μην το ξαναδούμε σε καμία έκδοση των Windows. Συγκεκριμένα, σε εντολές του τύπου variant1 := variant2, ορισμένες προβληματικές εκδόσεις του σχετικού .dll των Windows εσφαλμένα προσπαθούσαν να διατηρήσουν τον τύπο δεδομένων του variant1 αντί να αναθέσουν εξ' αρχής τη νέα τιμή variant2.

Πολλές ευχαριστίες στον bobpit που μου έδωσε δυνατότητα remote access ώστε να κάνω debugging σε PC που παρουσίαζε το πρόβλημα - ήταν αρκετά σπάνιο, δεν είχα καταφέρει να το αναπαραγάγω πουθενά.

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