delphi4arab منتديات دلفي للعرب
خطوات بناء ملف تنفيذي تطبيق ويندوز (Win32) - نسخة قابلة للطباعة

+- delphi4arab منتديات دلفي للعرب (https://delphi4arab.net/forum)
+-- قسم : منتديات دلفي التقنية (https://delphi4arab.net/forum/forumdisplay.php?fid=6)
+--- قسم : دلفي والتعامل مع الملفات (https://delphi4arab.net/forum/forumdisplay.php?fid=22)
+--- الموضوع : خطوات بناء ملف تنفيذي تطبيق ويندوز (Win32) (/showthread.php?tid=2737)

الصفحات: 1 2


خطوات بناء ملف تنفيذي تطبيق ويندوز (Win32) - TF6M - 25-01-2011

بسم الله الرحمن الرحيم
السلام عليكم و رحمة الله و بركاته

سنقوم بتوضيح خطوات بناء ملف تنفيذي تطبيق ويندوز (Win32), بطريقة مبسطة , أولا خطوات العملية :
1- ترجمة الملف المصدري (Compiling)
2- تحويل OMF الى Intel OMF
3- ربط Coff بمكتبات النظام , إنتاج ملف تنفيذي

المرحلة الأولى :
عملية ترجمة الكود سورس إلى كود أسمبلي (لغة الآلة) , لكي تتم العملية بنجاح بمرور 3 مراحل للتحقق الى إنتاج ملف Obj
- lexical analysis (التحقق من صحة الـ Token = المفردات المحفوظة if,do,begin …….ect)
- syntaxic analysis (التحقق من ترتيب الـ Token & بناء شجرة بإستخدام الـ Token)
- semantic analysis (التحقق من مبدأ المرجعية , نتأكد من القيمة المسندة لمتغير ما من نفس الطبيعة)
- code generation
حتى يتم توليد ملف مترجم (operation assembly code) يجب نجاح كل مرحلة (تم ذكر المراحل دون التفصيل لأنها موضوع أخر).
يمكن تحقيق ذلك سواء بكتابة MakeFile أو تنفيذ مباشر Command Line , يكفي كتابة dcc32 في الـ Cmd لتوضيح بارامترات الترجمة .
مثلا لإنتاج ملف OMFخام :
كود :
dcc32 -JP _MsgBox.pas
المرحلة الثانية :
إنطلاقا من دلفي 4 , قامت بورلاند بتحويل OMF (Object Module Format)i من Intel Omf الى Borland Omf
Borland Omf : قابل للربط فقط بـ Borland Linker (نحول Omf الى Coff : ممكن)
أدوات عملية : RmCoff By mickeylan / OMF2D by EliCZ
Intel Omf : قابل للربط بـ microsoft Linker (نحول Coff الى Omf لإستعمالها في دلفي : ممكن)
أدوات عملية : Object file converter
- يمكن معرفة محتوى الـ lib / Obj بواسطة TDUMP المرفق في مجلد Bin
كود :
TDUMP -C user32.lib (COFF only) TDUMP -d MsgBox.obj (OMF only )
- أيضا يمكننا إستخدام الـ Object File الناتج عن المترجمات الأخرى c/c++ , بإظافة التوجيه L$
مواضيع ذات صلة :
انتاج ملف Object .
إستخدام ملف lib

المرحلة الثالثة :
يتم دمج كل من الأبجكت فايل (DCu) & ملفات الريسورس & ملفات Bin , لإنتاج ملف تنفيذي Exe
صورة توضيحية:
[صورة: dflow.png]
مثال :
كود :
unit _MsgBox; interface procedure Start; implementation function MessageBoxA(hWnd: Cardinal; lpText, lpCaption: Pchar; uType: Cardinal): Integer; stdcall; external 'user32.dll' name '_MessageBoxA@16'; function MessageBeep(uType: Cardinal): Integer; stdcall; external 'user32.dll' name '_MessageBeep@4'; procedure Start; begin MessageBeep($FFFFFFFF); MessageBoxA(0,PChar('TF6M | D4A.Com'), PChar('Www.Delphi4Arab.Com'),0); MessageBeep($FFFFFFFF); End; end.
- العلامة @ , تعني حجم المحجوز لبارامترات الممرة للدالة مثلا : MessageBeep@4 لديه براماتر وحيد
من نوع Cardinal حجمه 4 Byte , يمكن أيضا فتح الـ Lib بأحد محررات الـ Hex أو Ida لمعرفة لائحة
الدوال & الإجراءات المخزنة .

الأن نأتي إلى عملية الترجمة + التحويل + الربط , عبارة عن MakeFile مرفق, هذا الأخير يتطلب تعديل مسار الـ Lib فقط !!
بالتوفيق,,




خطوات بناء ملف تنفيذي تطبيق ويندوز (Win32) - kachwahed - 25-01-2011

وعليكم السلام ورحمة الله وبركاته
موضوع جميل Smile
إقتباس :- أيضا يمكننا إستخدام الـ Object File الناتج عن المترجمات الأخرى c/c++...
بالفعل، مع التنبيه أنه يجب استخدام Borland C Compiler لإنتاج ملفات obj متوافقة
وإلا سنحصل على "Bad object file format" ثم نلجأ إلى التحويل والمزالق المترتبة عنه...

كملاحظة، يمكن باستخدام خيارات المشروع توليد Obj عوض Dcu من(دلفي 7):
Project -> Options -> Linker -> Generate C object files
بالتوفيق.



خطوات بناء ملف تنفيذي تطبيق ويندوز (Win32) - me_delphi - 28-01-2011

وعليكم السلام ورحمة الله وبركاته

معلومات مهمة أخي tf6m

بالتوفيق.


خطوات بناء ملف تنفيذي تطبيق ويندوز (Win32) - محمد عبد العزيز - 28-01-2011

السلام عليكم ورحمة الله

للعلم ما كان يميز مترجم Borland من ايام Turbo Pascal انه لم يكن ينتج ملف obj (بالقرص و انما بالذاكرة) بل ينتج مباشرة الملف التنفيذي ويظهر كانها مرحلة واسرع سرعة بذلك الوقت
كل مترجمات اللغات الاخرى (مثل C/C++وFortran الخ) تمر بمرحلتين
تنتج اولا ملفات الobj بعد الترجمة Compile
ثم ثانيا مرحلة الربط Link تنتج الملف التنفيذي

ولاثراء الموضوع:
لما هذه الطريقة (ما الفائدة) ؟ في حين يكفي الضغط على الزر F9 من دلفي لانتاج ملف تنفيذي



خطوات بناء ملف تنفيذي تطبيق ويندوز (Win32) - kachwahed - 28-01-2011

أعتقد أن هذا يسهل أمور كثيرة منها:
- توزيع أجزاء من البرنامج دون السورس (مكتبات، مكونات...)
- تسهيل إعادة الاستخدام ضمن نفس البرنامج أو في برامج أخرى
- تقليص حجم الكود (باستخدام Includes...)



خطوات بناء ملف تنفيذي تطبيق ويندوز (Win32) - TF6M - 28-01-2011

و عليكم السلام و رحمة الله و بركاته
"لما هذه الطريقة (ما الفائدة) ؟ في حين يكفي الضغط على الزر F9 من دلفي لانتاج ملف تنفيذي"
- بإختصار Application Size Optimization , كان يكفي الضغط على زر F9 لنتحصل على تطبيق 14 Ko
1- لم نستخدم الـ VCL (حتى و إن يمكن تعويضه بـ KOL لكن وقت أقل + حجم أقل)
2- الإستغناء عن إظافات الـ RTL (Delphi Runtime Library "..\Source\Rtl\MakeFile")i .
- بالتحديد ملف System الذي يترجم مع جميع الوحدات المستخدمة (مقالة) , و هذا سبب إستخدام
الربط الستاتيكي ,أي دمج الكود المصدر مباشرة من الـ
LIB
4-
لو لاحظنا بنية الملف الناتج (PE) , نجده يحتوي عدد أقسام اقل من الذي ينتجه الـ Borland Linker
هذا ما أعرفه [صورة: icon10.gif] .


خطوات بناء ملف تنفيذي تطبيق ويندوز (Win32) - محمد عبد العزيز - 28-01-2011

اضافة الى ما ذكر الطريقة باختصار
دلفي ينتج ملف تنفيذي EXE/DLL ولا يسمح بانتاج sys
ما الحل ؟
1- استخدام مترجم Compiler من Borland
لماذا ؟ بكل بساطة لاننا نستخدم دلفي/ نبرمج بباسكال Pascal
2- استخدام Linker من مايكروزفت
لماذا ؟ لانتاج ملف sys






خطوات بناء ملف تنفيذي تطبيق ويندوز (Win32) - attia fathy - 14-05-2011

أفادك الله وجزاك كل الخير على ماقدمت وأحسنت فيه فالموضوع رائع والشرح أروع .. شكراً شكراً



خطوات بناء ملف تنفيذي تطبيق ويندوز (Win32) - mahboub2011 - 22-12-2011

شكرا للفائدة
عندي سوال فقط بالنسبة للملف omf2d.exe لمادا تعتبره الافيرا والافجي ملف ضار بالجهاز


خطوات بناء ملف تنفيذي تطبيق ويندوز (Win32) - Basilisk - 18-03-2015

mahboub2011 كتب :شكرا للفائدة
عندي سوال فقط بالنسبة للملف omf2d.exe لمادا تعتبره الافيرا والافجي ملف ضار بالجهاز
انا ايضا عندي مشكلة عندما احمل المرفق يحذفه
هل من بديل ؟