harbour — συγκεντρωτικός οδηγός — DedSec Project
harbour — συγκεντρωτικός οδηγός Harbour Τι προσφέρει η γλώσσα Η Harbour συνεχίζει την παράδοση xBase/Clipper σε επιχειρησιακές εφαρμογές με records, βάσεις και διαδικασίες. Μικρό παράδειγμα…
Harbour
Τι προσφέρει η γλώσσα
Η Harbour συνεχίζει την παράδοση xBase/Clipper σε επιχειρησιακές εφαρμογές με records, βάσεις και διαδικασίες.
Μικρό παράδειγμα προς μελέτη
PROCEDURE Main()
? "Hello from Harbour"
RETURN
Φτιάξε μικρό console πρόγραμμα και ξεχώρισε την πρόσβαση σε DBF πίνακα από έναν in-memory πίνακα.
Τι να επαληθεύσεις
Κατάγραψε την πραγματική έκδοση εργαλείου, τις απαιτούμενες εξαρτήσεις και την έξοδο σε δοκιμαστικά δεδομένα για τη Harbour. Πρόβλεψε το αποτέλεσμα πριν το ελέγξεις και διατήρησε την αρχική και τη διορθωμένη εκδοχή ώστε να φαίνεται η αιτιώδης διαφορά. Μην αποκαλείς ένα απόσπασμα εκτελεσμένο αν δεν έχεις το κατάλληλο περιβάλλον.
Παγίδα ειδική για το θέμα
Σε DBF αρχεία χρειάζεται ιδιαίτερος έλεγχος codepage, χαρακτήρων και κλειδώματος εγγραφών.
Εργαστήριο εξάσκησης: Harbour
Η Harbour ανήκει στην οικογένεια xBase. Η σύνταξη PROCEDURE, LOCAL και το ερωτηματικό για εμφάνιση στην κονσόλα δεν ισοδυναμούν με SQL ή Python. Πρώτα εξετάζουμε αριθμητικές πράξεις χωρίς αρχεία και στη συνέχεια σχεδιάζουμε χωριστό, ακίνδυνο πείραμα σε δοκιμαστική βάση.
Άσκηση 1: υπολόγισε μια τοπική τιμή
PROCEDURE Main()
LOCAL n := 2
? n * 3
RETURN
Η αναμενόμενη αριθμητική έξοδος είναι 6. Αν η αρχική τιμή n γίνει -2, η έξοδος πρέπει να είναι -6. Εξήγησε ότι η LOCAL ορίζει μεταβλητή στο συγκεκριμένο scope και ότι το RETURN ολοκληρώνει τη διαδικασία. Το Main είναι σημείο εισόδου στο συγκεκριμένο ύφος προγράμματος, όχι συνάρτηση C που μεταφέρθηκε αυτούσια.
Άσκηση 2: κείμενο ή αριθμός;
Η ValType() μπορεί να βοηθήσει στον έλεγχο τύπου της τιμής. Το κείμενο "12" δεν είναι το ίδιο δεδομένο με τον αριθμό 12, παρότι εμφανίζονται παρόμοια στον χρήστη. Σχεδίασε έλεγχο που απορρίπτει μη αριθμητική είσοδο και ξεχωριστό έλεγχο που επιτρέπει ασφαλή μετατροπή γνωστής μορφής. Μια κενή συμβολοσειρά, κενά διαστήματα και NIL απαιτούν διαφορετική αντιμετώπιση. Μην βασίζεσαι σε αυθαίρετη μετατροπή χωρίς δοκιμή.
Άσκηση 3: σχεδίασε εγγραφές DBF χωρίς πραγματικά δεδομένα
Σε προσωρινό φάκελο, περιέγραψε πίνακα αποθέματος με κωδικό και ποσότητα. Πώς βρίσκεις μία εγγραφή και ποια ξεχωριστή λειτουργία χρειάζεται για ενημέρωση; Τι συμβαίνει αν δύο διεργασίες θέλουν να γράψουν ταυτόχρονα; Οι κλειδαριές εγγραφών, η κωδικοποίηση χαρακτήρων και η κοινή χρήση αρχείων μπορούν να επηρεάσουν ένα πρόγραμμα βάσης ακόμη κι αν η απλή αριθμητική λειτουργεί.
Έλεγχος και στοιχεία
Σημείωσε έκδοση compiler Harbour, λειτουργικό, εντολή build από επίσημη τεκμηρίωση και πραγματική έξοδο. Αν δεν υπάρχει compiler, γράψε «προβλεπόμενο, όχι εκτελεσμένο». Κριτήριο είναι η κατανόηση scope, τύπων και εγγραφών, όχι μόνο η εμφάνιση ενός Hello World. Μην τροποποιείς επαγγελματικά DBF αρχεία για μια εκπαιδευτική άσκηση.
Harbour — Διαδρομή ουσιαστικής εξάσκησης
Ειδικές προχωρημένες δοκιμές
Γράψε Harbour πρόγραμμα με δοκιμαστικό DBF table που μετρά εγγραφές χωρίς αλλαγές σε πραγματικά αρχεία.
Δοκίμασε work area, selected records και deleted/active rows. Εξήγησε το SET DELETED για την έκδοση του runtime.
Χτίσε offline inventory report σε αντίγραφο DBF, με backup και documented schema. Σύγκρινε Harbour extensions με παλιό Clipper/xBase.