إستخدام ملفات الريسورس في دلفي
#1
السلام عليكم و رحمة الله و بركاته
درس مختصر يشرح كيفية إنشاء ملف ريسورس و إستخدامه مع بعض الحيل .
بالتوفيق للجميع :bye1: .


الملفات المرفقة
.rar   إستخدام ملفات الريسورس في دلفي.rar (الحجم : 592.51 ك ب / التحميلات : 2,751)
[-] كل من 1 user says قال شكرا ل TF6M على المشاركة المفيدة
  • mohamed49
الرد
#2
جزاك الله خيرا و جعله في موازين حسناتك.
الرد
#3
وعليكم السلام ورحمة الله وبركاته
الله يحفظك أخي TF6M ، مجهود كبير يثمر عن درس رائع...
إضافة لإثراء الموضوع...
في نسخ Delphi الجديدة يمكن إضافة ملفات الرسورس مباشرة من القائمة Project
للمزيد:
http://www.delphi4arab.net/forum/showthr...802&page=2
شكرا كثيرا.
اللهم احقن دماء المسلمين، لا تنسوهم بالدعاء...
[-] كل من 1 user says قال شكرا ل kachwahed على المشاركة المفيدة
  • mohamed49
الرد
#4
AL-MOB4RM3G كتب :او على الأقل, صعب جدا القرآئة بهذا الخط المستعمل
تفضل أخي الكريم هدا الدرس بصيغته الأصلية و أيضا office2003
عدل عليه كما تشاء .
kachwahed كتب :في نسخ delphi الجديدة يمكن إضافة ملفات الرسورس مباشرة من القائمة project
نعم أخي ... إظافة جميلة سبق و أطلعت على الدرس ... بارك الله فيك .
لكن كان هدفي تصميم + إستخدام هدا النوع من الملفات .
بالتوفيق ,,


الملفات المرفقة
.rar   Using Resource Files With Delphi.rar (الحجم : 420.96 ك ب / التحميلات : 1,020)
[-] كل من 1 user says قال شكرا ل TF6M على المشاركة المفيدة
  • mohamed49
الرد
#5
إثراءا للموضوع...
أولا: يمكن الاستغناء عن كتابة اللاحقة في التوجيه
كود :
{$R ResFile.res}
مباشرة:
كود :
{$R ResFile}
لأن الموجه R$ أصلا مخصص لملفات الرسورس.
ثانيا: هذه لم تعمل معي !
كود :
PlaySound(PChar('10'), HInstance, SND_SYNC or SND_RESOURCE);
استخدمت Delphi2010 ثم Delphi7
+ لماذا كتبت في الدرس 10 دون علامات تنصيص أليس المطلوب PChar أو PWideChar !
جربت أيضا باستخدام دالة Windows كما يلي:
كود :
var h1, h2: THandle; p: pointer; begin h1:=FindResource(HInstance, 'MYWAVE', 'WAVE'); h2:=LoadResource(HInstance,h1); p:=LockResource(h2); sndPlaySound(p, SND_ASYNC or SND_MEMORY); if (h2 <> 0) then begin UnlockResource(h2); FreeResource(h2); end; end;
سؤال أخير Smile لماذا يتم التحقق بالمقارنة إلى
كود :
DWORD(-1)
هذا الـ Cast يعيد أكبر قيمة لـ DWORD التي تطابق الثابت INVALID_HANDLE_VALUE، أليس من المفروض أن تقارن إلى 0 بدلا عن ذلك؟
أضيف RCDATA... بنفس الطريقة يمكن تحميل ملف من أي نوع على ملف Binary، مثال تحميل ملف RTF إلى TRichEdit
نقوم بصناعة ملف (RtfRes.rc) الرسورس كما يلي:
كود :
rtf RCDATA "LoadRtf.rtf"
لا ننسى Compile
كود :
brcc32 RtfRes.rc
كما لا ننسى إضافة الرسورس:
كود :
{$R RtfRes}
ثم الاستدعاء بهذا الشكل:
كود :
var rs: TResourceStream; begin rs := TResourceStream.Create(HInstance, 'rtf', [color=Red]RT_RCDATA[/color]); RichEdit1.Lines.LoadFromStream(rs); rs.Free; end;
من الأفضل حماية الحيز Try/Except ربما يطرأ تغيير على البرنامج Smile
هذه الطريقة عملية لتخزين نموذج Template من قاعدة البيانات إذا كانت صغيرة.
بالتوفيق.
اللهم احقن دماء المسلمين، لا تنسوهم بالدعاء...
الرد
#6
أولا: يمكن الاستغناء عن كتابة اللاحقة في التوجيه : جميل جدا !
ثانيا: هذه لم تعمل معي ! .... كيف وضح أكثر :
كود :
PlaySound(PChar('10'), HInstance, SND_SYNC or SND_RESOURCE);
راجع هدا الموضوع :
http://www.delphi4arab.net/forum/showthread.php?tid=42
استخدمت Delphi2010 ثم Delphi7 ... : لم أفهم قصدك
(ممكن pchar 2010 = pwidechar 7) ؟؟
إقتباس :+ لماذا كتبت في الدرس 10 دون علامات تنصيص أليس المطلوبar أو PWi PChdeChar !
لم أكتب الدرس 10 ؟
إقتباس :سؤال أخير :صحيح لكن من الممكن أن أعيد القيمة 0 بعد الإنتهاء من العمل بالمقبض
يعني ممكن أحتاج القيمة 0 .
- في ما يخص try/eXCEPT (راجع للمبرمج مهارات كتابة الكود ممكن نستغني عنها).
- في ما يخص إنشاء ملف الريسورس يكفي أن نعطي إسم نوع الريسورس (لايهم)
و الـID .
I'M Fly Like A G6

الرد
#7
إقتباس :كيف وضح أكثر
حسنا... أخطأت في كتابة القيمة 10 كان ينبغي ألا أكتبها بين علامتي تنصيص أي '10'، وليس الدرس رقم 10 :laugh:
إقتباس :راجع هدا الموضوع
الموضوع حفظته منذ مدة... ولا بأس بالمراجعة.
إقتباس :استخدمت Delphi2010 ثم Delphi7 ... : لم أفهم قصدك
قصدت أني جربت الكود على D14 وD7 ولم يكن يعمل (ربما لم أسمع الصوت لصغر حجم الملف :kickSmile
إقتباس :سؤال أخير .... :صحيح لكن من الممكن أن أعيد القيمة 0 بعد الإنتهاء من العمل بالمقبض
المشكلة أن هذا لا يعمل:
كود :
if hRes <> 0 then
وجد الرسورس أم لم يجده، دائما يأخذ hRes القيمة 0 !
شكر كثيرا.
اللهم احقن دماء المسلمين، لا تنسوهم بالدعاء...
الرد
#8
لا يا أخي kachwahed فالـ hRes تأخذ قيمة مغايرة لـ 0 في حالة
نجاح تحميل الريسورس ... لقد أرفقت الكود سورس بالدرس ممكن تتطلع عليه ؟؟؟.
+
انا أعمل بالدلفي 7 و نجح معي الامر ؟؟؟ .
I'M Fly Like A G6

الرد
#9
إقتباس :لا يا أخي kachwahed فالـ hRes تأخذ قيمة مغايرة لـ 0 في حالة
أجل، هذا ما أظنه دوما...
لكن هنا لم يحدث ذلك، قبل تحميل الصورة جرب:
كود :
ShowMessage(IntToStr(hRes));
ربما الخلل في نسخة D14 التي معي لا زالت غير مستقرة.
ربما أرجع إلى D7، معهم حق ناس زمان... الرجوع للأصل فضيلة :oops:
اللهم احقن دماء المسلمين، لا تنسوهم بالدعاء...
الرد
#10
لا أعرف أين الخلل ممكن ترفق المشروع كاملا ؟؟
[صورة: 5451z.jpg]
I'M Fly Like A G6

الرد


التنقل السريع :


يقوم بقرائة الموضوع: بالاضافة الى ( 1 ) ضيف كريم