Jump to content

Αποθήκευση σε αρχείο χρωματιστό κείμενο C++ (Solved)


iterator
 Share

Recommended Posts

Καλησπέρα. Έχω ένα μικρό πρόβλημα με την αποθήκευση σε ένα πρόγραμμα που φτιάχνω.

Μήπως γνωρίζει κανείς πως αποθηκεύουμε σε αρχείο χρωματιστό κείμενο. Χρησιμοποιώ wxDev-cpp και έχω ένα wxRichTextCtrl όπου εμφανίζονται τα αποτελέσματα του προγράμματος με διάφορα χρώματα.

Προσπαθώ να περάσω τα περιεχόμενα του σε ένα αρχείο (με χρήση WxRichTextCtrl->GetValue(); ) αλλά μου τα περνάει όλα με μαύρο χρώμα. Έχω δοκιμάσει καταλήξεις .doc και .rtf αλλά τίποτα.

Ευχαριστώ εκ των προτέρων

Link to comment
Share on other sites

Χωρίς να γνωρίζω C++, αλλά λίγο πολύ όλες οι γλώσσες με τον ίδιο τρόπο δουλεύουν, πως το αποθηκεύεις το κείμενο?

Αν για παράδειγμα το control σου είναι το wxRichTextCtrl, αποθηκεύεις το wxRichTextCtrl.Text, ή το wxRichTextCtrl.Value?

Σε αυτές τις περιπτώσεις, έχουν μόνο την τιμή του κειμένου κι όχι τα χρώματα. Στη VB για παράδειγμα τα χρώματα θα τα έχει στο .FontColor, .BGColor, .FontSize, .FontFamily, κλπ.

Και πάλι όμως για να τα πάρεις αυτά, πρέπει να ξέρεις τα specs του φορμάτ (για παράδειγμα .doc) ώστε να δημιουργήσεις ένα binary αρχείο στη μνήμη και μετά να το κάνεις stream σε αρχείο .doc.

Πιθανότατα να υπάρχει κάποιο έτοιμο control που να παίρνει αυτό τα δεδομένα από το wxRichTextCtrl και να στα βγάζει σε ότι format θέλεις.

Link to comment
Share on other sites

Ευχαριστώ πολύ για την απάντηση.

Μάλλον αυτό που λες συμβαίνει αλλά δεν ξέρω πως να του περάσω και τις ιδιότητες των χρωμάτων. Προσπαθώ και με WxRichTextCtrl->GetBuffer() αλλά δεν καταλήγω πουθενά.

Οποιαδήποτε πρόταση δεκτή για δοκιμή.

Link to comment
Share on other sites

Οπως τα λεει ο Wizard ειναι...

Ισως αν μπορουσες να αποθηκευσεις καπως σε XML ή html αρχειο και να χρησιμοποιησεις τα καταλληλα tags διοτι αν ειναι να αναλυσεις την δομη του doc καλυτερα phuck it.

*Edit με προλαβε ο Sagas...:mad:

Aν βαλεις μπροστα απο το κειμενο σου αυτο και το αποθηκευσεις σαν HTML αρχειο:

<font color="red">Καποιο κειμενο...

Θα παρεις το κειμενο σε κοκκινο χρωμα

Link to comment
Share on other sites

Ωραία η πρόταση για html μορφή αλλά σίγουρα θα υπάρχει τρόπος για αυτό που θέλω.

Όσο για το πως αποθηκεύονται στο .doc, όλα κανονικά εκτός από το χρώμα που με καίει.

Ευχαριστώ για τις επισημάνσεις.

Link to comment
Share on other sites

Βασικά και να το πάρεις με το WxRichTextCtrl->GetBuffer(), αν αυτό σου δίνει το περιεχόμενο που χρειάζεσαι, το θέμα είναι ότι δε γνωρίζεις τα specs για να το σώσεις σαν WinWord 97-2000. Αυτά πρέπει να βρεις και μετά να το μετατρέψεις.

Link to comment
Share on other sites

Σωστό αυτό που λες Wizard! αλλά μου φαίνεται ιδιαίτερα δύσκολο. Δε γίνεται, κάποιος πιο απλός τρόπος θα υπάρχει. Αν κάποιος έχει καμιά ιδέα έστω και με διαφορετικό του WxRichTextCtrl control ας την προτείνει μήπως και καταλήξω σε κάτι σχετικά απλό που να δουλεύει. Ευχαριστώ.

Link to comment
Share on other sites

Αυτό είναι ένα παράδειγμα rtf. Αν δεν το κάνεις έτσι, το τι extention θα δώσεις στο αρχείο, δεν παίζει ρόλο

{\rtf1\ansi\ansicpg1253\deff0\deflang1032{\fonttbl{\f0\fswiss\fcharset0 Arial;}{\f1\fswiss\fprq2\fcharset0 Verdana;}{\f2\fmodern\fprq1\fcharset0 Courier New;}{\f3\fswiss\fcharset161{\*\fname Arial;}Arial Greek;}}
{\colortbl ;\red255\green0\blue0;\red255\green255\blue0;}
{\*\generator Msftedit 5.41.15.1507;}\viewkind4\uc1\pard\cf1\lang1033\f0\fs20 This is red\cf0\par
This is black\par
\cf2 This is yellow\cf0\par
\fs24 This is 12pt\fs20\par
\fs32 This is 16pt\fs20\par
\f1 This is Verdana\f0\par
\f2 This is courier\f0\par
\cf1\b\f1\fs28 This is Verdana, red, bold, at 14pt\cf0\lang1032\b0\f3\fs20\par
}

Link to comment
Share on other sites

Wizard! είσαι τρομερός. Μόλις έδωσες λύση στο πρόβλημα μου. Ευχαριστώ πολύ.

Μου το είχες πει και προηγουμένως πως πρέπει να βρω τα specs του rtf αλλά το έψαξα λίγο και θεώρησα πως δεν πρόκειται να τα καταφέρω. Το παράδειγμα σου όμως είναι πολύ καλό και κατάλαβα τον τρόπο που δουλεύει.

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

 Share

×
×
  • Create New...

Important Information

By using this site, you agree to our Terms of Use.