دروس كمبيوتر وصيانة دروس حاسب دروس مجلة  درس نيوك phpnuke الدروس دروس مسنجر MSN - yahoo - Gmail دروس منتديات vBulletin دروس الجوالات والهواتف دروس السي بنل cpanel دروس اكسس access دروس بيونت شوب برو - point shop pro دروس برمجة php - mysql دروس برامج منوعة software دروس ثري دي ماكس 3D max دروس جافا سكريبت JavaScript دروس دريم ويفر DreamWeaver دروس شبكات Networks دروس سويش - swish دروس فلاش - flash دروس فيجوال بيسك Visual Basic دروس فرونت بيج - frontpage دروس فوتوشوب photoshop دروس هكر hacker crack virus
توبيكات رمضان | رسايل رمضان | ثيمات رمضان | طبخات رمضانية | توبيكات رمضانية | صور عن رمضان | دعاء رمضان
احصائيات سريعة
اقسام على الموقع
دروس في أنظمة التشغيل | ماي سكيول - MySQL | لفيجوال بيسك - Visual Basic | المات لاب Matlab | اللينكس و اليونكس | الاسمبلي - ASSEMBLY | الاوتلوك - Outlook | البرمجة تحت اللنكس -Linux Programming | البرمجة تحت وندوز بواسطة دوال ال win API | البرمجة في بيئة الدوت نت .Net | التصمبم والرسوم | الدلفي - Delphi | الجافا - Java | السي - C | الصوت و الصورة | الوورد - Word | القسم العام للأوفيس | الكوبول - COBOL | control panel-ftp | اوراكل - Oracle | اكسل - Excel | تحميل الملفات | برامج متنوعة | برامج التصفح | برامج الحماية | برامج إنترنت | تعرّف على الويب | بوربوينت - Power Point | images | دروس : كمبيوتر وصيانة | دروس مجلة نيوك phpnuke | دروس مسنجر MSN - yahoo - Gmail | دروس منتديات vBulletin | دروس الجوالات والهواتف | دروس السي بنل cpanel | دروس اكسس access | دروس بيونت شوب برو - point shop pro | دروس برمجة php - mysql | دروس برامج منوعة software | دروس ثري دي ماكس 3D max | دروس تطوير المواقع والمنتديات | دروس جافا سكريبت JavaScript | دروس دريم ويفر DreamWeaver | دروس شبكات Networks | دروس سويش - swish | دروس فلاش - flash | دروس فلاش mx | دروس فى نظام الوندوز WINDOWS | دروس فىالباسكال - Pascal | دروس فيجوال بيسك Visual Basic | دروس فرونت بيج - frontpage | دروس فوتوشوب photoshop | دروس هكر hacker crack virus | سي ++ | سي شارب - #C | فيجوال سي ++ - ++ Visual C | قسم البرمجة العام | دروس فى لغة HTML
البحث في المواد

اكثر المحتويات زيارة
الدوال في الاكسل (6,375 مشاهده)
ربط قاعدة بيانات أكسس (MS Access) مع برنامج الفيجوال بيسك بطريقة(ODBC) (4,138 مشاهده)
الدرس الثالث : بعض تطبيقات الدوال في اكسل (3,091 مشاهده)
تعريف الاستعلام وطريقة عرضه في آكسس، أنواع الاستعلامات، نافذة تحديد الاستعلام! (2,402 مشاهده)
الدرس الثاني: بعض الحيل لتسهيل برنامج اكسل (2,298 مشاهده)
شرح طريقة استعمال الأوتلوك مع بريد الهوتميل (2,192 مشاهده)
تغيير لغة واجهة التطبيق من عربي الى انجليزي وبالعكس لـ Windows-based applications (2,156 مشاهده)
أنواع العلاقات وطريقة الربط بين الجداول. (1,928 مشاهده)
مقدمة عامة حول الاكسل وحيل خاصة بالاكسل (1,755 مشاهده)
أنشئ قاعدة بياناتك التي ستستند إليها في تعلم طريقة ربط الجداول والاستعلامات. (1,725 مشاهده)
الدرس الأول : عمل شريحة في البوربوينت (1,576 مشاهده)
دروس في الأوفيس الأكسس - Access0- (1,527 مشاهده)
كيفية حل مشاكل الانترنت اكسبلور Internet Explorer (1,489 مشاهده)
دورة الأكسس: الدرس السادس : منوعات في أكسيس . (1,468 مشاهده)
اضافه صوت ونص لخلفيه في باور بوينت (1,357 مشاهده)
شرح طريقة التجميع Grouping في برنامج الاكسل (1,322 مشاهده)
التعرف على مكونات الكمبيوتر (1,286 مشاهده)
دورة الأكسس: الدرس السادس : منوعات في أكسيس .0--- (1,275 مشاهده)
برنامج Windows Movie Maker لتكوين أفلام (1,265 مشاهده)
درس تعريب المجلة (1,247 مشاهده)
مقدمة في ربط قواعد البيانات داخل بيئة الـ .NET باستخدام الـ VB.NET (1,218 مشاهده)
كيف تجعل برنامجك أكثر تألقا وجمالا باستخدام أداة Active Skin (1,215 مشاهده)
ما هو المات لاب MATLAB؟ (1,171 مشاهده)
مقدمة عن لغة البيسك (1,129 مشاهده)
الفيجوال بيسك - مقدمة (1,090 مشاهده)
جديد مواد مع عشوائي
التحويل التلقائي للحروف ل- ل- ه إلى اسم الجلالة0---- (791 مشاهده)
النسبة المئوية لا تظهر بالخط العربي & الشدة وألف المد في لفظ الجلالة0---النسبة المئوية لا تظهر بالخط العربي & الشدة وألف المد في لفظ الجلالة0--- (491 مشاهده)
ضبط خيارات اللغة فى الـ Microsoft Word0--- (551 مشاهده)
استخدام لوحة المفاتيح في الـ Word0---- (719 مشاهده)
إضافة كلمة سر إلي ملفات الورد دون استخدام برامج0--- (790 مشاهده)
دمج المراسلات0-- (438 مشاهده)
وضع صورة كخلفية للنص0-- (567 مشاهده)
السماح للمستخدمين بتعديل أجزاء من ملف وورد محمي (Word2003)0--- (385 مشاهده)
كتابة الأرقام الكسرية ورموز المعادلات0-- (636 مشاهده)
درس كامل عن الدمج السهل من لوحة المفاتيح ف0-ي برنامج الـ Word (401 مشاهده)
دورة الأكسس: الدرس السادس : منوعات في أكسيس .0--- (1,275 مشاهده)
دورة الأكسيس : الدرس الرابع : العلاقات0---- (667 مشاهده)
أساسيات في Access0--0 (457 مشاهده)
تصميم تقرير لطباعة البيانات0---- (496 مشاهده)
تصميم نموذج استعراض البيانات‏0--تصميم نموذج استعراض البيانات‏0-- (481 مشاهده)
تصميم نموذج إدخال‎ ‎البيانات0--- (573 مشاهده)
إنشاء قوائم خاصة باستخدام الماكرو(1)0-- (444 مشاهده)
خطوات إنشاء الماكرو في تذييل النموذج (2)0-- (376 مشاهده)
خطوات إنشاء الماكرو في تذييل النموذج (1)0- (330 مشاهده)
استعلامات SQL في Access - تعديل الجداول وإضافة الحقول0- (466 مشاهده)
استعلامات SQL في Access - تحديث البيانات الجدولية0-- (421 مشاهده)
الاستعلامات الإجرائية -4 (استعلام الحذف)0--- (218 مشاهده)
الاستعلامات الإجرائية -2 (استعلام الإلحاق)0--- (301 مشاهده)
تصميم تقرير لطباعة الإجمالي0--- (329 مشاهده)
استعلامات التحديد Select Query مع أمثله (1)0--- (434 مشاهده)
اعلانات في الموقع على جميع الصفحات

تحميل واستدعاء دوال وإجراءات1

تحميل واستدعاء دوال وإجراءات DLL





تحميل واستدعاء دوال وإجراءات DLL


مقدمة

 



بعيدا عن تعقيد الدرس السابق الذى يكفيك منه بشكل مبدئى أنك عرفت الشكل العام لوحدة DLL   وعرفت كيف تنجزها ،لنبدأ فى هذا الدرس معرفة النصف الثاني من القصة التى شرحنا فى الدرس السابق نصفها الأول وهو إنجاز وحدة DLL   ، هذا النصف الأخير هو كيفية استدعاء أو استيراد أوتحميل دوال وإجراءات DLL   .

 



 تحميل DLLs   إلى تطبيقك :

 



قبل أن تتمكن من استخدام دالة أو إجراء موجود فى DLL   فإنك بحاجة إلى تحميل DLL   إلى الذاكرة ، تحميل    DLL    فى RunTime   يمكن أن يكون بإحدى طريقتين :

 



1-التحميل الأستاتيكي Static Loading   .

 



2-التحميل الديناميكي Dynamic Loading   .

 



لكل من الطريقتين حسناتها وعيوبها ،لذا سأوضح الفرق بينهما :

 



1-التحميل الأستاتيكي:

 



يقصد به أن ال DLL   سيُحمّل أوتوماتيكياً عندما يُنفّذ التطبيق الذي قام باستدعاء DLL   ،ولاستخدام هذا النوع من الإستدعاء عليك أن تصرح عن الدالة أو الإجراء الموجود فى DLL   باستخدام الكلمة المحجوزة External   .

 



وطالما أن DLL   قد حمل عند لحظة تحميل التطبيق بشكل أوتوماتيكي فكل ما عليك فعله لاستدعاء دالة أو إجراء موجود فى DLL   هو استدعاء هذه الدالة أو الإجراء بشكل اعتيادي كما تستدعي أي دالة أو إجراء فى Object Pascal   .

 



 حسنة هذا النوع من التحميل هى أنه  الأسهل للوصول إلى دوال وإجراءات DLL   ،وعيبه أن DLL   يحمل فى لحظة تحميل البرنامج وبالتالى إذا احتوى DLL   على عيوب ما فإن البرنامج سيواجه مشاكل فى تحميله.

 



2-التحميل الديناميكي:

 



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

 



لهذا النوع من التحميل ميزاته وعيبه ،الميزة الأولى هى أنك تستخدم الذاكرة عندما تحتاج إليها فقط ، أي أنك تستغل الذاكرة بفعالية أكبر ، الميزة الأخرى هى أن برنامجك سيحمل بشكل أسرع لأنه عند لحظة تحميل تطبيقك لن يحمل كل الكود الذى تحتاجه لتنفيذه (المقصود جزء DLL  ).

 



العيب الأساسي لاستخدام التحميل الديناميكي أنه يحتاج إلى عمل أكثر من جانبك.

 



أ-لتحميل DLL   ديناميكيا عليك استخدام دالة Windows API   التى تدعى Loadlibrary   .

 



ب-عند انتهاء عملك مع DLL   استخدم الدالة FreeLibrary   لإلغاء تحميله من الذاكرة .

 



ج-استخدم الدالة GetprocAddress   للحصول على مؤشر للدالة أو الإجراء الذى تحتاج لاستدعائه.

 



 استدعاء الدوال والإجراءات الموجودة في DLLs   :

 



كما قلنا سابقاً فإن الطريقة التى تستخدمها لاستدعاء دالة أو إجراء فى DLL   تعتمد على ما إذا كان DLL   قد حمّل أستاتيكياً أم ديناميكياً .

 



أولاً الإستدعاء باستعمال التحميل الأستاتيكي :

 



لاستدعاء دالة أو إجراء ال DLL    الذي حمل ستاتيكياً عملية بسيطة ، أولا التطبيق المستدعى يجب أن يحتوي على تصريح عن الدالة أو الإجراء ،بعد ذلك يمكنك استدعاء الدالة أو الإجراء كما تفعل عادةً فى Object Pascal   .

 



لاستيراد دالة أو إجراء محتوى فى DLL   استخدم الكلمة المفتاحية External   فى تصريح الدالة أو الإجراء ،كمثال لنأخذ الإجراء SayHell   الذى رأيناه سابقاً ،التصريح عنه فى التطبيق المستدعى يكون كالتالي:

 


procedure SayHello(AForm : TForm); external `testdll.dll';

 

الكلمة المحجوزة External   تخبر المترجم أن الإجراء يمكن أن يكون فى DLL   (فى حالتنا هذه testdll.dll  ) ، 
الاستدعاء الفعلي للإجراء( وهو الخطوة التالية وحيثما احتجت إليه) لا يظهر أي اختلاف عن أي إجراء آخر.

 

SayHello(Self);

 

بالطبع فإن جملة التصريح عن الإجراء أو الدالة يجب أن تكون مطابقة للشكل الذي ظهر به فى DLL   ، الجدير بالقول هنا أن هذه 
هى الحالة الوحيدة التى تتأثر فيها Object Pascal   بحالة الحروف كبيرة أم صغيرة ،فإن أي خطأ تقع فيه في تهجئة أو شكل الحروف
 فى إسم الدالة أو الإجراء أثناء تصريحك عنه سيؤدي إلى اعتراض فى RunTime   وتطبيقك سيرفض التحميل.

 

استخدام الكلمة المحجوزة External   :

 

هذه الكلمة تملك ثلاث حالات لاستيراد إجراء أو دالة من DLL   :

 

1-باستخدام الإسم الفعلي :في هذه الطريقة يمكنك أن تصرح عن إسم الدالة أو الإجراء بالضبط كما جاء في DLL   مثلاً :

 
procedure SayHello(AForm : TForm); external `testdll.dll';

 

2-باستخدام القيمة الترتيبية :فى هذه الطريقة عليك أن تعين قيمة لترتيب الدالة أو الإجراء كما صدّر من DLL   مثلاً:

 

procedure SomeOrdinalProcedure;  external `testdll.dll' index 99;

 

  فى هذا المثال قمت باستيراد الإجراء الذي صدر من DLL   عندما index 99   ،أستطيع تسمية الإجراء أي إسم أريده فى التطبيق المستدعي ،
وسيكون المقصود هو ذلك الإجراء فى DLL   الذي له نفس قيمة الترتيب المذكور بعد index   ، أستطيع تسمية الإجراء أي إسم أريده لأن
 الإجراء مصدّر بواسطة قيمة الترتيب وليس بواسطة اسمه .

 

       3-باستخدام إعادة التسمية :تسمح لي هذه الطريقة بأن أستورد الإجراء بواسطة اسمه الأصلي ،لكن أعطي الإجراء اسما جديداً فى التطبيق 
المستدعي ، وهذا مشابه للتالي :


 

 
procedure CoolProcedure;

 

  external `testdll.dll' name `DoSomethingReallyCool';


 

 
هنا استوردت الإجراء المدعو DoSomethingReallyCool   وأعدت تسميته باسم CoolProcedure   .

 

  
ملاحظة/

 

تعد الطريقة الأولى أي الإستيراد بواسطة الإسم هي المستخدمة عادةً .

 

 

 

كما رأينا فإن التحميل الأستاتيكي يوفر لك كل ما تريده  في التعامل مع DLL   ، إلا إذا احتجت إلى المرونة التي يوفرها التحميل الديناميكي .

 

  
ثانياً استدعاء الدوال والإجراءات باستخدام التحميل الديناميكي :


 

 
إن استدعاء الدوال والإجراءات المحملة ديناميكياً يتطلب منك أن تعرف مؤشر للإجراء أو الدالة الموجودة فى DLL   (سبق وقدمت شرحا لموضوع 
مؤشر إجراء أو دالة في الدرس السابق) ،لشرح هذا الموضوع لنفترض أنك تملك إجراء في DLL   يدعى SayHello   وهو يمكن أن يظهر كالتالي :

 

procedure SayHello(AForm : TForm);

 

begin

 

  MessageBox(AForm.Handle, `Hello From a DLL!',

 

    `DLL Message Box', MB_OK or MB_ICONEXCLAMATION);

 

end;

 

لاستدعاء هذا الإجراء من برنامجك ،فإنك يجب أن تصرح عن نوع يصف هذا الإجراء كالتالي :

 

type

 

  TSayHello = procedure(AForm : TForm);

 

بعد أن تفعل ذلك ،عليك أن تحمل DLL   واستخدام الدالة أو الإجراء ثم إلغاء تحميله عند انتهاء العمل معه (استخدم الدوال المذكورة 
فى بداية هذا  الدرس لتحقيق ذلك)،
 وهذا هو مثالنا كاملاً :

 

var

 

  DLLInstance : THandle;

 

  SayHello : TSayHello;

 

begin

 

  { Load the DLL. }

 

  DLLInstance := LoadLibrary(`testdll.dll');

 

  { Get the address of the procedure. }

 

  @SayHello := GetProcAddress(DLLInstance, `SayHello');

 

  { Call the procedure. }

 

  SayHello(Self);

 

  { Unload the DLL. }

 

  FreeLibrary(DLLInstance);

 

end;

 

من الأفضل أن تستخدم code   إضافي لفحص الخطأ ، ففي بعض الأحيان تفشل الدالة LoadLibrary   في التقاط ممسك ملف DLL   ،أو تفشل 
الدالة GetprocAddress   فى التقاط عنوان الإجراء أو الدالة ، فتلافيا لتوقف البرنامج عند حدوث ذلك نضيف هذا الفحص :

 

procedure TForm1.DynamicLoadBtnClick(Sender: TObject);

 

type

 

  TSayHello = procedure(AForm : TForm);

 

var

 

  DLLInstance : THandle;

 

  SayHello : TSayHello;

 

begin

 

  DLLInstance := LoadLibrary(`testdll.dll');

 

  if DLLInstance = 0 then begin

 

    MessageDlg(`Unable to load DLL.', mtError, [mbOK], 0);

 

    Exit;

 

  end;

 

  @SayHello := GetProcAddress(DLLInstance, `SayHello');

 

  if @SayHello <> nil then

 

    SayHello(Self)

 

  else

 

    MessageDlg(`Unable to locate procedure.', mtError, [mbOK], 0);

 

  FreeLibrary(DLLInstance);

 

end;

 

والآن... بناء تطبيق DLL   باستخدام مخزن الأغراض :

 

لبناء DLL   في دلفي اتبع الخطوات التالية :

 

1-اختار File   ثم New   لعرض Object Repository   ،كما بالشكل التالي:

 

 

 

2-أنقر نقرتين مزدوجتين على أيقونة DLL   ، عند ذلك فإن دلفي تبني تطبيق DLL   جديد وتعرض محرر الكود كما بالشكل التالي :





 




 




 



الآن يمكنك أن تبدأ بإضافة ال code   إلى DLL   ،تأكد من إضافة إسم أي دالة أو إجراء مصدرة في جزء Exports   ،بعد أن تنتهي من إضافة الكود بإمكانك اختيار Compile   أو Built   من قائمة Project   لبناء DLL   .

 



 التعليق الظاهر في وحدة DLL   :

 



بالتأكيد لاحظت التعليق الطويل الذي يظهر فى بداية وحدة DLL   ، إن هذا التعليق يخبرك أنه إذا احتوى DLL   على دوال أو إجراءات مصدرة تأخذ نوع سلسلة طويلة كمحدد لها ، أو إذا كانت الدالة ترجع نوع سلسلة طويلة فعليك فعل التالي :

 



1-ضع ShareMem   في بداية قائمة Uses   في كل من DLL   والوحدة الرئيسية للتطبيق المستدعي ،تأكد من أن ShareMem   تأتي قبل الوحدات الأخرى فى قائمة Uses   .

 



2-إشحذ ملف Borlandmm.dll   مع DLL   ،لاحظ أني قلت Borlandmm.dll   وليس Delphimm.dll   كما أشار التعليق الموجود في DLL   ،ذلك أن Borland   غيرت إسم مدير ذاكرة DLL   لكنها أهملت تغيير التعليقات المنتجة عندما تبني DLL   جديد ،ومع ذلك فإن التعليق ليس مضللا بالكامل ، لأن كلا من Delphimm.dll   و Borlandmm.dll   مضمنان في Delphi4   .

 



لتجنب هذه الطلبات ، فقط تأكد من أن دوالك وإجراءاتك في DLL   لا تأخذ محددات نوع سلسلة طويلة ودوال DLL   لا ترجع سلسلة طويلة ، بدلا عن استخدام سلسلة طويلة (Long String  ) بإمكانك استخدام Pchar String   أو Short String   مثلا : عوضا عن استخدام :

 


procedure MyProcedure(var S : string);

 

begin

 

  { Procedure code here. }

 

end;

 

إستخدم:  

 

 

 

procedure MyFunction(S : PChar);

 

begin

 

{ Procedure code here. }

 

end;

 


   هذا الأمر سهل الإستخدام لذلك أنت لا تحتاج مطلقا إلى Borlandmm.dll   ، أنت فقط بحاجة لأن تعي القيود الموضوعة على استخدام السلاسل الطويلة في دوال وإجراءات DLL   ، لاحظ أنك تستطيع استخدام السلاسل الطويلة في الدوال والإجراءات المستخدمة داخلياً في DLL   ،إذاً القيود السابقة تنطبق فقط على الدوال والإجراءات المصدرة.

 



ملاحظة :

 



بعد أن فهمت ما يعنيه التعليق بإمكانك مسحه ، لأنه لم يعد ضرورياً بالنسبة لك.

 



تطبيق عملي:

 



إليك الآن هذه الأكواد الثلاثة التي تعطي مثالاً للمفاهيم المناقشة سابقاً ،الأول يحتوي DLL   سيتم استدعاؤه ستاتيكياً من التطبيق المستدعي ،الثاني يحتوي DLL   سيستدعى ديناميكياً من الإجراء المستدعي بأدوات DLLProc   ،أما الثالث فهو يحتوي البرنامج الذي يستدعي DLL   السابقين ،البرنامج يملك form   مع أربع buttons    التى تستدعي إجراءات متعددة موجودة في ملفيDLLs   .

 



TestDll.dpr.

library TestDLL;

 

uses

 

  SysUtils,

 

  Classes,

 

  Forms,

 

  Windows;

 

procedure SayHello(AForm : TForm);

 

begin

 

  MessageBox(AForm.Handle, `Hello From a DLL!',

 

    `DLL Message Box', MB_OK or MB_ICONEXCLAMATION);

 

end;

 

procedure DoSomething;

 

begin

 

  MessageBox(0, `This procedure was exported by ordinal.',

 

    `DLL Message Box', MB_OK or MB_ICONEXCLAMATION);

 

end;

 

procedure DoSomethingReallyCool;

 

begin

 

  MessageBox(0, `Something really cool.',

 

    `DLL Message Box', MB_OK or MB_ICONEXCLAMATION);

 

end;

 

exports

 

  SayHello,

 

  DoSomething index 99,

 

  DoSomethingReallyCool;

 

begin

 

end.

 


DynLoad.dpr.

library TestDLL;

 

uses

 

  SysUtils,

 

  Classes,

 

  Forms,

 

  Windows;

 

procedure MyDLLProc(Reason: Integer);

 

begin

 

  if Reason = DLL_PROCESS_DETACH then

 

    { DLL is unloading. Cleanup code here. }

 

  MessageBox(0, `DLL is unloading!',

 

    `DLL Message', MB_OK or MB_ICONEXCLAMATION);

 

end;

 

procedure SayHelloDyn(AForm : TForm);

 

begin

 

  MessageBox(AForm.Handle, `Hello From a DLL!' + #13 +

 

    `This DLL was loaded dynamically',

 

    `DLL Message', MB_OK or MB_ICONEXCLAMATION);

 

end;

 

exports

 

  SayHelloDyn;

 

begin

 

  DLLProc := @MyDLLProc;

 

end.

 


CallDllU.pas.

unit CallDLLU;

 

interface

 

uses

 

  Windows, Messages, SysUtils, Classes, Graphics,

 

  Controls, Forms, Dialogs, StdCtrls;

 

type

 

  TForm1 = class(TForm)

 

    HelloBtn: TButton;

 

    OrdBtn: TButton;

 

    DynamicLoadBtn: TButton;

 

    NamedBtn: TButton;

 

    procedure HelloBtnClick(Sender: TObject);

 

    procedure OrdBtnClick(Sender: TObject);

 

    procedure DynamicLoadBtnClick(Sender: TObject);

 

    procedure NamedBtnClick(Sender: TObject);

 

  private

 

    { Private declarations }

 

  public

 

    { Public declarations }

 

  end;

 

var

 

  Form1: TForm1;

 

{ A procedure imported by name. }

 

procedure SayHello(AForm : TForm);

 

  external `testdll.dll';

 

{ A procedure imported by ordinal. }

 

procedure OrdinalProcedure;

 

  external `testdll.dll' index 99;

 

{ A procedure imported and renamed. }

 

procedure CoolProcedure;

 

  external `testdll.dll' name `DoSomethingReallyCool';

 

implementation

 

{$R *.DFM}

 

procedure TForm1.HelloBtnClick(Sender: TObject);

 

begin

 

  SayHello(Self);

 

end;

 

procedure TForm1.OrdBtnClick(Sender: TObject);

 

begin

 

  OrdinalProcedure;

 

end;

 

procedure TForm1.NamedBtnClick(Sender: TObject);

 

begin

 

  CoolProcedure;

 

end;

 

procedure TForm1.DynamicLoadBtnClick(Sender: TObject);

 

درس تحميل واستدعاء دوال وإجراءات1
أضف هذه المادة في موقعك:
مواد مشابهة:
إنجاز وحدة DLL فى لغة دلفي إنجاز وحدة DLL فى لغة دلفي
إنجاز وحدة DLL فى لغة دلفي
(مرات المشاهدة: 170 مرات)
استخدام Forms وResources فى DLLs استخدام Forms وResources فى DLLs
استخدام Forms وResources فى DLLs
(مرات المشاهدة: 149 مرات)
نافذة الخصائص والأحداث بدلفي نافذة الخصائص والأحداث بدلفي
نافذة الخصائص والأحداث بدلفي
(مرات المشاهدة: 184 مرات)
مقدمة في DLL   - مقدمة في DLL -
مقدمة في DLL -
(مرات المشاهدة: 74 مرات)
الكلمة الأساسية IF - THEN- الكلمة الأساسية IF - THEN-
الكلمة الأساسية IF - THEN-
(مرات المشاهدة: 223 مرات)
حلقات التكرار While - For - Repeat- حلقات التكرار While - For - Repeat-
حلقات التكرار While - For - Repeat-
(مرات المشاهدة: 208 مرات)
الدالة Case الدالة Case
الدالة Case
(مرات المشاهدة: 93 مرات)
تحميل واستدعاء دوال وإجراءات DLL تحميل واستدعاء دوال وإجراءات DLL
تحميل واستدعاء دوال وإجراءات DLL
(مرات المشاهدة: 194 مرات)
الكلمة الأساسية IF - THEN الكلمة الأساسية IF - THEN
الكلمة الأساسية IF - THEN
(مرات المشاهدة: 91 مرات)
 دورة كاملة في الدلفي اعداد ORWA دورة كاملة في الدلفي اعداد ORWA
دورة كاملة في الدلفي اعداد ORWA
(مرات المشاهدة: 694 مرات)
fot
جميع الحقوق محفوظة :Copyright © All rights reserved