Πέμπτη, 26 Νοεμβρίου 2015

Χειρισμός κειμένων διαφορετικών γλωσσών (Μέρος Γ)

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


Εδώ θα δούμε πως θα σώσουμε σε αρχείο, το λεγόμενο σειριακό αρχείο, όπου τυπώνουμε παραγράφους (και αυτόματα μπαίνουν οι χαρακτήρες ANSI 13 και 10, Carriage Return και Line Feed).

Η δυσκολία του εγχειρήματος είναι ότι έχουμε μια γλώσσα στο παράδειγμα, την Φινλανδική που θέλουμε να φτιάξουμε ένα αρχείο ANSI για αυτή από έναν υπολογιστή που δεν έχει τέτοια γλώσσα συστήματος  (έχει δοκιμαστεί σε υπολογιστή με  Αγγλικά Windows 7).

\\ Διπλό παράδειγμα!
\\ Δείχνουμε πως θα σώσουμε αρχείο στα Φινλανδικά σε ANSI μορφή
\\ δηλαδή μονο με το σετ χαρακτήρων της Φινλανδίας
\\ Μετά δείχνουμε πως θα σώσουμε αρχείο σε μορφή Unicode, βάζοντας
\\ Μια παράγραφο στα Φινλανδικά και μία στα Ελληνικά
\\ Μάλιστα γράφουμε το Unicode αρχείο σε δυο στάδια, το δεύτερο με Συμπλήρωση (Append)
\\ Δεν χρησιμοποιούμε εδώ το φάκελο
\\ Το περιβάλλον χρησιμοποιεί τον τρέχοντα φάκελο.
\\ Το ρυθμίζουμε όμως εδώ:
Κατάλογος Χρήστη
α$="On tärkeää olla hyvä ammatti nykypäivänä. Voitko olla ammattilainen ilman vieraan kielen osaamista? Tuskinpa!"
β$="Είναι πολύ σημαντικό να έχετε ένα καλό επάγγελμα σήμερα. Μπορείτε να είστε επαγγελματίας χωρίς γνώση των ξένων γλωσσών; Μετά βίας!"
Αναγνωριστικό_Γλώσσας=2077
Αν Κωδ("Γ")=195 Τότε {
      Αναγνωριστικό_ANSI=1032
} Αλλιώς {
      Αναγνωριστικό_ANSI=0
}
\ Εδώ η "πονηριά" είναι ότι ετοιμάζουμε την εξαγωγή με τη σωστή μετατροπή
\ Διότι το σύστημα το εξάγει με το καθολικό αναγνωριστικό 0
\ Μετατρέπουμε το α$ που έχει Unicode κωδικούς σε κωδικούς ANSI
\ Οι ANSI κωδικοί γίνονται κωδικοί UNICODE της γλώσσας των Windows
\ Όταν θα γραφτεί το αρχείο θα κανει το σύστημα το ανάποδο, θα γυρίσουν σε ANSI
\ άρα θα έχουμε ένα αρχείο που το σύστημα νομίζει ότι είναι στα Ελληνικά
\ Αν το πάμε σε υπολογιστή με Φινλανδικά θα ανοίξει άμεσα σε Φινλανδικά!
Ανοιξε "εδω.αβγ" για εξαγωγή ως κ
      Τύπωσε #κ, χαρ$(γραφη$(α$,Αναγνωριστικό_Γλώσσας),Αναγνωριστικό_ANSI)
Κλείσε #κ


Τύπωσε Αρχειου.Μηκος("εδω.αβγ") ' μαζί με την αλλαγή γραμμής +2


Ανοιξε "εδω.αβγ" για εισαγωγή ως κ
      γραμμη Εισαγωγής #κ, δ$
Κλείσε #κ
' Τώρα κάνουμε τη σωστή μετατροπή για τη γλώσσα
' Πρώτα θα το κάνουμε πάλι ANSI γιατί μας το έχει φτιάξει το σύστημα σε λαθος γλώσσα
' Μετά θα το μετατρέψουμε σε Unicode βάσει του αναγνωριστικού της σωστής γλώσσας
Αναφορα χαρ$(γραφη$(δ$,Αναγνωριστικό_ANSI),Αναγνωριστικό_Γλώσσας)



\\ Για να μην σπάμε το κεφάλι μας με όλα τα παραπάνω
\\ Η Μ2000 υποστηρίζει αρχεία Unicode
\\ H διαφορά είναι στη λέξη ευρεία και στο ότι το αρχείο είναι διπλάσιο
\\ Εδώ έχουμε UTF16LE με δυο byte κάθε χαρακτήρας.
\\ Εδώ δείχνω και την Τέλος() ή EOF()


Ανοιξε "εδω1.αβγ" για ευρεια εξαγωγή ως κ
      Τύπωσε #κ, α$
Κλείσε #κ


Τύπωσε Αρχειου.Μηκος("εδω1.αβγ") ' μαζί με την αλλαγή γραμμής +2


Ανοιξε "εδω1.αβγ" για ευρεια συμπλήρωση ως κ
      Τύπωσε #κ, β$
Κλείσε #κ


Τύπωσε Αρχειου.Μηκος("εδω1.αβγ") ' μαζί με την αλλαγή γραμμής +2


Ανοιξε "εδω1.αβγ" για ευρεια εισαγωγή ως κ
      Ενώ όχι τέλος(#κ) {
            γραμμη Εισαγωγής #κ, δ$
            Αναφορα δ$
      }
Κλείσε #κ





  Ένα άλλο παράδειγμα, πιο εύκολο είναι και αυτό με χρήση μεταβλητής τύπου Εγγράφου:

\\ Μπορώ άμεσα να φτιάξω το έγγραφο (εδώ υποστηρίζεται και UTF-8 και UTF16LE  και UTF16BE και ANSI )
Έγγραφο Εδώ$={On tärkeää olla hyvä ammatti nykypäivänä. Voitko olla ammattilainen ilman vieraan kielen osaamista? Tuskinpa!
Είναι πολύ σημαντικό να έχετε ένα καλό επάγγελμα σήμερα. Μπορείτε να είστε επαγγελματίας χωρίς γνώση των ξένων γλωσσών; Μετά βίας!
}
\\ αυτόματα βάζει txt σαν τύπο
Σώσε.Έγγραφο Εδώ$, "εδω2"
\\ καθαρίζω το έγραφο
Καθαρό Εδώ$
Φόρτωσε.Έγγραφο Εδώ$, "εδω2"
Αναφορά Εδώ$


δείτε εδώ για το χειρισμό εγγράφων

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

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