استخدام الوحدات Units

من ويكي الهندسة المعلوماتية
اذهب إلى: تصفح، ابحث

الوحدات Units أو المكتبات البرمجية

  • قد نحتاج في كثير من الأحيان إلى استخدام عدة إجرائيات أو توابع في أكثر من برنامج, وبدل نسخ هذه الإجرائيات ولصقها في بداية كل برنامج (كل كود) نستطيع أن نكتبها في مكتبة برمجية ونستدعي هذه المكتبة في برنامجنا وبالتالي نستطيع استدعاء الإجرائيات الموجودة في هذه المكتبة.
  • نستخدم Uses لاستدعاء مكتبة, ونكتبها في بداية الكود.

أقسام الوحدة

الشكل العام للوحدة

Unit MyUnit;
 
Interface
  uses ; const ; type ; var ;
  function FunctionName(Parameters) : Type;
  procedure ProcedureName(Parameters);
 
Implementation
  uses ; const ; type ; var ;
 
  function FunctionName(Parameters) : Type;
    {Function's Variables / Constants / Types}
  begin
   {Function's Body} 
  end;
 
  procedure ProcedureName(Parameters);
    {Procedure's Variables / Constants / Types}  
  begin
   {Procedure's Body}
  end;
 
begin
    {كل ما يكتب هنا سوف يتم تنفيذه فور استدعاء الوحدة}
end.

بداية الوحدة

نكتب Unit يليها اسم الوحدة التي نريد كتابتها :

Unit MyUnit;


قسم Interface

Interface
  uses ; const ; type ; var ;
  function FunctionName(Parameters) : Type;
  procedure ProcedureName(Parameters);
  • نضع في قسم Interface كل ما نريد أن يكون ظاهراً للبرنامج الذي يستخدم هذه الوحدة, وبالتالي يستطيع البرنامج الذي يستخدم هذه الوحدة استخدام الأنماط أو المتحولات أو الثوابت أو حتى الوحدات المكتوبة ضمن Interface.
  • أما بالنسبة للتوابع والإجرائيات, فنضع في Interface فقط ترويسة هذه التابع أو الإجرائية (Header) الذي نريد إتاحة استخدامه من قبل البرنامج المستخدم لهذه الوحدة, أما جسم التابع أو الإجرائية فنضعه ضمن Implementation

قسم Implementation

Implementation
  uses ; const ; type ; var ;
 
  function FunctionName(Parameters) : Type;
    {Function's Variables / Constants / Types}
  begin
   {Function's Body} 
  end;
 
  procedure ProcedureName(Parameters);
    {Procedure's Variables / Constants / Types}  
  begin
   {Procedure's Body}
  end;
  • نضع في قسم Implementation كل ما لا نريد أن يكون مرئياً وقابلاً للاستخدام من قبل البرنامج الذي يستخدم هذه الوحدة وذلك بالنسبة للمتحولات والثوابت والأنماط والوحدات.
  • أما بالنسبة للإجرائيات والتوابع, فإذا كانت ترويسة هذه الإجرائية (أو التابع) مكتوبة في قسم Interface فسوف يتيح ذلك للبرنامج المستخدم لهذه الوحدة استخدام هذه الإجرائية (أو التابع), وفي حال كانت الترويسة غير مكتوبة فإن هذا التابع (أو الإجرائية) لا يمكن استخدامه إلا داخل هذه الوحدة.
  • ملاحظة : يجب أن تكون الترويسة (header) المكتوبة في Interface مطابقة تماماً لترويسة التابع (أو الإجرائية) المكتوبة في قسم Implementation .

القسم الأخير من الوحدة

begin
    {كل ما يكتب هنا سوف يتم تنفيذه فور استدعاء الوحدة}
end.
  • عادة نستخدم هذا القسم لإعطاء المتحولات قيماً ابتدائية, ويمكن أن يُترك فارغاً.


  • ملاحظة : عند ترجمة وحدة (Compile) سوف يقوم المترجم بإنشاء ملف لاحقته tpu اختصاراً لـ (Turbo Pascal Unit) وهو الملف الذي سوف نحتاجه ونستدعيه في البرنامج.