Δευτέρα 14 Δεκεμβρίου 2015

Προβολή ιστολόγιου μέσα από την Μ2000


Ανέβηκε η αναθεώρηση 119, το πρόγραμμα παρακάτω τρέχει και με τις παλαιότερες εκδόσεις. Η νέα αναθεώρηση δίνει μια δυνατότητα σε περίπτωση που ανοίξουμε το αναλόγιο σε πλήρη οθόνη να το κλείσουμε με επιλογή εξόδου από τη γραμμή εργασιών (το πρώτο κλείσιμο κλείνει το αναλόγιο αν είναι ανοικτό). Επιπλέον ακούει και στο Esc. Υπάρχει ένα θέμα με την μεταφορά της εστίασης. Αν αργήσει η σελίδα δεν θα πάρει την εστίαση σωστά. Με Tab  πάμε στη σελίδα (δίνουμε εστίαση). Άλλος τρόπος είναι με ένα κλικ στη οθόνη πίσω και ένα στη σελίδα. Όταν έχουμε πλήρη οθόνη...τότε για να επιστρέψουμε αν δεν έχουμε κατάλληλα προετοιμάσει την έξοδο, τότε μόνο το κλείσιμο μέσω της γραμμής εργασιών πιάνει! Αν έχουμε όμως πίσω μια επανάληψη μπορούμε να "αρπάξουμε" το Esc. Αυτά συμβαίνουν γιατί μπορούμε να ανοίξουμε το αναλόγιο και στην γραμμή εντολών, χωρίς να τρέχει κάποιο τμήμα.

Λίγα λόγια για το πρόγραμμα: 
Έχει επιλεγεί η μέθοδος των νημάτων ώστε στη μετακίνηση του παραθύρου να συνεχίζουν τα άλλα νήματα να δουλεύουν. Μπορεί κανείς να γράψει το πρόγραμμα χωρίς νήματα, με μια ΚΑΘΕ για κεντρικό βρόχο. Ο στόχος που ενεργοποιεί την μετακίνηση στη περίπτωση χωρίς νήματα καλεί ένα τμήμα (τα τμήματα αυτά πρέπει να είναι γενικά) και σε αυτό γίνεται η μετακίνηση, άρα η κάθε...περιμένει να τελειώσει αυτή και μετά να συνεχίσει (Κάθε->Σάρωση->Μετακίνηση->Επιστροφή). Τώρα έχουμε νήματα. Ο στόχος αλλάζει μια τιμή, και ένα νήμα διαβάζει την αλλαγή και ξεκινάει το νήμα που μετακινεί την οθόνη. Το νήμα αυτό δεν έχει εσωτερική επανάληψη, βρίσκεται ήδη σε καθεστώς επανάληψης. Οπότε γίνεται μια μετακίνηση και συνεχίζουν τα νήματα,
Όταν έρθει η ώρα και ο έλεγχος στο νήμα βρει ότι δεν πατάμε το πλήκτρο του ποντικιού τότε δίνει εντολή να βγει εκτός λειτουργίας (όχι όμως να διαγραφεί με την ΣΒΗΣΕ).

Τα νήματα βλέπουν τις μεταβλητές του τμήματος και εδώ μια μεταβλητή ΑΑ γίνεται γενική για ένα μόνο λόγο...επειδή πρέπει να τις αλλάξει κατάσταση ο Στόχος! Ο στόχος δηλαδή δρα μόνο σε γενικές μεταβλητές και καλεί μόνο γενικά τμήματα. Στην ουσία ότι του δώσουμε θα πάει στη γραμμή εντολών. Έτσι δεν μπορεί να πάρει εντολές που δεν γνωρίζει (και υπάρχουν μόνο στο διερμηνευτή τμημάτων), και κύρια δεν παίρνει εντολές που χρειάζονται δυο ή περισσότερες γραμμές.

Για την Html
Το αρχείο που φτιάχνουμε γράφεται στο δίσκο στο προσωρινό$ (φάκελος για προσωρινά αρχεία)
Όταν η εφαρμογή κλείσει θα το διαγράψει ο διερμηνευτής. Όπου ορίζουμε ##username$## θα αντικατασταθεί από την τιμή της μεταβλητής. Μπορούμε να γράψουμε script σε javascript και εδώ αυτό έχω κάνει, γιατί θέλω να βγάλω μια φόρμα και σε αυτήν να γράψω όνομα χρήστη και κωδικό.

Όταν πατήσουμε το πλήκτρο που στέλνει την απάντηση της φόρμας. Η Μ2000 δημιουργεί αν δεν υπάρχουν από μια μεταβλητή για κάθε επιστροφή.

Η εντολή λίστα μας δείχνει τις μεταβλητές που εκείνη τη στιγμή υπάρχουν (ανεξάρτητα αν το τμήμα τις βλέπει ή όχι). Αυτές που βλέπει το τμήμα ξεκινούν με το όνομά του ή δεν έχουν καθόλου πρόθεμα γιατί είναι γενικές (αυτή είναι μια απλή εξήγηση και όχι ή όλη αλήθεια, διότι γίνεται να έχουν πρόθεμα μεταβλητές και να είναι γενικές αν τις καλούμε με το πρόθεμα και τις είχαμε ορίσει γενικές με αυτό)


Συμπέρασμα:

Με τη Μ2000 μπορούμε να φτιάχνουμε φόρμες σε Html και να τις διαβάζουμε (το όλο σκηνικό με τα νήματα και την μετακίνηση του παραθύρου, είναι πλεονασμός..εδώ)



Ας το τρέξουμε λοιπόν!
Το πρόγραμμα το γράφουμε σε ένα τμήμα έστω ΙΣΤΟΣ
Αν το σώσουμε με ΣΩΣΕ ΙΣΤΟΣ, ΙΣΤΟΣ 
Θα το σώσει με όνομα ιστοσ.gsb και όταν το καλούμε θα τρέχει αμέσως καλώντας το τμήμα ΙΣΤΟΣ. Αν θέλουμε με την Σ "ΙΣΤΟΣ.gsb" διορθώνουμε απ' ευθείας στο αρχείο, και στο τέλος προσθέτουμε ότι θέλουμε από εντολές!
(προσοχή αν  το όνομα αρχείου το γράψουμε με κεφαλαία θα γραφτεί ιστοσ σε 7 αν το καλέσουμε ως ιστος δεν θα το βεί, αν το καλέσουμε ως ΙΣΤΟΣ θα το βρει. Σε xp δεν υπάρχει ζήτημα, αυτή είναι μια ασυμβατότητα μεταξύ xp και 7)

Ακόμα καλύτερο αυτό
ΣΩΣΕ ΙΣΤΟΣ, {ΙΣΤΟΣ : ΤΕΛΟΣ}

Εδώ λοιπόν ανοίγουμε το m2000.exe γράφουμε Σ ΙΣΤΟΣ και κάνουμε επικόλληση το πρόγραμμα και πατάμε Esc.
Και είναι έτοιμο με ΙΣΤΟΣ να τρέξει!

Η εξαγωγή html με χρώμα είχε πρόβλημα με την εσωτερική html και στην αντιγραφή δεν έβγαινε σωστά έτσι αντικαταστάθηκε χωρίς χρώμα.. Το βρήκα το πρόβλημα η Μ2000 μετατρέπει το </ σε < και u+2044 δηλαδή ""
Για να κάνουμε εξαγωγή μόνο κείμενο, όχι html πατάσμε το F11 για να αφαιρέσει το χρώμα. Τότε δεν δίνει εξαγωγή στο πρόχειρο με Html Format.
Θα το δω το θέμα σε επόμενη αναθεώρηση!
Οκ έχει φτιαχτεί στην 120 αναθεώρηση!

ΣΧΕΔΙΟ.ΝΗΜΑΤΩΝ ΔΙΑΔΟΧΙΚΟ
Τμήμα Α {
      ΓΕΝΙΚΗ ΑΑ=0
      ΚΑΘΑΡΟ ΜΧ, ΜΥ
      username$ = "Γιώργος"
      
      κειμενο αλφα.html {<!doctype html public "-//w3Γ//dtd html 3.2//en">
      <html><head><title>(Type a title for your page here)</title>
      <meta name="GENERATOR" content="M2000">
      <meta name="FORMATTER" content="M2000">
      <meta HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=windows-1253">
      </head>
      <body bgcolor="CYAN" text="#000000" link="#0000ff" vlink="#800080" alink="#ff0000" scroll="no">
      <CENTER>Χειριστής</CENTER></H1><HR>
      <script>
      <!-- Start Hiding
      var m1;
      var p1;
      var total;
      function alfa() {
      total="?onoma=2000";
      if(m1 == "") {m1="?"};
      total=total+"&username="+escape(m1);
      if(p1 == "") {p1="?"};
      total=total+"&password="+escape(p1);
      document.title=total;
      setTimeout ("alfa()",100);
      return true}           // End hiding -->
      </script>
      <FORM NAME="ValidForm" action="about:blank" >
      <INPUT NAME="onoma" TYPE="HIDDEN" MAXLENGTH=4 SIZE="4" VALUE="1000">
      <TABLE ALIGN=CENTER BORDER=0 RULES=NO COLS="2">
      <TBODY>
      <TR VALIGN=TOP  >
      <TD  >Ονομα:</TD>
      <TD  ><INPUT NAME="username" TYPE="TEXT" id="uname" MAXLENGTH=16 SIZE="16" VALUE="##username$##" ></TD>
      </TR>
      <TR VALIGN=TOP  >
      <TD  >Συνθηματικό:</TD>
      <TD  ><INPUT NAME="password" ID="pass" TYPE="PASSWORD" MAXLENGTH=8 SIZE="8"></TD>
      </TR>
      </TABLE>
      <CENTER><BR><HR>
      <input type=button value="Αποστολή" onclick="m1=uname.value;p1=pass.value;alfa()">
      </CENTER>
      </FORM>
      </body>
      </html>
      }
      onoma$=""
      ΠΑΡΑΘΥΡΟ 10, 240*40,6000;
      \\ η εντολή πλαίσιο με το @ εμφανίζει γραφικά στοιχεία των windows
      Πλαίσιο @ width,0,4,1,0
      Πλαίσιο @ width,0,1,45,3
      Δρομέας 0,0
      Πένα 15
      Στόχος A,"ΑΑ++",WIDTH-2,1,,,1," ΠΑΡΑΔΕΙΓΜΑ ΧΡΗΣΗΣ ΣΤΟΧΩΝ ΚΑΙ ΑΝΑΛΟΓΙΟΥ"

      Τύπωσε @( width-2,0);
      Πλαίσιο @ width-2,0,4,15,0

      Στόχος B, "Γ <= Ψευδες : Μπιπ" ,2,1,,,5,"<>"
      Πένα 15
      \\ Αν ξεκινήσουμε το πρόγραμμα με διπλό κλικ στο αρχείο
      \\ τότε χρειάζεται η Άναψε - για να εμφανιστεί το περιβάλλον
      Άναψε
      \\ η πρώτη παράμετρος δεν έχει μπει για να αφήσουμε το χρώμα ως έχει
      \\ η δεύτερη αφήνει τις πάνω δυο γραμμές (0 και 1) και επιτρέπει ολισθηση
      \\ από την 2 και κάτω (λειτουργία χωριστής οθόνης)
      Οθόνη ,2
      \\ Ορίζουμε το αναλόγιο (ο browser) να πάρει το προσωρινό αρχείο
      \\ και να το δείξει σε συγκεκριμένο πλαίσιο
      αναλογιο αλφα.html, χ.σημεία-5000,500,5000,5450
      μετ=1
      \\ Εδώ φτιάχνω δυο νήματα
      \\ Το ένα μετράει και τυπώνει στην οθόνη (πίσω από το αναλόγιο)
      Νημα { Τύπωσε μετ : μετ++ } ως ΚΚ καθε 30
      \\ το άλλο εκτελεί τη μετακίνιση του παραθύρου, δουλεύει κατ΄απαίτηση
      \\ και μόνο του βγαίνει εκτός
      Νήμα {
           Κίνηση.π Κίνηση.χπ-ΜΧ+Δείκτης.χ,Κίνηση.υπ-ΜΥ+Δείκτης.υ
            Αν Δείκτης=0 Τότε ΑΑ<=0: Νήμα Αυτό Κράτα
      } Ως ΚΛΜ κάθε 10
      νημα ΚΛΜ κράτα
      \\ Εδώ είναι το κύριο έργο ή το κύριος βρόγχος
      \\ Ουσιαστικά όμως είναι ένα ακόμα νήμα με το πλεονέκτημα
      \\ όταν τελειώσει να σβήσει τα νήματα του τμήματος (αλλά όχι άλλα)
      Κύριο.Έργο 10 {
            \\ Οι στόχοι σαρώνονται με την Σάρωσε
            \\ ο χρόνος .01  δεν έχει σημασία όταν έχουμε νήματα
            Σάρωσε .01
            Αν όχι ( onoma$="" και Γ ) τότε έξοδος
            Αν ΑΑ=1 Τότε Διαμέσου ΕΚΚΙΝΗΣΗ()
      }
      αναλογιο ""
      κειμενο αλφα.html ' εδώ σβήνουμε το προσωρινό αρχείο
      λιστα
      Ρουτίνα ΕΚΚΙΝΗΣΗ()
            ΕΝΩ Δείκτης=0 {}
            ΜΧ=Δείκτης.χ : ΜΥ=Δείκτης.υ
            ΑΑ++
            Νήμα ΚΛΜ Ξεκινα
      Τέλος Ρουτίνας
}
\\ Εμφανίζουμε στην γραμμή εργασιών όνομα
Τίτλος "ΙΣΤΟΣ"
Γενική Γ = Αληθές
Α : α$=Κομ$







Μια προσθήκη εδώ:
Ένα απλό πρόγραμμα που εμφανίζει μια σελίδα

\\ τρεις μεταβλητές
τ$=""
Έγγραφο α$
αλ$={
}
\\ Άνοιγμα αναλογίου σε πλήρη οθόνη - του περιβάλλοντος
Αναλόγιο "www.google.com/news/greece", 0, 0
\\ κόβουμε το Esc να σταματάει τον κώδικα
διαφυγή όχι
\\ κάθε 100 msec κοιτάμε το escape
\\ και αν έχει αλλάξει η διεύθυνση την γράφουμε στο Έγγραφο α$
\\ βάζουμε και μια αλλαγή γραμμής
Κάθε 100 {
αν πατημένο(27) τότε Αναλόγιο "" : Έξοδος
Αν αναλόγιο$<>τ$ τότε τ$=αναλογιο$: α$=τ$+αλ$
}
\\ αντιγράφουμε το έγγραφο στο πρόχειρο
Πρόχειρο α$
\\ και στην οθόνη
Αναφορά α$


Δεν υπάρχουν σχόλια:

Δημοσίευση σχολίου

You can feel free to write any suggestion, or idea on the subject.