============================================================================ Τεκμηρίωση της βιβλιοθήκης OOoMg.dll ============================================================================ Η βιβλιοθήκη εκθέτει τις παρακάτω 4 συναρτήσεις ( C/C++ ) int __stdcall IsLocaleSupported(char * szLanguage, char * szCountry) int __stdcall Spell(char * szWord, char * szLanguage, char * szCountry, char * szResult, int * lpResultSize) int __stdcall HyphenPositions(char * szWord, char * szLanguage, char * szCountry, char * szResult, int * lpResultSize) int __stdcall Thesaurus(char * szWord, char * szLanguage, char * szCountry, char * szResult, int * lpResultSize) ( Delphi ) function IsLocaleSupported(szLanguage, szCountry: PChar): Integer; stdcall; function Spell(szWord, szLanguage, szCountry, szResult: PChar; var lpResultSize: Integer): Integer; stdcall; function HyphenPositions(szWord, szLanguage, szCountry, szResult: PChar; var lpResultSize: Integer): Integer; stdcall; function Thesaurus(szWord, szLanguage, szCountry, szResult: PChar; var lpResultSize: Integer): Integer; stdcall; ( C# ) [DllImport(OO_DLL, CallingConvention = CallingConvention.StdCall)] static public extern int IsLocaleSupported(string szLanguage, string szCountry); [DllImport(OO_DLL, CallingConvention = CallingConvention.StdCall)] static public extern int Spell(string szWord, string szLanguage, string szCountry, StringBuilder szResult, out int lpResultSize); [DllImport(OO_DLL, CallingConvention = CallingConvention.StdCall)] static public extern int HyphenPositions(string szWord, string szLanguage, string szCountry, StringBuilder szResult, out int lpResultSize); [DllImport(OO_DLL, CallingConvention = CallingConvention.StdCall)] static public extern int Thesaurus(string szWord, string szLanguage, string szCountry, StringBuilder szResult, out int lpResultSize); --------------------------------------------------------------------------- Σταθερές επιστροφής --------------------------------------------------------------------------- Οι συναρτήσεις Οι συναρτήσεις Spell(), HyphenPositions() και Thesaurus() επιστρέφουν μία από τις παρακάτω σταθερές ER_OO_UNKNOWN_ERROR = 0; // Unknown error ER_OO_OK = 1; // No error ER_OO_LOCALE_NOT_SUPPORTED = 2; // Locale not supported ER_OO_ALTERNATIVES = 3; // Spell error. Alternatives ER_OO_NO_ALTERNATIVES = 4; // Spell error. No alternatives ER_OO_NO_HYPHEN_POSITIONS = 5; // No hyphenation positions ER_OO_NO_SYNONYMS = 6; // No synonyms ER_OO_NOT_ACTIVATED = 255; // MAGENTA OOo Linguistics API services not activated H IsLocaleSupported() επιστρέφει ένα bitfield. Οι τιμές είναι LOCALE_SUPPORTED_SPELL = 1; // Υποστηρίζεται από την Spell() LOCALE_SUPPORTED_HYPHEN = 2; // Υποστηρίζεται από την HyphenPositions() LOCALE_SUPPORTED_THESAURUS = 4; // Υποστηρίζεται από την Thesaurus() --------------------------------------------------------------------------- Strings και μνήμη --------------------------------------------------------------------------- Ολα τα strings είναι zero terminated strings. Ο καλών κώδικας ευθύνεται για την δέσμευση/αποδέσμευση της μνήμης τους. Οι συναρτήσεις Spell(), HyphenPositions() και Thesaurus() επιστρέφουν δεδομένα στην παράμετρο szResult η οποία είναι μία [out] παράμετρος. Ο καλών κώδικας για να πληροφορηθεί την ποσότητα της μνήμης που πρέπει να δεσμεύσει για την παράμετρο αυτή, κάνει αρχικά μια κλήση περνώντας στην θέση της παραμέτρου szResult τον κενό pointer. Η συνάρτηση επιστρέφει έχοντας δώσει τιμή στην παράμετρο lpResultSize την ποσότητα μνήμης σε bytes που πρέπει να δεσμεύσει ο καλών για την szResult. Η lpResultSize ΔΕΝ περιλαμβάνει τον χαρακτήρα τερματισμού. Αρα ο καλών κώδικας πρέπει να δεσμεύσει μνήμη για την szResult ίση με lpResultSize + 1. Ακολούθως γίνεται μία δεύτερη κλήση με την szResult πλέον ώστε να πάρει ο καλών τα δεδομένα και το αποτέλεσμα. Ο μηχανισμός αυτός είναι ο standard μηχανισμός που χρησιμοποιούν τα περισσότερα API σε παρόμοιες περιπτώσεις. --------------------------------------------------------------------------- Παράμετροι κλήσεων --------------------------------------------------------------------------- szLanguage : [in] το locale, δηλαδή η γλώσσα, με βάση τον αντίστοιχο ISO πίνακα Κατάλογος στην http://ftp.ics.uci.edu/pub/ietf/http/related/iso639.txt szCountry : [in] η χώρα, με βάση τον αντίστοιχο ISO πίνακα Κατάλογος στην http://userpage.chemie.fu-berlin.de/diverse/doc/ISO_3166.html szWord : [in] Η λέξη ή φράση που αποτελεί το αντικείμενο της κλήσης. szResult : [in/out] Pointer που μπορεί να περιέχει string δεδομένα ανάλογα με το αποτέλεσμα της κλήσης. lpResultSize : [in/out] Το μέγεθος σε bytes της szResult --------------------------------------------------------------------------- Κλήσεις --------------------------------------------------------------------------- Πριν γίνει οποιαδήποτε κλήση πρέπει να έχει αρχικοποιηθεί το COM υποσύστημα των Windows με ευθύνη του καλούντος κώδικα. Η αρχικοποίηση γίνεται καλώντας την CoInitialize() και στο τέλος της όλης διαδικασίας CoUninitialize(). Η αρχικοποίηση μπορεί να γίνει εννοείται στην αρχή της εφαρμογής του καλούντος κώδικα. Ολες οι συναρτήσεις έχουν για σύμβαση κλήσης την stdcall. Ολες οι συναρτήσεις μπορεί να επιστρέψουν ER_OO_UNKNOWN_ERROR, ER_OO_NOT_ACTIVATED. --------------------------------------------------------------------------- IsLocaleSupported() --------------------------------------------------------------------------- Επιστρέφει αν μία γλώσσα υποστηρίζεται από τις συναρτήσεις και από ποιες. Επιστρέφει ένα bitfield. Οι τιμές είναι LOCALE_SUPPORTED_SPELL = 1; // Υποστηρίζεται από την Spell() LOCALE_SUPPORTED_HYPHEN = 2; // Υποστηρίζεται από την HyphenPositions() LOCALE_SUPPORTED_THESAURUS = 4; // Υποστηρίζεται από την Thesaurus() --------------------------------------------------------------------------- Spell() --------------------------------------------------------------------------- Κάνει έλεγχο ορθότητας στην szWord. Αν η λέξη είναι σωστή επιστρέφει ER_OO_OK. Διαφορετικά, αν δηλαδή δεν είναι σωστή, τότε αν δεν υπάρχουν εναλλακτικές επιστρέφει ER_OO_NO_ALTERNATIVES. Διαφορετικά επιστρέφει ER_OO_ALTERNATIVES. Στην περίπτωση αυτή το string szResult είναι μία λίστα από εναλλακτικές προτάσεις χωρισμένες με ελληνικό ερωτηματικό (;) Επιστρέφει ER_OO_UNKNOWN_ERROR ER_OO_NOT_ACTIVATED ER_OO_LOCALE_NOT_SUPPORTED ER_OO_OK // σωστή λέξη ER_OO_NO_ALTERNATIVES // λάθος λέξη, δεν υπάρχουν εναλλακτικές ER_OO_ALTERNATIVES // λάθος λέξη, υπάρχουν εναλλακτικές --------------------------------------------------------------------------- HyphenPositions() --------------------------------------------------------------------------- Συλλαβίζει την szWord τοποθετώντας το σημείο του = όπου μπορεί να τοποθετηθεί το σημείο του συλλαβισμού (-). Επιστρέφει ER_OO_OK αν έχει τοποθετήσει έστω και ένα σημείο συλλαβισμού στην λέξη. Διαφορετικά επιστρέφει ER_OO_NO_HYPHEN_POSITIONS Επιστρέφει ER_OO_UNKNOWN_ERROR ER_OO_NOT_ACTIVATED ER_OO_LOCALE_NOT_SUPPORTED ER_OO_NO_HYPHEN_POSITIONS ER_OO_OK --------------------------------------------------------------------------- Thesaurus() --------------------------------------------------------------------------- Επιστρέφει τον "θησαυρό" της λέξης szWord, δηλαδή τις διαφορετικές σημασίες που μπορεί να έχει και για ΚΑΘΕ σημασία τα συνώνυμα. Αν δεν υπάρχουν σημασίες ή συνώνυμα επιστρέφει ER_OO_NO_SYNONYMS. Διαφορετικά επιστρέφει ER_OO_OK. Σε περίπτωση επιτυχούς επιστροφής το szResult έχει το παρακάτω format Αποτέλεσμα0#Αποτέλεσμα1# ... ΑποτέλεσμαΝ# οπου κάθε αποτέλεσμα έχει το format Σημασία|Συνώνυμο0;Συνώνυμο1; ... ΣυνώνυμοΝ; Δηλαδή κάθε Σημασία μαζί με τα Συνώνυμά της είναι χωρισμένη από τις αλλες Σημασίες με #. Η Σημασία είναι χωρισμένη από τα Συνώνυμά της με | Τα Συνώνυμα είναι χωρισμένα μεταξύ τους με ; Επιστρέφει ER_OO_UNKNOWN_ERROR ER_OO_NOT_ACTIVATED ER_OO_LOCALE_NOT_SUPPORTED ER_OO_NO_SYNONYMS ER_OO_OK