PDA

View Full Version : بازسازی bpl های ذاتی دلفی



mrahda
شنبه 11 شهریور 1385, 12:13 عصر
اگر یکی از یونیت های ذاتی دلفی را تغییر دهیم و بعد پروژه خود را باحالت Build with RunTime Packages بسازیم(جهت کم کردن حجم فایل exe)، باید فایل bpl مربوط به آن یونیت را بازسازی کنیم.
چگونه اینکار انجام می پذیرد؟

Inprise
شنبه 11 شهریور 1385, 12:20 عصر
من معنی یونیت و bpl ذاتی رو متوجه نمیشم ؛ اما اگر کد منبع VCL‌رو تغییر بدی طبیعتا" باید برای ساختن کتابخانه های زمان اجرای جدید ، VCL‌ رو دوباره کامپایل کنی ؛

VCL چند بخش نسبتا" مجزا داره که برای اعمال تغییر در یکی از اونها ، تا وقتی پروتو تایپ و ساختارهای اصلی رو تغییر نداده باشی نیاز به کامپایل مجدد تمام اعضا نیست ؛ و متاسفانه بخشهائی از VCL رو نمیشه مجددا" کامپایل و استفاده کرد ، بخش RTL یکی از اونهاست ( لااقل من اینکار رو انجام ندادم و فکر میکنم امکانش نیست ، و اگر کسی موفق شده اینکار رو انجام بده حتما" براش workaround ای هم در نظر گرفته ، چون مستقیما امکانش نیست )

برای کامپایل مجدد هر کدام از زمان اجراهای VCL هم کافیه makefile اش رو اجرا کنی . میتونی با ویرایش makefile فایلهای خروجی ، یا یونیتهائی که قرار هست دوباره کامپایل بشن و ...رو تغییر بدی . قاعدتا" برای اینکه این فرآیند موفقیت آمیز باشه باید به اندازه کافی با تجربه باشی و ساختار VCL رو به خوبی بشناسی . نهایتا" این روش چیزی نیست که به کاربران تازه کار یا متوسط پیشنهاد بشه ؛ شاید بازنویسی روتینهای مورد نظر و کپسوله کردنش در کلاس های جدید و استفاده از اونها عملی تر و به واقعیت نزدیکتر باشه .

mrahda
شنبه 11 شهریور 1385, 13:36 عصر
من فایل Dialogs.pas دلفی را دستکاری کرده‌ام. برای نمایش بهتر پنجره های محاوره ای در حالت فارسی.
وقتی که پروژه بطور عادی ساخته می شود، کارها طبیعی است. ولی وقتی گزینه Build wirh runtime packages را فعال می کنم، عبارات پنجره ها بصورت کدهایی است که معلوم نیست از کجا می آورد.
فکر می کنم مشکل مربوط به bpl ای باشد که این یونیت در آن ذخیره شده است.
حالا یک سوال دیگر:
اگر بخواهم فقط همین یک یونیت در فایل exe ذخیره شود، و مابقی در bpl ها بماننند چه باید بکنم؟ یعنی اینکه برخی از یونیت ها و یا bpl ها از فایل exe جدا شوند!

Inprise
شنبه 11 شهریور 1385, 13:46 عصر
الف. بهتر هست بجای دستکاری سورس دیالوگ ها ، کلاسهائی رو مشتق کنی و کلاسهای خودت رو بازنویسی کنی و از اونها استفاده کنی

ب. اگر میخواهی بعضی از یونیتها استاتیک لینک بشن و بعضیها دینامیک ( یعنی با استفاده از bpl زمان اجرا ) پکیج زمان اجرای یونیت مورد نظرت رو از لیست پکیجهای زمان اجرا حذف کنی . مثلا اگر میخواهی rtl استاتیک لینک بشه و بقیه همراه با bpl های runtime کافی هست که گزینهء rtl رو از لیست پکیجهای زمان اجرا خذف کنی ( وقتی گزینه Build with Runtime Packages رو میزنی کمی پائینتر لیستی حاوی بسته های زمان اجرای معتبر هست ، پکیج مورد علاقه ات رو حذف کن . مشکلت حل میشه ؛ هر چند که در کل راه حل خوبی نیست )