Ερώτηση σχετικά με .txt και Building
-
Καλησπέρα σας μετά από καιρό, η προηγούμενη ανάρτησή μου ήταν πριν από κάποια χρόνια για ένα TichuCounter που ετοίμαζα τότε.
Αυτή τη φορά χρειάζομαι την βοήθειά σας σε κάτι άλλο και θα ήμουν ευγνώμων αν μου την δίνατε.
Λοιπόν όπως αναφέρω και στον τίτλο το πρόγραμμά μου περιέχει κάποια αρχεία *.txt μέσα. Για παράδειγμα χρησιμοποιώ τους κώδικες:
@QString mFilename= "/home/Draculation/Ebay/EbayProject/Perigrafi.txt";
QFile mFile(mFilename);@Αυτά τα αρχεία όμως είναι προκαθορισμένα να βρίσκονται στον σκληρό δίσκο μου στην θέση που λέει επάνω. Υπάρχει κάποιος τρόπος να τα περάσω μέσα στο πρόγραμμα σαν Resources ένα πράγμα ούτως ώστε στην τελική του μορφή το .exe να τα έχει μέσα;
Έκανα μία δοκιμή να τα περάσω Resources και να τα τρέξω ως:
@":/MyFiles/Perigrafi.txt"@
(κάπως έτσι τέλος πάντων) αλλά δεν ήταν επιτυχημένη, δηλαδή τα αρχεία δεν ανανεώντουσαν μέσα ήταν σαν να είναι κενάΠεριμένω νέα σας, ευχαρστώ πολύ.
-
Σαν μια ενημέρωση, το μόνο που κατάφερα ήταν να κάνω το πρόγραμμα να τρέχει σε κάθε υπολογιστή με Windows αλλά κατασκευάζει τα αρχεία με το που χρησιμοποιηθεί στον παρακάτω φάκελο
@QString mFilename= "C://Perigrafi.txt";
QFile mFile(mFilename);@Ακόμα όμως δεν βρήκα λύση να τα περάσω εσωτερικά μέσα στο πρόγραμμα ούτως ώστε να μην χρειάζεται να είναι διάσπαρτα μέσα στον C.
-
Αν και ίσως δεν κατάλαβα τι ακριβώς θέλεις να κάνεις, γιατί απλά δεν βάζεις το ίδιο το ΠΕΡΙΕΧΟΜΕΝΟ του αρχείου (για παράδειγμα) Perigrafi.txt μέσα στον πηγαίο κώδικα, βάζοντας το περιεχόμενο του αρχείου txt σε κάποιο container κειμένου;
-
Ευχαριστώ για την γρήγορη απάντηση Σταύρο.
Αν μία λέξη περιέγραφε κάπως το πρόγραμμά μου θα ήταν Database. Ουσιαστικά στο πρόγραμμά μου γράφω σε αρχεά και διαβάζω τα αρχεία αυτά(μορφή .txt). O λόγος που διάλεξα αρχεία είναι ότι κάθε φορά που τρέχω το πρόγραμμα δεν θέλω να χάνεται το περιεχόμενο που έχω γράψει. Απλά τα αρχεία αυτά πρέπει να ανοίγω κάθε φορά που τρέχει το πρόγραμμα από ένα path στην πρώτη περίπτωση το path αυτό είναι το :
@QString mFilename= "/home/Draculation/Ebay/EbayProject/Perigrafi.txt";@ενώ στην δεύτερη περίπτωση το path που έχω μέχρι και τώρα είναι το
@QString mFilename= "C://Perigrafi.txt";@
Αυτό που θέλω να κάνω είναι να περάσω αυτά τα αρχεία μέσα στο Release που θα γίνει στο πρόγραμμα ούτως ώστε να μην βγαίνουν αυτά τα αρχεία σε κανένα εξωτερικό σημείο (π.χ. στον Δίσκο C://) αλλά να είναι μέσα στο πρόγραμμα σαν Resources κάπως.
Το περιεχόμενο των αρχείων δεν είναι σταθερό, γιατί συνέχεια θα προστίθενται ή θα αφαιρούνται κείμενα μέσα από αυτά...
-
Νομίζω ότι θέτεις δύο αντικρουόμενους στόχους: από τη μια θέλεις χωριστά αρχεία, από την άλλη θέλεις αυτά να συμπεριληφθούν στο εκτελέσιμο αρχείο. Όχι ότι τεχνικά δεν γίνεται, αλλά δεν βλέπω το λόγο. Αφού το περιεχόμενο δεν είναι σταθερό, βάλε απλά τα αρχεία να βρίσκονται στο home directory (που το Qt το εντοπίζει εύκολα) και άλλαζε τα από εκεί όποτε θέλεις! Εγώ στην εφαρμογή μου QGreatstAtzenta http://stavros.filippidis.name/greek/eleuthero_logismiko.html εκεί αποθηκεύω το αρχείο της SQLite βάσης δεδομένων που δημιουργεί+χρησιμοποιεί η εφαρμογή. Δες τον κώδικα (GPLv3 or later) για το περισσότερα.