Δευτέρα, 18 Απριλίου 2016

Αναθεώρηση 220, μεγαλύτερη ταχύτητα!

Μετέφερα και άλλες εντολές στο νέο σύστημα για άμεση εκτέλεση (και τα δυο δουλεύουν ταυτόχρονα, ότι δεν υπάρχει δείκτη σε συνάρτηση καλείται με τον κανονικό τρόπο, μέσω ενός μεγάλου select case).

Επίσης έφτιαξα το Κλείσε Βάση γιατί δεν την έκλεινε αν δεν δίναμε όλη την διαδρομή (θα έκλεινε μόνο με τον τερματισμό ή με μια Κλείσε χωρίς παράμετρο που κλείνει ότι έχει έχει ανοικτό, βάση και αρχείο).
Στο παράδειγμα έχω αναμείξει την Τύπωσε με την Αναφορά (η πρώτη τυπώνει σε στήλες, ενώ η δεύτερη εμφανίζει κείμενο, αλλά παίρνει την θέση του δρομέα για αριστερό περιθώριο.
Δείτε ότι στη βάση γράφω και ρώσικους χαρακτήρες (τυχαίοι μάλλον)..
Η εντολή ανάκτηση επειδή γυρνάει διαφορετικό αριθμό στοιχείων τα περνάει στο σωρό τιμών, με την κορυφή τον αριθμό εγγραφών (αν και φέρνει μια εγγραφή, μας λέει πόσες βρήκε βάσει το ερωτήματος, και στην ουσία αυτό παραμένει ενεργό για να διαβάσουμε ξανά, και αυτός είναι ο λόγος που απαιτείται κλείσιμο). Δοκιμάστε να τρέξετε δυο φορές τo m2000.exe και πριν πατήσετε το πλήκτρο (δείτε το α$=κομ$) μπείτε από το άλλο πρόγραμμα και διαβάστε την βάση. Γίνεται γιατί η βάση είναι ανοικτή για πολλαπλή χρήση. Αυτό που δεν γίνεται είναι η εκτέλεση του Create Table, πρέπει να κλείσει πρώτα η βάση στο πρόγραμμα που ανοίχτηκε και μετά το άλλο πρόγραμμα να την σβήσει (η εντολή Βάση σβήνει τη βάση αν την βρει...δηλαδή αν θέλουμε να δουλέψουμε με το αρχείο...με στοιχεία που είχαμε δώσει..δεν θα δώσουμε τις εντολές Βάση...και Εκτέλεση όπως είναι παρακάτω).

Βάση "ΑΛΦΑ"  ' ΔΙΑΓΡΑΦΕΙ  ΤΗΝ ΒΑΣΗ ΑΝ ΒΡΕΙ ΤΟ ΙΔΙΟ ΟΝΟΜΑ
Εκτέλεση "ΑΛΦΑ", { CREATE TABLE Employees(ID autoincrement primary key,  LastName   VARCHAR(40) ,  FirstName  VARCHAR(40)  NOT NULL, MyMemo TEXT )}
Προσθήκη "ΑΛΦΑ","Employees",,"George","йваоаптаЭЭ","Γεια χαρά από Ελλάδα"
Ανάκτηση "ΑΛΦΑ", "Employees", 1,"",""
Διάβασε ΠΟΣΑ, ΑΝΑΓΝΩΡΙΣΤΙΚΟ, ΕΠΙΘΕΤΟ$, ΟΝΟΜΑ$, ΣΤΟΙΧΕΙΑ$
Τύπωσε $(4, 6),  "Βάση:"
Τύπωσε @(Στήλη(1),Γραμμή-1)
Αναφορά "ΑΛΦΑ"


Τύπωσε @(0),"ΟΝΟΜΑ:"
Τύπωσε @(Στήλη(1),Γραμμή-1)
Αναφορά ΟΝΟΜΑ$ + " " + ΕΠΙΘΕΤΟ$
Τύπωσε @(0)
Τύπωσε "ΣΤΟΙΧΕΙΑ:"
Τύπωσε @(Στήλη(1),Γραμμή-1)
Αναφορά ΣΤΟΙΧΕΙΑ$
\\ και χωρίς να κλείσει η βάση μπορεί να αλλαχθεί από άλλο πρόγραμμα, αλλά δεν αφήνει δημιουργία νέου πίνακα.
\\ δεν μπορεί να διαγραφεί η βάση όσο την χρησιμοποιούμε.
α$=κομ$
Κλείσε Βάση "ΑΛΦΑ"



Παράλληλα έφτιαξα στο EditBox στην επικόλληση να αλλάζει το σύστημα τα tab σε διαστήματα. υπολογίζοντας τις θέσεις σαν το κείμενο να ήταν με monospace γραμματοσειρά (δηλαδή ίδιου πλάτους χαρακτήρες, όπως στην courier). Μπορούμε να το αφαιρέσουμε αυτό αλλάζοντας την ιδιότητα tabwidth σε 0 (είναι σε 6 για να βάζει σε στήλες των 6 χαρακτήρων το κείμενο). Το EditBox δεν έχει στήλες. Μόνο παραγράφους. Τα F1 έως και F12 έχουν λειτουργίες και επίσης και με Shift ορισμένα. Π.χ. Shift-F3 ανοίγει εισαγωγή για εύρεση λέξης προς τα κάτω. Με F3 συνεχίζει την εύρεση στην επόμενη λέξη προς τα κάτω. Φαίνονται ορισμένα και στο δεξί μενού

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