Σάββατο 8 Φεβρουαρίου 2020

Αναθεώρηση 6, Έκδοση 9.9

Συνεχίζω, πιο αργά, να αναβαθμίζω τη γλώσσα και το περιβάλλον της. Θα ανεβάζω μια νέα αναθεώρηση κάθε μήνα περίπου. Σε αυτήν έκανα τις τελικές διορθώσεις στους επεξεργαστές κειμένου, το εσωτερικό στη κονσόλα και το στοιχείο ελέγχου EditBox (ή Κείμενο). Όταν έχουμε βάλει τον δρομέα ας πούμε στον 30ο χαρακτήρα και πάμε με το βελάκι πάνω, τότε ή θα υπάρχει 30ος χαρακτήρας και θα μένει εκεί ή θα πάει στον τελευταίο της γραμμής (<30) αλλά το 30 θα το θυμάται εκτός αν μεταφέρουμε οριζόντια το δρομέα. Έτσι αν έχουμε το δρομέα σε μια μεγάλη γραμμή και μετά τον κατεβάσουμε σε μια μικρή και πάλι τον ανεβάσουμε πάνω, θα πάμε στο σημείο που ξεκινήσαμε! Αυτό γίνονταν και στην 5 αλλά υπήρχε ένα θέμα με το εξής απίστευτο, αν έκανε κάποιος την κίνηση από τη μεγάλη γραμμή στη μικρή και πάταγε το enter, τότε διαγράφονταν δυο χαρακτήρες! Λύθηκε το πρόβλημα με μια γραμμή κώδικα (από μια για το κάθε στοιχείο).Αυτός ο τρόπος κίνησης του δρομέα υπάρχει και στον διορθωτή αυτού του blog.

Έχω κάνει την προεργασία για ένα αντικείμενο όπως ένα hash table, αλλά με διπλό κλειδί, δηλαδή δυο πίνακες hash, έτσι ώστε να φτιάξω την relational database, πιο απλή αλλά να μην στηρίζεται σε εξωτερικές βιβλιοθήκες. (αν και θα παραμείνει η δυνατότητα να χειριζόμαστε ADO αντικείμενα).


Εδώ είναι κώδικας που δημιουργεί μια βάση δεδομένων στη μνήμη (local). Ακόμα δεν υπάρχει η SQL για αυτή τη βάση. Αυτό που γίνεται είναι να δημιουργηθεί η βάση, και να διαβάσουμε τη δομή της.
Αν αφαιρέσουμε το local μετά το base τότε η βάση θα γίνει στο δίσκο σαν alfa.mdb
Περίπου φαίνεται το ίδιο στην ανάγνωση της δομής στις δυο περιπτώσεις. Θέλει ακόμα δουλειά!


base local "alfa"
table "alfa", "firstTable", "field1",long, -1, "title1", text, 40, "memo1", memo, 0,"mo1", memo, 0, "money", double,0
order "alfa", "firstTable", "title1", descending, "money",  descending
function attrib$(i) {
 if i=-1 then
 ="AutoIncrement"
 else.if i=0 then
 ="Default"
 else
 =str$(i,"")
 end if
}
structure "alfa"
read many
if many>0 then
Print "Tables:"
for i=1 to many
read tablename$, indexnumber
Print i, ") ";tablename$, "indexes:"; indexnumber
structure "alfa", tablename$
read many, indexnumber
if many>0 then
 Print " ", "Fields:"
 for j=1 to many
 read fieldname$, fieldtype$, fieldlen
 Print "",j,") ";fieldname$, @(tab(4)), fieldtype$, attrib$(fieldlen)
 next j
end if
Read indexnumber
if indexnumber>0 then
 Print " ", "Order:"
 for j=1 to indexnumber
 read fieldname$, fieldtype$
 Print "",j,") ";fieldname$, @(tab(4)), fieldtype$
 next j
end if
next i
end if
close base "alfa"
flush

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

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

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