БПЛ вс. ДЛЛ у Делпхи апликацијама за програмирање

click fraud protection

Када пишемо и састављамо Делпхи апликацију, обично генеришемо извршну датотеку - самосталну Виндовс апликацију. За разлику од Висуал Басиц-а, на пример, Делпхи производи апликације умотане у компактне еке датотеке, без потребе за гломазним рунтиме библиотекама (ДЛЛ-овима).

Покушајте ово: покрените Делпхи и саставите тај подразумевани пројекат с једним празним обрасцем, то ће произвести извршну датотеку од око 385 КБ (Делпхи 2006). Сада идите на Пројект - Опције - Пакети и потврдите избор у пољу за потврду „Састави са пакетима за вријеме извођења“. Компајлирајте и покрените. Воила, величина еке-а се сада креће око 18 КБ.

Подразумевано је искључено „Састављање помоћу рунтиме пакета“ и сваки пут када направимо Делпхи апликацију, преводилац повезује сав код који ваш апликација мора покретати директно у ваш извршна датотека апликације. Ваша апликација је самосталан програм и не захтева никакве датотеке подршке (попут ДЛЛ-ова) - зато су Делпхи еке толико велике.

Један од начина стварања мањи Делпхи програми је да се искористе „Борланд пакет библиотеке“ или БПЛ укратко.

instagram viewer

Шта је пакет?

посебна библиотека динамичких веза коју користе Делпхи апликације

Пакети нам омогућавају да делове наше апликације сместимо у одвојене модуле који се могу делити у више апликација. Пакети такође обезбеђују начин инсталирања (прилагођених) компоненти у Делпхи-јеву ВЦЛ палету.

Због тога Делпхи у основи може направити две врсте пакета:

  • Пакети за покретање - пружају функционалност када корисник покреће апликацију - дјелују слично као стандардни ДЛЛ-ови.
  • Пакети дизајнерског времена - користе се за инсталирање компоненти у Делпхи ИДЕ и креирање посебних уређивача својстава за прилагођене компоненте.
Дизајнерски пакети

Од овог тренутка овај чланак ће се бавити пакетима који се покрећу и колико могу помоћи Делфи програмеру.

Један погрешан мит: од вас се не захтева да будете Делпхи компонентни програмер да искористите предности пакета. Почетни Делпхи програмери требали би покушати радити с пакетима - боље ће разумјети како пакети и Делпхи раде.

Када и када не користите пакете

ДЛЛ-ови се најчешће користе као збирка процедура и функција које могу да позивају други програми. Поред писања ДЛЛ-ова са прилагођеним рутинама, можемо ставити и комплетан Делпхи образац у ДЛЛ (на пример, АбоутБок образац). Још једна уобичајена техника је да се ДЛЛ не похрањује само у ресурсе. Више информација о начину рада Делпхија са ДЛЛ-овима потражите у овом чланку: ДЛЛ-ови и Делпхи.

Пре него што наставимо са упоређивањем ДЛЛ-ова и БПЛ-ова, морамо разумети два начина повезивања кода у извршну датотеку: статичко и динамичко повезивање.

Статично повезивање значи да када се састави Делпхи пројекат, сав код који ваша апликација захтева директно је повезан са извршном датотеком ваше апликације. Резултирајући еке датотека садржи сву шифру из свих јединица које су укључене у пројекат. Превише би кода, могло би се рећи. Подразумевано користи клаузулу за нову листу јединица обрасца с више од 5 јединица (Виндовс, Мессагес, СисУтилс, ...). Међутим, повезивач Делпхи је довољно паметан да повезује само минимум кода у јединицама које пројекат заиста користи. Уз статичко повезивање наша апликација је самосталан програм и не захтева никакве пратеће пакете или ДЛЛ датотеке (за сада заборавите БДЕ и АцтивеКс компоненте). У Делфима статичко повезивање је подразумевано.

Динамично повезивање је као рад са стандардним ДЛЛ-овима. Односно, динамичко повезивање пружа вишеструку функционалност апликације без повезивања кода директно за сваку апликацију - сви потребни пакети се учитавају на време извођења. Највећа ствар код динамичког повезивања је та што је учитавање пакета путем ваше апликације аутоматско. Не морате да пишете код да бисте учитали пакете нити морате да мењате код.

Једноставно потврдите избор у пољу за потврду „Састави са пакетима рунтиме пакета“ на пројекту | Опције дијалога. Следећи пут када направите апликацију, код вашег пројекта биће динамички повезан са пакетима извођења, уместо да јединице имају статички повезане у извршну датотеку.

instagram story viewer