Πέμπτη, 29 Ιουνίου 2017

Αναθεώρηση 2 (Έκδοση 8.9)

Βελτίωση στο σύστημα φόρτωσης αρχείων κειμένου, στον διορθωτή και σε αντικείμενα Έγγραφο. Τώρα υπάρχει αυτόματη αναγνώριση για UTF-8 αρχεία όταν λείπουν τα bytes (BOM) που καθορίζουν ως σήμανση αυτά τα αρχεία.
δοκιμάστε το παρακάτω:

Έγγραφο α$={<?xml version="1.0"?>
<Ονόματα>
      <στοιχείο αα="69">
      <όνομακωδ>VB6</όνομακωδ>
      <ποσότητα>2</ποσότητα>
      </στοιχείο>
      <στοιχείο αα="70">
      <όνομακωδ>C++</όνομακωδ>
      <ποσότητα>3</ποσότητα>
      </στοιχείο>
      <στοιχείο αα="71">
      <όνομακωδ>Μ2000</όνομακωδ>
      <ποσότητα>10</ποσότητα>
      </στοιχείο>
</Ονόματα>
}
Σώσε.Έγγραφο α$,"άλφα.xml", -2
Καθαρό α$
Έγγραφο α$="Привет игровая площадка!"
Σώσε.Έγγραφο α$,"russian.txt", 1049
Έγγραφο β$
Φόρτωσε.Έγγραφο β$ ,"russian.txt", 1049
Τύπωσε β$


Καθαρό α$, β$
Έγγραφο α$="Привет игровая площадка! Ελληνικά δεν μπορούν να αποθηκευτούν"
Σώσε.Έγγραφο α$,"russian.txt", 1049
Έγγραφο β$
Φόρτωσε.Έγγραφο β$ ,"russian.txt", 1049
Τύπωσε β$
\\ Μπορούμε να επιλέξουμε χωρίς αριθμό (UTF-16)
\\ 0 UTF-16LE
\\ 1 UTF-16BE
\\ 2 UTF-8  ***  εξ ορισμού (δες παρακάτω)
\\ -2 UTF-8 χωρίς ΒΟΜ (χωρίς τα τρια πρώτα bytes που δηλώνουν ότι είναι UTF8)
\\ 3 ANSI   (εδώ αντί για 3 μπορούμε να δώσουμε 1049 πχ για ρώσικα, θα βγει ANSI ρώσικο)
\\ στην ανάγνωση Φόρτωσε.Έγγραφο υπάρχει αυτόματη ανανγνώριση
\\ αν θέλουμε όμως δίνουμε αριθμό για ANSI γλώσσα, πχ το 1049 για τα ρώσικα.


\\ Εσωτερικά το έγγραφο έχει κωδικοποίηση UTF-16LE


\\ στην εγγραφή Σώσε.Έγγραφο:
\\ αν δεν δώσουμε αριθμό ενώ είχαμε φορτώσει το έγγραφο τότε θα χρησιμοποιθεί το σύστημα που φορτώθηκε
\\ αν δεν έχει φορτωθεί, αλλά δημιουργήθηκε εδώ τότε εξ ορισμού θα είναι το 2 (UTF-8)
\\ αν δώσουμε όμως αριθμό το αλλάζουμε! Αν είναι Ansi τότε έχει ήδη πάρει στη φόρτωση τον αριθμό, οπότε για ..
\\ ... να αλλάξουμε σε άλλο ANSI θα πρέπει να δώσουμε αριθμό (πράγμα απίθανο να το θέλουμε όμως)
\\ έτσι το παρακάτω θα γράψει
Καθαρό α$, β$
Έγγραφο α$="Привет игровая площадка! Ελληνικά τώρα μπορούν να αποθηκευτούν"
Σώσε.Έγγραφο α$,"russian.txt", -2
Έγγραφο β$
Φόρτωσε.Έγγραφο β$ ,"russian.txt"
Τύπωσε β$
\\ η μεταβλητή μόνο για ανάγνωση κατ$ δίνει τον τρέχον κατάλογο
\\ Μπορούμε να επιστρέφουμε στο κατάλογο χρήστη ακόμα και αν δεν θυμόμαστε που είναι!
Κατάλογος χρήστη
' δοκιμάστε να σώσετε από το notepad. Θα εμφανιστεί η προεπιλογή UTF-8
Σύστημα "notepad", κατ$+"russian.txt"
Σώσε.Έγγραφο α$,"russian1.txt", 0
'Εδώ θα εμφανιστεί η προεπιλογή Unicode
Σύστημα "notepad", κατ$+"russian1.txt"
'Η μεταβλητή τοπικό μας δίνει τον αριθμό για τον σύστημα
α$={
      english always are visible in ansi mode
}
Σώσε.Έγγραφο α$,"russian2.txt", τοπικό
'Εδώ θα εμφανιστεί η προεπιλογή ansi
Σύστημα "notepad", κατ$+"russian2.txt"




Όλο ξεκίνησε από το παρακάτω πρόγραμμα όπου το αντικείμενο Msxml2.DOMDocument.6.0 κάνει οικονομία 3 bytes και δεν βάζει το BOM. Φαίνεται παρακάτω πως χρησιμοποιούμε ένα αντικείμενο των Windows μέσα από την Μ2000. Τα αντικείμενα αυτά μένουν μέσα στο τμήμα όσο το τμήμα εκτελείται, και μετά διαγράφονται. Οι εντολές Όρισε όνομα_αντικειμένου Τίποτα εδώ είναι πλεονασμός. Ορισμένα ονόματα αντικειμένων είναι στα αγγλικά, για να μπορεί κανείς να τα βρει αν μελετήσει το αντικείμενο για αρχεία XML 6 της Microsoft.



Έγγραφο α$={<?xml version="1.0"?>
<Ονόματα>
      <στοιχείο αα="69">
      <όνομακωδ>VB6</όνομακωδ>
      <ποσότητα>2</ποσότητα>
      </στοιχείο>
      <στοιχείο αα="70">
      <όνομακωδ>C++</όνομακωδ>
      <ποσότητα>3</ποσότητα>
      </στοιχείο>
      <στοιχείο αα="71">
      <όνομακωδ>Μ2000</όνομακωδ>
      <ποσότητα>10</ποσότητα>
      </στοιχείο>
</Ονόματα>
}
Σώσε.Έγγραφο α$,"άλφα.xml", -2
Έγγραφο α$
Φόρτωσε.Έγγραφο α$,"άλφα.xml"
Αναμονή 100
Όρισε ΑντικείμενοXml "Msxml2.DOMDocument.6.0"
Μέθοδος ΑντικείμενοXml, "Load", κατ$+"άλφα.xml" ως οκ
Αν οκ τότε {
      Όρισε ΣτοιχείοXML με ΑντικείμενοXml, "documentElement"
      Μέθοδος ΣτοιχείοXML, "selectSingleNode", "στοιχείο[@αα=70]" ως ΕπιλεγμένοΣτοιχείο
      Μέθοδος ΕπιλεγμένοΣτοιχείο, "selectSingleNode", "όνομακωδ" ως ΕπιλεγμένοΠεδίο
      \\ αυτή η Με είναι διαφορετική από την Με στην δομή Επίλεξε Με
      \\ εδώ έχουμε εντολή ενώ εκεί είναι στοιχείο της δομής
      Με ΕπιλεγμένοΠεδίο, "text" ως η_τιμή_μου$
      Τύπωσε η_τιμή_μου$
      \\ Μπορώ να αλλάξω τιμή
      η_τιμή_μου$="George"
      \\ Και μπορώ να σώσω -- αλλά δεν βάζει BOM
      Μέθοδος ΑντικείμενοXml, "Save", κατ$+"alfa.xml" ως οκ
      Μέθοδος ΣτοιχείοXML, "getElementsByTagName", "στοιχείο" ως objNodeList
      Με objNodeList , "length" ως objNodeList.length
      Τύπωσε objNodeList.length
      Για ι=0 έως objNodeList.length-1 {
            Μέθοδος objNodeList , "item", ι ως objNodeList.item
            Μέθοδος objNodeList.item, "getElementsByTagName", "όνομακωδ" ως objNodeList2
            Μέθοδος objNodeList2 , "item", 0 ως objNodeList.item2
            'δοκιμάστε και το παρακάτω (σκιάστε την επόμενη με σημείωση)
            'Με  objNodeList.item2 , "xml" ως α12$
            Με objNodeList.item2 , "text" ως α12$
            Πένα 12 {
                  Τύπωσε α12$
            }
            Όρισε objNodeList.item2 Τίποτα
            Όρισε objNodeList2 Τίποτα
            Όρισε objNodeList.item Τίποτα
      }
      Όρισε objNodeList Τίποτα
      Όρισε ΕπιλεγμένοΠεδίο Τίποτα
      Όρισε ΕπιλεγμένοΣτοιχείο Τίποτα
      Όρισε ΣτοιχείοXML Τίποτα
}
Όρισε ΑντικείμενοXml Τίποτα
Εγγραφο ααα$
Φόρτωσε.Έγγραφο ααα$, "alfa.xml"
Αναφορά ααα$


έξω από το τμήμα μετά την εκτέλεση μπορούμε να δώσουμε αυτήν την εντολή:
Σ "alfa.xml"

ενώ μέσα στο τμήμα θα δίναμε την παρακάτω εντολή για να ανοίξει ο διορθωτής στο αντικείμενο έγγραφο.

Διόρθωσε ααα$ 

Η διαφορά είναι ότι για να σώσουμε θέλει εντολή μετά την Διόρθωσε, ενώ η Σ (Συγγραφή ή Edit) ανοίγει το αρχείο μόνο στον διορθωτή και το αποθηκεύει στην έξοδο, χωρίς να το φυλάξει κάπου στην μνήμη. Αν έχουμε ένα  πρόγραμμα σε Μ2000 (έχουν κατάληξη gsb) τότε αν έχει το όνομα αλφα.gsb η Σ αλφα το φορτώνει ενώ η Σ "αλφα.gsb" το ανοίγει στον διορθωτή και από εκεί μπορούμε να αντιγράψουμε κομμάτια και να τα περάσουμε κάπου στο φορτωμένο πρόγραμμα.