ولی آیا به نظر شما استفاده از کامپوننت های غیر ویژوال هم همینطوره؟
وقتی یک کامپوننت Visual روی فرم قرار می گیره ، حجم فرم رو افزایش میده و چون فرمها به عنوان رسورس در فایل EXE ذخیره میشن ، حجم برنامه نهایی رو هم بالا خواهند برد ...
برای یک کامپوننت در حالت معمول خود کامپوننت و Unit اون می تونه توی افزایش حجم برنامه تاثیر داشته باشه ...
فایل DFM پروژه درواقع یک فایل متنی هست که مشخصات فرم و اجزای درون اون رو نگهداری میکنه ، مسلما یک کامپوننت غیر ویژوال هم به عنوان یک شیء در فرم داریا خواصی هست که باید ذخیره بشه ، پس اون هم می تونه حجم فایل رو افزایش بده اما این حجم فایل برای کامپوننتهای غیرویژوال که عموما خواص کمتری نسبت به کامپوننتهای ویژوال دارن شاید کمتر محسوس باشه ولی فرق چندانی بینشون نیست !
یکی از راه های کاهش حجم برنامه حذف Unit های بی استفاده هست ، به عنوان مثال فرض کنید کامپوننتی روی فرم گذاشتید و به همین خاطر دلفی Unit مربوط به اون رو به بخش Uses اضافه کرد ، یونیت اضافه شده همراه سایر جزئیات برنامه کامپایل شده و حجم برنامه رو افزایش میده ، حالا اگر به هر دلیلی دیگه نخواستید از کامپوننت استفاده کنید ، وقتی اون رو حذف می کنید دلفی Unit اون رو از بخش Uses حذف نمی کنه ، و خودتون باید اون رو حذف کنید ...
مورد دیگه که خیلی کم بهش اهمیت داده میشه ، نحوه ی کدنویسی هست ، به عنوان مثال فرض کنید می خواید مسیر فایل اجرایی برنامه رو بدست بیارید ، برای این کار چند راه دارید که دو تاش رو مثال می زنیم :
1. استفاده از Application.ExeName :
ExtractFilePath(Application.ExeName);
2. استفاده از (ParamStr(0 :
ExtractFilePath(ParamStr(0));
در مورد اول برای استفاده از Application به یونیت Forms نیاز داریم اما برای دومی به یونیت جدایی نیاز نیست ( ParamStr در یونیت System هست که جزء یونیتهای اصلی برنامه هست و نیاز به Use کردن نداره ) ، با این کار می تونیم مثلا یونیت Forms رو از برنامه حذف کنیم که این کار باعث حدود 200 کیلوبایت صرفه جویی در حجم برنامه میشه ...
البته این فقط یک مثال بود و برای کار با برنامه در اکثر جاها نیاز به یونیت Forms داریم ! ولی برای برنامه های کوچک و خاصی میشه اون رو نادیده گرفت ، مثلا یک ویروس ! شاید نیاز به این یونیت نداشته باشه و البته ویروس به حجم کم هم نیاز داره ...
به هر حال برای کارایی بهتر و حجم کمتر باید اولا کامپوننتها و یونیتهای اونها رو بشناسیم و دوما کمی در کدنویسی بهینه تر عمل کنیم ... ، موردی اولی که اشاره کردم در مورد حذف کامپوننت و حذف یونیت مربوط به اون میتونه خیلی در کاهش حجم برنامه موثر باشه ...
موفق باشید ...