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

Ξεκίνησε από bobpit, 24 Φεβ 2009, 10:23:14 ΜΜ

« προηγούμενο - επόμενο »

bobpit

Το ακόλουθο πρόγραμμα δεν τρέχει σε όλα τα pc.  Γενικά τρέχει σε pc winXP με αρκετή RAM (>400 ΜΒ).  Σε pc όμως με windows 2000 και RAM μικρότερη από 300 ΜΒ, βγάζει το ακόλουθο λάθος:

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

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

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

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

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

Αυτά είναι γνωστά προβλήματα?  Υπάρχουν κατώτατες απαιτήσεις RAM?

alkisg

Κατώτατο όριο μνήμης 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

bobpit

Ξέχασα να πω την άλλη παρατήρηση.  Μου βγάζει το ίδιο λάθος όταν προσπαθώ να καλέσω ΔΙΑΔΙΚΑΣΙΑ η οποία δέχεται 2 παραμέτρους διαφορετικού τύπου.  Ένα ακέραιο και ένα χαρακτήρα.

Θα προσπαθήσω μεθάυριο να στείλω τα στοιχεία που ζήτησες.  Και μετά θα δοκιμάσω να κάνω ενημέρωση των windows.

bobpit

Έχω windows2000 pro, service pack 4.  Έστειλα τις πληροφορίες στο e-mail.

alkisg

Διορθώθηκε το πρόβλημα με τους variants - και ελπίζω σε αρκετά "κεντρικό" σημείο ώστε να μην το ξαναδούμε σε καμία έκδοση των Windows. Συγκεκριμένα, σε εντολές του τύπου variant1 := variant2, ορισμένες προβληματικές εκδόσεις του σχετικού .dll των Windows εσφαλμένα προσπαθούσαν να διατηρήσουν τον τύπο δεδομένων του variant1 αντί να αναθέσουν εξ' αρχής τη νέα τιμή variant2.

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

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