delphi4arab منتديات دلفي للعرب
إستخدام ملفات الريسورس في دلفي - نسخة قابلة للطباعة

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

الصفحات: 1 2


إستخدام ملفات الريسورس في دلفي - TF6M - 10-11-2009

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


إستخدام ملفات الريسورس في دلفي - أبو معاذ - 10-11-2009

جزاك الله خيرا و جعله في موازين حسناتك.


إستخدام ملفات الريسورس في دلفي - kachwahed - 10-11-2009

وعليكم السلام ورحمة الله وبركاته
الله يحفظك أخي TF6M ، مجهود كبير يثمر عن درس رائع...
إضافة لإثراء الموضوع...
في نسخ Delphi الجديدة يمكن إضافة ملفات الرسورس مباشرة من القائمة Project
للمزيد:
http://www.delphi4arab.net/forum/showthread.php?tid=1802&page=2
شكرا كثيرا.



إستخدام ملفات الريسورس في دلفي - TF6M - 10-11-2009

AL-MOB4RM3G كتب :او على الأقل, صعب جدا القرآئة بهذا الخط المستعمل
تفضل أخي الكريم هدا الدرس بصيغته الأصلية و أيضا office2003
عدل عليه كما تشاء .
kachwahed كتب :في نسخ delphi الجديدة يمكن إضافة ملفات الرسورس مباشرة من القائمة project
نعم أخي ... إظافة جميلة سبق و أطلعت على الدرس ... بارك الله فيك .
لكن كان هدفي تصميم + إستخدام هدا النوع من الملفات .
بالتوفيق ,,


إستخدام ملفات الريسورس في دلفي - kachwahed - 01-12-2009

إثراءا للموضوع...
أولا: يمكن الاستغناء عن كتابة اللاحقة في التوجيه
كود :
{$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 من قاعدة البيانات إذا كانت صغيرة.
بالتوفيق.



إستخدام ملفات الريسورس في دلفي - TF6M - 01-12-2009

أولا: يمكن الاستغناء عن كتابة اللاحقة في التوجيه : جميل جدا !
ثانيا: هذه لم تعمل معي ! .... كيف وضح أكثر :
كود :
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 .


إستخدام ملفات الريسورس في دلفي - kachwahed - 02-12-2009

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



إستخدام ملفات الريسورس في دلفي - TF6M - 02-12-2009

لا يا أخي kachwahed فالـ hRes تأخذ قيمة مغايرة لـ 0 في حالة
نجاح تحميل الريسورس ... لقد أرفقت الكود سورس بالدرس ممكن تتطلع عليه ؟؟؟.
+
انا أعمل بالدلفي 7 و نجح معي الامر ؟؟؟ .


إستخدام ملفات الريسورس في دلفي - kachwahed - 02-12-2009

إقتباس :لا يا أخي kachwahed فالـ hRes تأخذ قيمة مغايرة لـ 0 في حالة
أجل، هذا ما أظنه دوما...
لكن هنا لم يحدث ذلك، قبل تحميل الصورة جرب:
كود :
ShowMessage(IntToStr(hRes));
ربما الخلل في نسخة D14 التي معي لا زالت غير مستقرة.
ربما أرجع إلى D7، معهم حق ناس زمان... الرجوع للأصل فضيلة :oops:



إستخدام ملفات الريسورس في دلفي - TF6M - 02-12-2009

لا أعرف أين الخلل ممكن ترفق المشروع كاملا ؟؟
[صورة: 5451z.jpg]