PDA

View Full Version : سوال : کار با BPL ها



afsoon_k77
سه شنبه 15 دی 1388, 09:08 صبح
سلام
من چند سوال در مورد BPL ها دارم لطفا من و در این موارد راهنمایی کنید
1_ چرا از interFace ها در BPL استفاده میشه و اصلا لازم که از interFace استفاده کنیم
2_ روند بار گذاری ایستا در BPL ها چگونه است ؟ و در این حالت چطور میشه به یک فرم دسترسی پیدا کرد
3_ تفاوت بارگذاری ایستا و پویا از نظر کاربرد چیه ؟ و کدام روش بهتر و ساده تر
4_ چگونه میشه به یک متغیر در BPL دسترسی پیدا کرد


با تشکر

vcldeveloper
سه شنبه 15 دی 1388, 18:00 عصر
1_ چرا از interFace ها در BPL استفاده میشه و اصلا لازم که از interFace استفاده کنیم
در همه یونیت های پاسکال بخش Interface وجود داره. علت وجودش هم ساده هست، این بخش رابط این یونیت با سایر بخش های پروژه رو مشخص میکنه.


روند بار گذاری ایستا در BPL ها چگونه است ؟
می تونید پروژه به صورت Build with runtime packages بسازید، و نام BPL مورد نظرتان را به لیست مربوطه اضافه کنید. البته می تونید مثل یک DLL معمولی هم یکی از توابع موجود در BPL را در برنامه بصورت یک تابع external تعریف کنید، تا BPL بصورت ایستا لود بشه.


و در این حالت چطور میشه به یک فرم دسترسی پیدا کرد؟
http://delphi.about.com/od/objectpascalide/l/aa012301a.htm


تفاوت بارگذاری ایستا و پویا از نظر کاربرد چیه ؟ و کدام روش بهتر و ساده تر
رجوع کنید به بارگزاری ایستا و پویا DLLها. فایل های BPL نوعی DLL هستند. بهتر بودن هر کدام از این روش ها هم بستگی به نوع استفاده شما داره.


چگونه میشه به یک متغیر در BPL دسترسی پیدا کرد
می تونید در داخل یک BPL به کلاس های تعریف شده در آن، و توابع آن دسترسی داشته باشید:
http://edn.embarcadero.com/article/27178

afsoon_k77
چهارشنبه 16 دی 1388, 10:32 صبح
ممنون
یک سوال دیگه هم داشتم
من دو تا package دارم که توی یکیشون میخوام از اون یکی دیگه استفاده کنم . البته بصورت بارگذاری ایستا
اما در این حالت چک باکس RunTime Package در Option پروژه فعال نیست تا BPL بسته دیگرو توش ADD کنم
شما میدونید باید چکار کنم ؟

با تشکر

vcldeveloper
چهارشنبه 16 دی 1388, 16:58 عصر
باید Package اول رو که میخواید در Package دوم استفاده کنید، به لیست Required اون Package دوم اضافه کنید.

afsoon_k77
شنبه 19 دی 1388, 13:15 عصر
سلام
من باز هم با BPL ها مشکل پیدا کردم
من دو تا Package دارم که با هم در ارتباطند بعد از اینکه Package اول ADD می کنم موقع کامپایل Pack دوم خطای زیرو میده



[DCC Error] PackDialogs.dpk(46): E2199 Packages 'fs12' and 'ProcPack' both contain unit 'fs_iinirtti'


ممنون می شم اگر کمک کنید این خطا رو رفع کنم

vcldeveloper
شنبه 19 دی 1388, 15:36 عصر
دو Package متفاوت نمیتونند یونیت های با نام یکسان داشته باشند.

afsoon_k77
یک شنبه 20 دی 1388, 13:30 عصر
من که یونیتش ننوشتم من فقط از کامپوننت fastreport تو هر دو packag ام استفاده کردم
و یونیت های FRXClass و چند تای دیگه به قسمت uses یونیت های خودم اضافه شده

afsoon_k77
یک شنبه 20 دی 1388, 13:33 عصر
یک سوال دیگه هم داشتم برای اینکه بتونم دو تا Packag ام بصورت دوطرفه با هم ارتباط بدم باید چکار کنم ؟ یعنی هم p1 با P2 ارتباط داشته باشه هم P2 با P1

با تشکر

vcldeveloper
یک شنبه 20 دی 1388, 17:13 عصر
دو Package نمیدتونند وابستگی حلقوی به هم داشته باشند، یعنی هر دو به هم وابسته باشند. باید کدی که موجب وابستگی هر دو به هم هست را از آنها جدا کنید، و در یک Package دیگه قرار بدید، بعد اون Package سوم را به عنوان Package مورد نیاز Packageهای اول و دوم، در بخش Required آن Packageها تعریف کنید.

afsoon_k77
چهارشنبه 23 دی 1388, 09:36 صبح
سلام بازم یک سوال دیگه
موقع استفاده از BPL بصورت ایستا در برنامه Exe اول اجرا خطای
the Memory manager Connot be changed after it has been used
میده . چطور میشه رفعش کرد

با تشکر

vcldeveloper
چهارشنبه 23 دی 1388, 13:18 عصر
برنامه شما و BPL باید هر دو از Memory Managerهای یکسان استفاده کنند. کامپایلری هم که استفاده می کنید، باید در هر دو یکسان باشه؛ پس:
نمی تونید برنامه را با دلفی 2010 کامپایل کنید، BPL را با دلفی 2009؛ یا نمی تونید در برنامه از FastMM به عنوان مدیر حافظه استفاده کنید، و در BPL از مدیر حافظه قدیمی دلفی.

afsoon_k77
سه شنبه 29 دی 1388, 12:55 عصر
سلام
در حالت باگذاری ایستا BPL ها موقع اجرای برنامه EXE بر روی سیستم دیگه لازم که غیر از BPL هایی که خودم ساختم سایر BPL های موجود در دلفی و کامپوننتاش همراه برنامه EXE باشه می خواستم بدونم راهی هست که فقط BPL هایی که خودم طراحی کردم مورد نیاز باشه و بقیه BPL ها رو کپی نکنم


با تشکر

vcldeveloper
سه شنبه 29 دی 1388, 16:33 عصر
در حالت باگذاری ایستا BPL ها موقع اجرای برنامه EXE بر روی سیستم دیگه لازم که غیر از BPL هایی که خودم ساختم سایر BPL های موجود در دلفی و کامپوننتاش همراه برنامه EXE باشه می خواستم بدونم راهی هست که فقط BPL هایی که خودم طراحی کردم مورد نیاز باشه و بقیه BPL ها رو کپی نکنم
هر BPL ایی که میخواید جدای از فایل EXE برنامه تون باشه، باید در لیست Compile with runtime packages اسمش وجود داشته باشه؛ هر Packageایی که اسمش در این لیست نباشه، در داخل EXE کامپایل میشه، و نیازی به فایل BPLاش در کنار فایل EXE نیست.

afsoon_k77
سه شنبه 29 دی 1388, 16:54 عصر
منم فقط همون Package ها رو میذارم ولی بازم موقع اجرا یک سری BPL دیگر رو هم لازم داره

vcldeveloper
سه شنبه 29 دی 1388, 23:32 عصر
اسمشون چی هست؟