Παιχνίδια και άλλοι τύποι εφαρμογών που χρησιμοποιούν αρχεία πολυμέσων όπως ήχους και κινούμενα σχέδια πρέπει να είναι είτε να διανέμουν τα επιπλέον αρχεία πολυμέσων μαζί με την εφαρμογή ή να ενσωματώσουν τα αρχεία μέσα στο εκτελέσιμο.
Αντί να διανείμετε ξεχωριστά αρχεία για τη χρήση της εφαρμογής σας, μπορείτε να προσθέσετε τα ακατέργαστα δεδομένα στην εφαρμογή σας ως πόρο. Στη συνέχεια, μπορείτε να ανακτήσετε τα δεδομένα από την εφαρμογή σας όταν χρειάζεται. Αυτή η τεχνική είναι γενικά πιο επιθυμητή, επειδή μπορεί να κρατήσει τους άλλους από το χειρισμό αυτών των πρόσθετων αρχείων.
Αυτό το άρθρο θα σας δείξει πώς να ενσωματώσετε (και να χρησιμοποιήσετε) αρχεία ήχου, βίντεο κλιπ, κινούμενα σχέδια και γενικότερα οποιοδήποτε είδος δυαδικών αρχείων σε εκτελέσιμο Delphi. Για τον πιο γενικό σκοπό, θα δείτε πώς να βάλετε ένα Αρχείο MP3 μέσα σε α Δελφοί exe.
Αρχεία πόρων (.RES)
Στο "Τα αρχεία πόρων έγιναν εύκολα"το άρθρο σας παρουσιάστηκε με πολλά παραδείγματα χρήσης bitmap, εικονιδίων και δρομείς
από τους πόρους. Όπως αναφέρεται σε αυτό το άρθρο, μπορούμε να χρησιμοποιήσουμε τον Επεξεργαστή εικόνας για τη δημιουργία και την επεξεργασία πόρων που αποτελούνται από τέτοιους τύπους αρχείων. Τώρα, όταν μας ενδιαφέρει η αποθήκευση διαφόρων τύπων (δυαδικών) αρχείων μέσα σε ένα εκτελέσιμο Δελφοί, θα πρέπει να ασχοληθούμε με αρχεία δέσμης πόρων (.rc), το Borland Resource Resource Compiler εργαλείο και άλλα.Συμπεριλαμβανομένων πολλών δυαδικών αρχείων στο εκτελέσιμο σας αποτελείται από 5 βήματα:
- Δημιουργήστε και / ή συγκεντρώστε όλα τα αρχεία που θέλετε να βάλετε σε ένα exe.
- Δημιουργήστε ένα αρχείο δέσμης πόρων (.rc) που περιγράφει τους πόρους που χρησιμοποιούνται από την εφαρμογή σας,
- Καταρτίστε το αρχείο δέσμης ενεργειών πόρων (.rc) για να δημιουργήσετε ένα αρχείο πόρων (.res),
- Συνδέστε το αρχείο μεταγλωττισμένων πόρων στο εκτελέσιμο αρχείο της εφαρμογής,
- Χρησιμοποιήστε το στοιχείο μεμονωμένων πόρων.
Το πρώτο βήμα θα πρέπει να είναι απλό, απλά να αποφασίσετε ποιοι τύποι αρχείων θέλετε να αποθηκεύσετε στο εκτελέσιμο αρχείο σας. Για παράδειγμα, θα αποθηκεύσουμε δύο τραγούδια .wav, ένα anim animations και ένα .mp3 τραγούδι.
Πριν προχωρήσουμε, παρουσιάζονται μερικές σημαντικές δηλώσεις σχετικά με τους περιορισμούς κατά την εργασία με τους πόρους:
- Η φόρτωση και η εκφόρτωση πόρων δεν είναι χρονοβόρα πράξη. Οι πόροι είναι μέρος του εκτελέσιμου αρχείου εφαρμογών και φορτώνονται ταυτόχρονα με την εκτέλεση της εφαρμογής.
- Όλη η (ελεύθερη) μνήμη μπορεί να χρησιμοποιηθεί κατά την φόρτωση / εκφόρτωση πόρων. Με άλλα λόγια, δεν υπάρχουν όρια στον αριθμό των πόρων που φορτώνονται ταυτόχρονα.
- Φυσικά, τα αρχεία πόρων διπλασιάζουν το μέγεθος ενός εκτελέσιμου αρχείου. Εάν θέλετε μικρότερα εκτελέσιμα, σκεφτείτε να τοποθετήσετε πόρους και τμήματα του έργου σας σε ένα βιβλιοθήκη δυναμικής σύνδεσης (DLL) ή περισσότερο εξειδικευμένη παραλλαγή.
Ας δούμε τώρα πώς να δημιουργήσετε ένα αρχείο που περιγράφει τους πόρους.
Δημιουργία αρχείου δέσμης ενεργειών (.RC)
Ένα αρχείο δέσμης πόρων είναι ένα απλό αρχείο κειμένου με την επέκταση .rc που αναφέρει τους πόρους. Το αρχείο δέσμης ενεργειών είναι σε αυτή τη μορφή:
ResName1 ResTYPE1 ResFileName1
ResName2 ResTYPE2 ResFileName2
...
ResNameX ResTYPEX ResFileNameX
...
RexName προσδιορίζει είτε ένα μοναδικό όνομα είτε μια ακέραια τιμή (ID) που προσδιορίζει τον πόρο. ResType περιγράφει τον τύπο του πόρου και το ResFileName είναι η πλήρης διαδρομή και το όνομα αρχείου στο αρχείο μεμονωμένων πόρων.
Για να δημιουργήσετε ένα νέο αρχείο δέσμης πόρων, απλά κάντε τα εξής:
- Δημιουργήστε ένα νέο αρχείο κειμένου στον κατάλογο έργων σας.
- Μετονομάστε το στο AboutDelphi.rc.
Στο αρχείο AboutDelphi.rc, έχετε τις ακόλουθες γραμμές:
Ρολόι WAVE "c: \ mysounds \ projects \ clock.wav"
MailBeep WAVE "c: \ windows \ media \ newmail.wav"
Cool AVI cool.avi
Intro RCDATA introsong.mp3
Το αρχείο δέσμης ενεργειών ορίζει απλώς τους πόρους. Μετά τη δεδομένη μορφή, το σενάριο AboutDelphi.rc αναφέρει δύο αρχεία .wav, ένα animation .avi και ένα τραγούδι .mp3. Όλες οι δηλώσεις σε ένα αρχείο .rc συνδέουν ένα αναγνωριστικό όνομα, τύπο και όνομα αρχείου για έναν συγκεκριμένο πόρο. Υπάρχουν περίπου δώδεκα προκαθορισμένοι τύποι πόρων. Αυτά περιλαμβάνουν εικονίδια, bitmap, δρομείς, κινούμενα σχέδια, τραγούδια κλπ. Το RCDATA ορίζει τους γενικούς πόρους δεδομένων. Το RCDATA σας επιτρέπει να συμπεριλάβετε έναν ακατέργαστο πόρο δεδομένων για μια εφαρμογή. Οι πόροι ακατέργαστων δεδομένων επιτρέπουν την εισαγωγή δυαδικών δεδομένων απευθείας στο εκτελέσιμο αρχείο. Για παράδειγμα, η παραπάνω δήλωση RCDATA ονομάζει τη δυαδική πηγή Intro της εφαρμογής και καθορίζει το αρχείο introsong.mp3, το οποίο περιέχει το τραγούδι για αυτό το αρχείο MP3.
Σημείωση: βεβαιωθείτε ότι διαθέτετε όλους τους πόρους που καταχωρείτε στο αρχείο .rc. Εάν τα αρχεία βρίσκονται μέσα στον κατάλογο έργων σας, δεν χρειάζεται να συμπεριλάβετε το πλήρες όνομα αρχείου. Στο αρχείο .rc μου τα τραγούδια .wav βρίσκονται * κάπου * στο δίσκο και τα τραγούδια κινούμενων εικόνων και MP3 βρίσκονται στον κατάλογο του έργου.
Δημιουργία αρχείου πόρων (.RES)
Για να χρησιμοποιήσετε τους πόρους που ορίζονται στο αρχείο δέσμης ενεργειών πόρων, πρέπει να το συντάξουμε σε αρχείο .res με τον μεταγλωττιστή πόρων του Borland. Ο μεταγλωττιστής πόρων δημιουργεί ένα νέο αρχείο με βάση τα περιεχόμενα του αρχείου δέσμης πόρων. Αυτό το αρχείο συνήθως έχει επέκταση .res. Ο σύνδεσμος Delphi θα μετασχηματίσει αργότερα το αρχείο .res σε ένα αρχείο αντικειμένου πόρων και στη συνέχεια θα το συνδέσει με το εκτελέσιμο αρχείο μιας εφαρμογής.
Το εργαλείο γραμμής εντολών Borland's Resource Compiler εντολών βρίσκεται στον κατάλογο Delphi Bin. Το όνομα είναι BRCC32.exe. Απλά πηγαίνετε στη γραμμή εντολών και πληκτρολογήστε brcc32 και πατήστε Enter. Δεδομένου ότι ο κατάλογος Delphi \ Bin βρίσκεται στο Path, ο μεταγλωττιστής Brcc32 χρησιμοποιείται και εμφανίζει τη βοήθεια χρήσης (δεδομένου ότι κλήθηκε χωρίς παραμέτρους).
Για να μεταγλωττίσετε το αρχείο AboutDelphi.rc σε αρχείο .res εκτελέστε αυτήν την εντολή στη γραμμή εντολών (στον κατάλογο έργων):
BRCC32 Σχετικά με το Delphi. RC
Από προεπιλογή, κατά την κατάρτιση πόρων, το BRCC32 ονομάζει το αρχείο .RES (compiled resource) με το όνομα βάσης του αρχείου .RC και το τοποθετεί στον ίδιο κατάλογο με το αρχείο .RC.
Μπορείτε να ονομάσετε το αρχείο πόρων οτιδήποτε θέλετε, αρκεί να έχει την επέκταση ".RES" και το όνομα αρχείου χωρίς την επέκταση δεν είναι ίδια με οποιαδήποτε μονάδα ή όνομα αρχείου έργου. Αυτό είναι σημαντικό επειδή, από προεπιλογή, κάθε έργο Delphi που μεταγλωττίζεται σε μια εφαρμογή έχει ένα αρχείο πόρων με το ίδιο όνομα με το αρχείο έργου, αλλά με την επέκταση .RES. Είναι καλύτερο να αποθηκεύσετε το αρχείο στον ίδιο κατάλογο με το αρχείο έργου σας.
Συμπεριλαμβανομένων των (Σύνδεση / Ενσωμάτωση) πόρων σε εκτελέσιμα αρχεία
Αφού συνδεθεί το αρχείο .RES με το εκτελέσιμο αρχείο, η εφαρμογή μπορεί να φορτώσει τους πόρους του κατά το χρόνο εκτέλεσης, όπως απαιτείται. Για να χρησιμοποιήσετε πραγματικά τον πόρο, θα πρέπει να κάνετε μερικές κλήσεις API των Windows.
Για να ακολουθήσετε το άρθρο, θα χρειαστείτε ένα νέο πρόγραμμα Delphi με ένα κενή φόρμα (το προεπιλεγμένο νέο έργο). Φυσικά προσθέστε το {$ R AboutDelphi. RES} στην κεντρική μονάδα του εντύπου. Είναι τελικά η ώρα να δούμε πώς να χρησιμοποιήσουμε πόρους σε μια εφαρμογή των Δελφών. Όπως αναφέρθηκε παραπάνω, προκειμένου να χρησιμοποιήσουμε τους πόρους που είναι αποθηκευμένοι σε ένα αρχείο exe, πρέπει να ασχοληθούμε με το API. Ωστόσο, μερικές μέθοδοι μπορούν να βρεθούν στα αρχεία βοήθειας Delphi που είναι ενεργοποιημένα ως "πόροι".
Για παράδειγμα, ρίξτε μια ματιά στο LoadFromResourceName μέθοδος ενός αντικειμένου TBitmap. Αυτή η μέθοδος εξάγει τον καθορισμένο πόρο bitmap και του αντιστοιχεί το αντικείμενο TBitmap. Αυτό είναι * ακριβώς * τι κάνει η κλήση API του LoadBitmap. Όπως πάντα, οι Δελφοί έχουν βελτιώσει μια κλήση λειτουργίας API ώστε να ταιριάζουν καλύτερα στις ανάγκες σας.
Τώρα, προσθέστε το στοιχείο TMediaPlayer σε μια φόρμα (όνομα: MediaPlayer1) και προσθέστε ένα TButton (Button2). Αφήστε το συμβάν OnClick να μοιάζει με:
Ένα μικρό πρόβλημα * είναι ότι η εφαρμογή δημιουργεί ένα τραγούδι MP3 σε μια μηχανή χρήστη. Θα μπορούσατε να προσθέσετε έναν κώδικα που διαγράφει αυτό το αρχείο πριν τερματιστεί η εφαρμογή.
Εξαγωγή *???
Φυσικά, κάθε άλλος τύπος δυαδικού αρχείου μπορεί να αποθηκευτεί ως τύπος RCDATA. Το TRsourceStream έχει σχεδιαστεί ειδικά για να μας βοηθήσει να αποσπάσουμε ένα τέτοιο αρχείο από ένα εκτελέσιμο αρχείο. Οι δυνατότητες είναι ατελείωτες: HTML σε ένα exe, EXE σε exe, κενή βάση δεδομένων σε ένα exe, και ούτω καθεξής.