جستجوی Namespace ها در دلفی

جستجوی Namespace ها
همان طور که میدانید یک یونیت برای استفاده از دیگر یونیت ها باید اسامی آنها را در لیست uses خود قید کند
در مورد یونیت هایی که Namespace آن ها به صورت صریح قید شده باشد
دامنه جستجو مشخص خواهد بود اما در مورد یونیت های generic کامپایلر باید دامنه جستجو را مشخص کند
برای مثال به عبارات زیر توجه کنید
Unit MyCompany.Programs.Units.MyUnit1; Uses MyCompany.Libs.Unit2, Unit3, Unit4;
تعاریف فوق مشخص میکنند که MyUnit1 عضوی از یک Namespace سه یونیت دیگر را مورد استفاده قرار داده است
در مورد unit2 مشکلی وجود ندارد به این دلیل که نام یونیت به طور کامل ذکر شده است
اما درمورد unit3 و unit4 کامپایلر باید عمل جستجو را انجام دهد
ترتیب جستجوی Namespace ها
- تنظیمات کامپایلر
- مکان های جستجو Namespace مربوط به فایل پروژه
- Project default namespace
- Namespace مربوط به یونیت جاری
فایل پروژه ممکن است به صورت اختیاری شامل لیستی از Namespace ها باشد که به وسیله علامت کا ما , از یکدیگر جدا شده و با علامت سمیکالن ; خاتمه یافته باشند
برای مثال ممکن است فایل پروژه شامل عبارات زیر باشد
Program MyCompany.Programs.MyProgram; Namespace MyCompany.Libs,Unitdegts, Mycompany.Libs.network;
در حالت کلی جستجوی Namespace ها به به ترتیب زیر صورت میگیرد
- Namespace مربوط به یونیت جاری ( در صورت وجود )
- Project default namespace ( در صورت وجود )
- Namespace هایی که توسط عبارت Namespace مشخص شده باشند
( به ترتیب از انتهای لیست مورد جستجو قرار میگیرند ) - Namespace هایی که از طریق تنظیمات کامپایلر مشخص شده باشند
باتوجه به مثال قبلی اگر یونیت برنامه دارای عبارت زیرباشد
Unit Mycompany,Programs.Units.MyUnit1;
کامپایلر دلفی عمل جستجو Namespace ها را به ترتیب زیر انجام خواهد داد
- Mycompany,Programs.Units
- Mycompany,Programs
- Mycompany.Libs.network
- Mycompany.Libs.UIWdgets
- Namespace هایی که از طریق تنظیمات کامپایلر مشخص شده اند
توجه داشته باشید که اگر یونیت جاری generic باشد
عمل جستجو از Project default namespace آغاز خواهد شد