smilefreeware Δημοσ. 28 Σεπτεμβρίου 2008 Δημοσ. 28 Σεπτεμβρίου 2008 ΓΛΩΣΣΑ : delphi ΘΕΜΑ : Θέλω να στείλω ένα κείμενο με γραμμές στο WORD. ΛΥΣΗ : Εβαλα Terminal fonts (DOS) με τις γραμμές και τέλος. Οταν το ανοίγω με το Word διαλέγω DOS. ΠΡΟΒΛΗΜΑ : Στα Vista όμως από ότι φαίνεται υπάρχουν διαφορετικοί χαρακτήρες με αποτέλεσμα κάποιους να τους 'τρώει'. Πχ. το Λ ή η διπλή κάθετη γραμμή κλπ. Τι κάνω ? ψάχνω στη τύχη (for n=1 to ...) μέχρι να βρώ ποιος χαρακτήρας αντιστοιχεί σε ποιον ? ή περνάω σε unicode όπου δεν έχω ασχοληθεί ?
Directx Δημοσ. 28 Σεπτεμβρίου 2008 Δημοσ. 28 Σεπτεμβρίου 2008 Όταν λες να "στείλεις" τι εννοείς; Μπορείς να μου εξηγήσεις τι προσπαθείς να κάνεις; Δεν σε "πιάνω" .... ???
ΠάρηςΓ Δημοσ. 28 Σεπτεμβρίου 2008 Δημοσ. 28 Σεπτεμβρίου 2008 Το διαβασα πρωτη φορα και δε καταλαβα τίποτα.Το ξαναδιάσα και απο οτι καταλαβα εχεις μπερδευτεί καπως. Πρωτα απο ολα πες μας σε τι γράφεις το κειμενο τι κωδικοποιηση εχει κατα την εγγραφή. Χρησιμοποίησε ενα unicode font. Στο word δεν εχει καν terminal font απο οσο ξέρω το 2007.Και γενικα δεν ειναι να το χρησιμοποιείς στα windows. Αν δε θες unicode εξαρταται απο τι εχεις επιλεξει στον υπολογιστή σου language for non unicode programs. Aν εχεις επιλέξει ελληνικά τοτε θα εχει encoding το συστημα 1253 windows.Επομενως τα ελληνικά γραμματα που πληκτρολογείς δε αντιστοιχουν στο νούμερο που είναι στα unicode αλλά σε όριο ενός byte.Αν δεν εχεις επιλέξει ελληνικά τοτε τα ελληνικά θα βγαίνουν μονο σε unicode. Επισης αν γραφεις το κειμενο στο notepad σε Τερμιναλ θα παει να τα γραφει με 1253 ή Unicode και οχι με DOS που θες. Αφου ομως βγαίνουν σωστά μερικά γραμματα δεν ξέρω τι εχεις κάνει ακριβως. Γενικά τα εχεις μπερδέψει λιγο πιστεύω.Καλυτερα να χρησιμοποιείς πλέον unicode κυριως σε προγραμματα ισως και σε ιστοσελιδες ομως εκει ειναι θεμα encoding αλλα στις εφαρμογες ειναι διαφορετικα τα πραγματα. http://www.unicode.org να πάρεις μια ιδέα.
smilefreeware Δημοσ. 28 Σεπτεμβρίου 2008 Μέλος Δημοσ. 28 Σεπτεμβρίου 2008 Οκ, τα είπα πολύ συμπυκνωμένα. Εχω ένα κείμενο και θέλω να βάλω γραμμές, πλαίσια κλπ. Εύκολη λύση βρήκα τους χαρακτήρες του DOS από 180-223 ascii. Φτιάχνω το κείμενο με τα πλαίσια σε πίνακα με strings. Το σώζω με κατάληξη .doc και το τρέχω μέσα από το πρόγραμμα οπότε ανοίγει με word. Μου προτείνει κινέζικα και εγώ διαλέγω DOS. (Για να προτείνει και DOS το word πρέπει το κείμενο στη πρώτη σειρά να έχει αρκετούς χαρακτήρες ---- ) Ετσι έχω μέσα στο word το κείμενό μου με τα πλαίσιά του. Εκεί ο χρήστης μπορεί να το πειράξει και να πάει για εκτύπωση. Δουλεύει και σε xp και σε vista. ΠΡΟΒΛΗΜΑ : Στα Vista όμως από ότι φαίνεται υπάρχουν διαφορετικοί χαρακτήρες με αποτέλεσμα κάποιους να τους 'τρώει'. Πχ. το Λ ή η διπλή κάθετη γραμμή κλπ. το πρόβλημα φαίνεται και στο word και μέσα στο πρόγραμμα όταν εμφανίζω σε παράθυρο το κείμενο πχ. σε ένα memo. Τα fonts στο memo που δίνω είναι terminal. @ΠάρηςΓ Το πρόβλημα έχει να κάνει με encoding του συστήματος γιατί σε XP δουλεύουν όλα και word 2007.
ΠάρηςΓ Δημοσ. 28 Σεπτεμβρίου 2008 Δημοσ. 28 Σεπτεμβρίου 2008 Μαλλον το font που επιλέγεις θα εχει κατι με το κομάτι DOS. Εγω παντως δεν μπορω να επιλέξω τερμιναλ σε word μονο σε notepad. Στειλε μας τα doc να δουμε αν ειναι.Παντως εγω σε txt θα το εσωζα. Στο προγραμα σου οταν το ανοίγεις πρεπει να επιλέξεις font και encoding Αν και τα Terminal μονο το Dos εχουν.
smilefreeware Δημοσ. 28 Σεπτεμβρίου 2008 Μέλος Δημοσ. 28 Σεπτεμβρίου 2008 Μαλλον το font που επιλέγεις θα εχει κατι με το κομάτι DOS. Εγω παντως δεν μπορω να επιλέξω τερμιναλ σε word μονο σε notepad.Στειλε μας τα doc να δουμε αν ειναι.Παντως εγω σε txt θα το εσωζα. Στο προγραμα σου οταν το ανοίγεις πρεπει να επιλέξεις font και encoding Αν και τα Terminal μονο το Dos εχουν. Μάλλον σε έμπλεξα. Ούτε εγώ μπορώ να διαλέξω τερμιναλ σε word (το excel έχει). Οταν ανοίγεις αρχείο με την πρώτη σειρά του αρχείου να είναι γραμμή τότε το word σου προτείνει διάφορα. Μεταξύ αυτών έχει και το MS-DOS Τα terminal τα δίνω στα fonts του memo μέσα στο δικό μου πρόγραμμα για να μπορέσω να τα δείξω σε παράθυρο.
ΠάρηςΓ Δημοσ. 28 Σεπτεμβρίου 2008 Δημοσ. 28 Σεπτεμβρίου 2008 Δε παρατηρω καποιο προβλημα στο screenshot που ειδα τωρα πάντως.
smilefreeware Δημοσ. 28 Σεπτεμβρίου 2008 Μέλος Δημοσ. 28 Σεπτεμβρίου 2008 Δε παρατηρω καποιο προβλημα στο screenshot που ειδα τωρα πάντως. Αυτό είναι σε XP. Στα Ελληνικά Vista υπάρχει το πρόβλημα.
alkisg Δημοσ. 28 Σεπτεμβρίου 2008 Δημοσ. 28 Σεπτεμβρίου 2008 Δύο επιλογές, σου προτείνω τη δεύτερη. ΕΠΙΛΟΓΗ 1: Δούλεψε κατευθείαν με UTF8. Έστω ότι θες να γράψεις ένα string array με όνομα words[] σε ένα πινακάκι σαν αυτά που λες. Καλώντας την AnsiToUTF8 (ενσωματωμένη στο Delphi) μετατρέπεις τον πίνακα words[] σε UTF8. Δηλώνεις όλους τους χαρακτήρες που χρησιμοποιείς στους πίνακες με βάση την UTF8 κωδικοποίησή τους. Αυτήν την βρίσκεις πχ. από τη σελίδα http://www.utf8-chartable.de/unicode-utf8-table.pl αν αλλάξεις το combobox που έχει στην τρίτη γραμμή σε "Box drawing". Για παράδειγμα, η γωνία που μοιάζει με έντονο Γ είναι η "BOX DRAWINGS HEAVY DOWN AND RIGHT" με κωδικό e2 94 8f. Δηλώνεις λοιπόν στο Delphi const HDR = #$e2#$94#$8f; //Heavy Down Right και εν τέλει τη χρησιμοποιείς κάπως έτσι: stringToSave := HDR + AnsiToUTF8(words[1]) + ...; Εκτός από αυτά, πρέπει να γράψεις και έναν ειδικό χαρακτήρα στην αρχή του αρχείου, ο οποίος λέγεται BOM (Byte Ordering Mark), και ο οποίος σηματοδοτεί το ότι το αρχείο είναι σε UTF8 κωδικοποίηση. Αυτός είναι συγκεκριμένος, ο const UTF8_BOM = #$EF#$BB#$BF; και τον γράφεις πρώτο πρώτο στο αρχείο. ΕΠΙΛΟΓΗ 2: Αντί να παιδεύεσαι με τέτοια, γράψε ένα .html αρχείο και άνοιξέ το είτε με Word είτε με Internet Explorer είτε με οτιδήποτε άλλο. Δηλαδή αντί να γράφεις ειδικούς χαρακτήρες για να φτιάχνεις τον πίνακα, γράφεις απλά <table><tr><td>εδώ μπαίνουν τα δεδομένα του πρώτου κελιού</td> <td>εδώ του δεύτερου κελιού</td>... Πολύ πιο απλό, πολύ πιο όμορφο και δεν χρειάζεται να ασχολείσαι και με τη στοίχιση.
smilefreeware Δημοσ. 28 Σεπτεμβρίου 2008 Μέλος Δημοσ. 28 Σεπτεμβρίου 2008 Αυτό με το html το είχα σκεφτεί επειδή έχω ασχοληθεί με το ανάποδο πρόβλημα. (Κάνω extract τα στοιχεία πίνακα από σελίδες html) Δεν θυμάμαι γιατί το άφησα. Ωραία λύση είχα βρει με excel var XApp:Variant; XApp:=CreateOleObject('Excel.Application'); XApp.Visible:=true; κλπ. και πέρναγα πίνακα κατευθείαν μέσα στο excel. Αλλά δεν μπόρεσα να περάσω στο excel τη σύμπτυξη κελιών. Αυτό με τα UTF8 θα ασχοληθώ γιατί δεν γνωρίζω. Οπότε κατέληξα στο DOS που ήταν γρήγορη και άνετη λύση. Με βλέπω προς html. Από περιέργεια θα περάσω χαρακτήρες ascii σε vista για να δω την αντιστοιχία. **** Μόλις είδα τα UTF8. const HDR = #$e2#$94#$8f; //Heavy Down Right stringToSave := HDR + AnsiToUTF8(words[1]) + ...; Με το ίδιο τρόπο έχω φτιάξει ήδη αυτό με το DOS οπότε μάλλον η αλλαγή είναι εύκολη. ΕΡΩΤΗΣΗ Οταν μπει στο word πρέπει ο χρήστης να βάλει courier για να υπάρχει στοίχηση ?
alkisg Δημοσ. 29 Σεπτεμβρίου 2008 Δημοσ. 29 Σεπτεμβρίου 2008 > Οταν μπει στο word πρέπει ο χρήστης να βάλει courier για να υπάρχει στοίχηση ? Ναι. Βασικά οι box drawing χαρακτήρες έχουν σταθερό πλάτος σε όλες τις γραμματοσειρές, αλλά αν δεν βάλεις Courier ή Lucida Console ή κάποια άλλη σταθερού πλάτους γραμματοσειρά θα σου χαλάνε τη στοίχιση τα γράμματα στο εσωτερικό των πινάκων. Φυσικά με html βάζεις ό,τι γραμματοσειρά θέλεις, δεν υπάρχει περιορισμός...
ΠάρηςΓ Δημοσ. 29 Σεπτεμβρίου 2008 Δημοσ. 29 Σεπτεμβρίου 2008 Και εγω θα σου προτεινα με html απλά δε σου ειπα τιποτα επειδη ίσως δεν ήθελες. http://www.unicode.org/charts/symbols.html http://www.unicode.org/charts/PDF/U2500.pdf Θα βρεις και εδώ πολλά .Αν θες στειλε το project που εχω βιστα να δω τι παίζει.
smilefreeware Δημοσ. 12 Οκτωβρίου 2008 Μέλος Δημοσ. 12 Οκτωβρίου 2008 Τελικά δεν ξέρω πως και γιατί αλλά δούλεψε μια χαρά στο word και στα XP και στα Vista. Το πρόβλημα ήταν στα Vista και μέσα στο πρόγραμμα. Το έφτιαξα με htm και καθάρισα. Αν και μέσα στο πρόγραμμα που το εμφάνιζα μέσω explorer είχε μικροδιαφορές με το word.
Προτεινόμενες αναρτήσεις
Αρχειοθετημένο
Αυτό το θέμα έχει αρχειοθετηθεί και είναι κλειστό για περαιτέρω απαντήσεις.