PDA

View Full Version : تفاوت میان Uses ها



m-khorsandi
شنبه 31 اردیبهشت 1384, 15:22 عصر
درود
کسی تفاوت میان Uses ایی که در بالای یک Unit یعنی بعد از Interface قرار داره
با Uses ایی که در پائین تر و بعد از Implementation قرار دارد رو میدونه؟

ممنون

vcldeveloper
یک شنبه 01 خرداد 1384, 03:58 صبح
یونیت هایی که در بخش Interface تعریف میشند در تمام یونیت قابل استفاده هستند. در بخش interface هم میشه از نوع ها (types) و const های اونها استفاده کرد. یونیت هایی که در بخش Implement تعریف میشند، فقط در همین بخش قابل استفاده هستند.

m-khorsandi
دوشنبه 02 خرداد 1384, 11:13 صبح
ممنون از راهنمائیتون.

m-khorsandi
دوشنبه 02 خرداد 1384, 14:00 عصر
:oops:

پس در اینصورت ما دو تا امکان برای استفاده از سایر یونیتها و متدها و فیلدهاشون داریم
Uses بالا این امکان رو به ما میده که در تمام برنامه میتونیم از محتویات اون یونیت استفاده کنیم.
Uses پائین این امکان رو به ما میده که فقط در همون بخش از اون یونیت استفاده کنیم
با توجه به تعاریف بالا چه نیازی هست ما از Uses پائین استفاده کنیم، زمانی که درUses بالا
دست ما خیلی باز تر هست.آیا استفاده از Uses بالا و پائین تاثیری روی حجم فایل اجرایی یا
حافظه مورد استفاده دارند؟

Delphi Skyline
دوشنبه 02 خرداد 1384, 14:47 عصر
با توجه به تعاریف بالا چه نیازی هست ما از Uses پائین استفاده کنیم، زمانی که درUses بالا
دست ما خیلی باز تر هست.آیا استفاده از Uses بالا و پائین تاثیری روی حجم فایل اجرایی یا
حافظه مورد استفاده دارند؟
از نظر حجم رو که نمی دونم .
یک uses به نام xpman است که ظاهر فرم را xp ای می کند . شاید شما خواستید فقط form1 اکس پی ای شود و در اینجا باید از USING پایین استفاده کنید .

m-khorsandi
دوشنبه 02 خرداد 1384, 15:21 عصر
و اگه تو Uses پائین استفاده کنم Procedure هام XP میشن!!!!!؟

Delphi Skyline
دوشنبه 02 خرداد 1384, 16:44 عصر
و اگه تو Uses پائین استفاده کنم Procedure هام XP میشن!!!!!؟
من منظورم شکل برنامه و دکمه ها XP ایی بودن . اگر بخوای اونطوری فرض کنید بله .

ebnsina
دوشنبه 02 خرداد 1384, 20:08 عصر
Uses بالا از سربار بیشتری برخورداره و توصیه میشه که فقط در موارد لازم توی اون معرفی کنی.
ولی Uses پایین با سربار کمتر میتونه کمک خوبی به بهتر و سبکتر اجرا شدن برنامه بشه.

البته تمام این نکات وقتی خودشون رو نشون میدن که برنامه بزرگ شده باشه و تعداد Unit ها زیاد باشه.

موفق باشید
:flower:

Delphi Skyline
دوشنبه 02 خرداد 1384, 20:39 عصر
البته تمام این نکات وقتی خودشون رو نشون میدن که برنامه بزرگ شده باشه و تعداد Unit ها زیاد باشه.
کاملا درسته :موفق:

m-khorsandi
دوشنبه 02 خرداد 1384, 21:08 عصر
ممنون از همگی.

Delphi Skyline
دوشنبه 02 خرداد 1384, 21:25 عصر
ممنون از همگی.
خواهش می کنم . کاری نکردم :oops:

vcldeveloper
چهارشنبه 04 خرداد 1384, 02:15 صبح
Uses بالا این امکان رو به ما میده که در تمام برنامه میتونیم از محتویات اون یونیت استفاده کنیم.
به جمله زیر توجه کنید:

یونیت هایی که در بخش Interface تعریف میشند در تمام یونیت قابل استفاده هستند. در بخش interface هم میشه از نوع ها (types) و const های اونها استفاده کرد.
فقط در داخل همون یونیت، نه کل برنامه...نکته بعد هم اینه که از uses در interface موقعی استفاده میشه که به نوع داده ها و ثابت های یونیت مرج در بخش interface برنامه خودمون نیاز داشته باشیم.


چه نیازی هست ما از Uses پائین استفاده کنیم، زمانی که درUses بالا
دست ما خیلی باز تر هست
یکی از استفاده هاش اینه:
راهنمای دلفی...


When units reference each other directly or indirectly, the units are said to be mutually dependent. Mutual dependencies are allowed as long as there are no circular paths connecting the uses clause of one interface section to the uses clause of another. In other words, starting from the interface section of a unit, it must never be possible to return to that unit by following references through interface sections of other units. For a pattern of mutual dependencies to be valid, each circular reference path must lead through the uses clause of at least one implementation section.

In the simplest case of two mutually dependent units, this means that the units cannot list each other in their interface uses clauses. So the following example leads to a compilation error:

unit Unit1;
interface
uses Unit2;
...
unit Unit2;
interface
uses Unit1;
...

However, the two units can legally reference each other if one of the references is moved to the implementation section:

unit Unit1;
interface
uses Unit2;
...
unit Unit2;
interface
...
implementation
uses Unit1;
...

To reduce the chance of circular references, it's a good idea to list units in the implementation uses clause whenever possible. Only when identifiers from another unit are used in the interface section is it necessary to list that unit in the interface uses clause.

m-khorsandi
چهارشنبه 04 خرداد 1384, 08:59 صبح
آقای کشاورز واقعا ممنونم.