BPL vs. DLL στις εφαρμογές προγραμματισμού των Δελφών

Όταν γράφουμε και συντάσσουμε μια εφαρμογή Delphi, δημιουργούμε συνήθως ένα εκτελέσιμο αρχείο - μια αυτόνομη εφαρμογή των Windows. Σε αντίθεση με τη Visual Basic, για παράδειγμα, Οι Δελφοί παράγουν εφαρμογές τυλιγμένες σε συμπαγή αρχεία exe, χωρίς την ανάγκη για ογκώδεις βιβλιοθήκες χρόνου εκτέλεσης (DLL's).

Δοκιμάστε αυτό: ξεκινήστε τους Delphi και συντάξτε αυτό το προεπιλεγμένο έργο με μια κενή φόρμα, αυτό θα δημιουργήσει ένα εκτελέσιμο αρχείο περίπου 385 KB (Delphi 2006). Τώρα πηγαίνετε στο Project - Options - Packages και επιλέξτε το πλαίσιο ελέγχου Build with runtime packages. Σύνταξη και εκτέλεση. Voila, το μέγεθος του exe είναι τώρα περίπου 18 KB.

Από προεπιλογή, το 'Build with runtime packages' δεν έχει επιλεγεί και κάθε φορά που κάνουμε μια εφαρμογή Delphi, ο μεταγλωττιστής συνδέει όλο τον κώδικα που χρειάζεται η εφαρμογή σας για να τρέξει απευθείας στο εκτελέσιμο αρχείο της εφαρμογής. Η εφαρμογή σας είναι ένα αυτόνομο πρόγραμμα και δεν απαιτεί κανένα υποστηρικτικό αρχείο (όπως DLL) - γι 'αυτό οι Delphi exe είναι τόσο μεγάλες.

instagram viewer

Ένας τρόπος δημιουργίας μικρότερα προγράμματα των Δελφών είναι να επωφεληθείτε από τις «βιβλιοθήκες πακέτων Borland» ή από τα BPL με λίγα λόγια.

Τι είναι ένα πακέτο;

ειδική βιβλιοθήκη δυναμικής σύνδεσης που χρησιμοποιείται από εφαρμογές Delphi

Τα πακέτα μας επιτρέπουν να τοποθετούμε τμήματα της εφαρμογής μας σε ξεχωριστές ενότητες που μπορούν να μοιράζονται σε πολλαπλές εφαρμογές. Τα πακέτα επίσης παρέχουν ένα μέσο εγκατάστασης (προσαρμοσμένων) στοιχείων στην παλέτα VCL των Delphi.

Ως εκ τούτου, βασικά δύο τύποι πακέτων μπορούν να γίνουν από τους Δελφούς:

  • Τα πακέτα χρόνου εκτέλεσης - παρέχουν λειτουργικότητα όταν ένας χρήστης εκτελεί μια εφαρμογή - λειτουργούν σαν τα πρότυπα DLL.
  • Πακέτα χρόνου σχεδιασμού - χρησιμοποιούνται για την εγκατάσταση στοιχείων στο Delphi IDE και να δημιουργήσετε ειδικούς επεξεργαστές ιδιοτήτων για προσαρμοσμένα στοιχεία.
Σχεδιασμός πακέτων

Από αυτό το σημείο αυτό το άρθρο θα ασχοληθεί με τα πακέτα χρόνου εκτέλεσης και τον τρόπο με τον οποίο μπορούν να βοηθήσουν τον προγραμματιστή Delphi.

Ένα λάθος mit: δεν απαιτείται να είστε α Ανάπτυξη συστατικών στοιχείων Delphi για να επωφεληθείτε από τα πακέτα. Αρχάριοι προγραμματιστές Delphi θα πρέπει να προσπαθήσουν να δουλέψουν με πακέτα - θα κατανοήσουν καλύτερα το πώς δουλεύουν τα πακέτα και οι Δελφοί.

Πότε και πότε δεν χρησιμοποιείτε πακέτα

Τα DLL χρησιμοποιούνται συνήθως ως συλλογές διαδικασιών και λειτουργιών που μπορούν να καλούν άλλα προγράμματα. Εκτός από τη σύνταξη αρχείων DLL με προσαρμοσμένες ρουτίνες, μπορούμε να τοποθετήσουμε μια πλήρη φόρμα Delphi σε ένα αρχείο DLL (για παράδειγμα μια φόρμα AboutBox). Μια άλλη κοινή τεχνική είναι να αποθηκεύσετε τίποτα εκτός των πόρων σε DLL. Περισσότερες πληροφορίες σχετικά με τον τρόπο λειτουργίας του Delphi με DLLs βρίσκονται σε αυτό το άρθρο: DLL και Δελφούς.

Προτού προχωρήσουμε στη σύγκριση μεταξύ DLL και BPL, πρέπει να κατανοήσουμε δύο τρόπους σύνδεσης κώδικα σε ένα εκτελέσιμο αρχείο: στατική και δυναμική σύνδεση.

Στατική σύνδεση σημαίνει ότι όταν δημιουργείται ένα έργο Delphi, όλος ο κώδικας που απαιτείται από την εφαρμογή σας συνδέεται άμεσα με το εκτελέσιμο αρχείο της εφαρμογής σας. Η προκύπτουσα exe Το αρχείο περιέχει όλο τον κώδικα από όλες τις μονάδες που συμμετέχουν σε ένα έργο. Πάρα πολύ κωδικό, μπορείτε να πείτε. Από προεπιλογή, χρησιμοποιείται ρήτρα για μια νέα λίστα μονάδων που περιέχει περισσότερες από 5 μονάδες (Windows, Μηνύματα, SysUtils, ...). Ωστόσο, ο σύνδεσμος Delphi είναι αρκετά έξυπνος ώστε να συνδέει μόνο το ελάχιστο κώδικα στις μονάδες που χρησιμοποιούνται πραγματικά από ένα έργο. Με τη στατική σύνδεση η εφαρμογή μας είναι ένα αυτόνομο πρόγραμμα και δεν απαιτεί πακέτα υποστήριξης ή DLL (ξεχάστε τα στοιχεία BDE και ActiveX για τώρα). Στους Δελφούς, στατική σύνδεση είναι η προεπιλογή.

Δυναμική σύνδεση είναι σαν να δουλεύεις με πρότυπα DLL. Δηλαδή, η δυναμική σύνδεση παρέχει λειτουργικότητα σε πολλαπλά εφαρμογές χωρίς δέσμευση του κώδικα απευθείας σε κάθε εφαρμογή - φορτώνονται όλα τα απαιτούμενα πακέτα χρόνου εκτέλεσης. Το πιο σημαντικό πράγμα για τη δυναμική σύνδεση είναι ότι η φόρτωση των πακέτων από την εφαρμογή σας είναι αυτόματη. Δεν χρειάζεται να γράφετε κώδικα για να φορτώσετε τα πακέτα ούτε πρέπει να αλλάξετε τον κωδικό σας.

Ελέγξτε απλά το πλαίσιο ελέγχου "Δημιουργία με πακέτα χρόνου εκτέλεσης" που βρίσκεται στο Project | Επιλογέςπαράθυρο διαλόγου. Την επόμενη φορά που θα χτίσετε την εφαρμογή σας, ο κώδικας του έργου σας θα συνδεθεί δυναμικά με τα πακέτα χρόνου εκτέλεσης και όχι με τις μονάδες που θα συνδεθούν στατικά στο εκτελέσιμο αρχείο σας.

instagram story viewer