الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

كيفية التعامل مع ال Res File

مغلق
بدأه am2812 في 4 أبريل 2005 · 8 رد · 6,307 مشاهدة · في أرشيف منتدى الدلفي
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

الأخوة الكرام

لو تكرمتم أحد يعطينا فكرة عن الملف الذي امتداده Res

ـــ الفائدة منه

ـــ كيفيه انشاؤه

ـــ ضمه الى المشروع

ـــ إن امكن مثال

لكم جزيل الشكر

:) :) :) :)

20_09_05_04_45_39_1127216739saudi_aC_.gif
#2

السلام عليكم ورحمة الله اتمنى ان تجد ما تسعى اليه فى هذه الرابطة

http://delphi.about.com/od/objectpascalide/l/aa113099a.htm

وشكرا

{ربى زدنى علما}

#3

شكراً لك أخي الكريم JuStNiCk

وجاري الاطلاع على الموضوع

:) :) :) :)

20_09_05_04_45_39_1127216739saudi_aC_.gif
#4

ملفات الموارد Ressources Files

يحتاج المبرمج في كثير من الأحيان في برامجه بعض الموارد الإضافية مثل أصوات و صور و أيقونات وعلب حوار أو غير ذلك.

لهذا الغرض يحتاج لربط ملفه مع الموارد التي سيحتاجها برنامجه إما على شكل ملفات يرفقها في مجلد, أو يرفقها داخل الملف التنفيذي.

نعم يمكنك دمج ملفات سيحتاجها البرنامج التنفيذي داخل الكود exe او تجمع داخل ملف Dll.

تقوم بربط ملف الكود البرمجي بملفات resources ذاة إمتداد res , هذه الملفات ذات الإمتداد res.* هي ملفات مصرفة Compiled تضم مجموعة من الموارد التي

سيحتاجها البرنامج الذي أنت بصدد تحريره.

ملف الموارد يمكنه أن يضم أي شيئ يمكنك أن تحتاجه:

- سلاسل محرفية Ressources String.

- قوائم Menu.

- علب حوار شخصية Dialogs Box.

- خطوط Fonts.

- أيقونات.

- معلومات عن إصدارة برنامجك Version Information.

- صور Bmp.

- المؤشرات Cursors.

- ملفات Wav.

- ملفات شخصية RCData ( فورم, Html, Video Files....).

- أو غيرها من الموارد كيفما كان نوعها ,ملفات فيديو, MP3, ملفات bynary, ملفات Dll, ملفات Vxd....

كما قلت ملف res.* هو ملف مصرف وملفه المصدري هو ملف نصي text يحمل عادة إمتداد rc.*. يمكنك تحرير هذا الملف في أي محرر نص ASCII editor

تريده مثلا كبرنامج notepad.exe..

سنكتب به لائحة كل الموارد التي ستستعملها وفق هذا الإملاء:

ResNameOrID  ResTYPE  ResPathFileName

ResNameOrID :هو إسم من نوع string أو عدد من صنف Integer

تميز به المورد.

ResTYPE : هو صنف المورد, هناك أصناف معرفة في ويندوز ويمكنك استعمال دوال winapi جاهزة كأصناف Icon و wave و غيرها..أسماء

الموارد المعرفة إفتراضيا في ويندوز :

. Cursor
· Animated Cursor 
· Group Cursor
· Bitmap
· Icon 
· Group Icon 
· Menu 
· Dialog 
· Dialog Include
· String Table 
· Message table
· Font Directory 
· Font 
· Accelerators Table
· RC Data (custom binary data) 
· Version Information
· Plug'n'Play 
· VXD

وكذلك يمكنك تعريف أنواع خاصة بك وتعطي إسما خاصا لهذا الصنف كأن تسميه html مثلا بالنسبة لمورد مكتوب للويب.

ResPathFileName :هو إسم الملف مع المسار الكامل إذا ما وجد في مجلد إخر.

مثال لملف موارد نصي:

 
support				 HTML "support.html"
content				  HTML "content.html"
help						HTML "help.html"
bg						   JPG	   "bg.jpg"
back					  BMP	  "back.bmp"
forward				BMP	  "forward.bmp"
home					 BMP	  "home.bmp"
next					   GIF		"next.gif"

عند كتابة هذا النص سجله في ملف بامتداد rc مثلا MyRes.rc. ثم نقوم بتصريفه إلى ملف res.

بورلاند توفر ملف سطر الأوامر BRCC32.exe يقوم بتصريف ملفات الموارد النصي إلى ملف موارد مصرف بامتداد res.

C:\> C:\DelphiPath\BIN\BRCC32.EXE	C:\ProjectPath\ MyRes.rc

بعد التصريف ستحصل على ملف جديد يحمل نفس إسم ملف الموارد النصي ويحمل امتداد res .

هناك برامج لتحرير ملفات الموارد في منصة رسومية WYSIWYG و هي تقنية ما تراه هو ما ستحصل عليه : What you see is what you get

.بالنسبة لبورلاند هناك برنامجين الأول هو Image Editor وهو بسيط ولا يمكنه تحرير جميع الأصناف ويصلح فقط لصور من صنف BMP وِ Cursor و

Icons.

image001lb8.gif

و هناك برنامج ثاني هو RESOURCE WORKSHOP وهو يأتي مع االإصدارات السابقة لديلفي و سي++ بويلدر إصدار entreprise و professionel.

image003la9.jpg

البرنامجين تخلت عنهما بورلاند و لم تعد تدرجهما في توزيعاتها و اكتفت فقط ببرنامج سطر الأوامر Brcc32.exe الذي يوجد في مجلد Bin’ و هو Borland

Resource Compiler. و تنصح بورلاند

ببرنامج قوي يشبه منصة ديلفي و هو Resource Builder:

http://www.resource-builder.com/features.html

image005tc3.jpg

يوجد محرر مفتوح المصدر رائع وسهل يمكنك من تحرير و قرائة الموارد في الملفات rc و res و exe و dll وهو Resource Hacker وهو مجاني. http://angusj.com/resourcehacker" target="_blank">

http://angusj.com/resourcehacker</a>

image006sn2.gif

Workshop.rar

تم تعديل هذه المشاركة بواسطة ikossan في 20 أغسطس 2007 في 16:34

سأتغيب عن المنتدى وستكون لي زيارات خفيفة بين الحين و الحين

يا صاحب الهم إن الهم منفرج.....................أبشر بخير فإن الفارج الله.

اليأس يقطع أحيانا بصاحبه..........................لا تيأس فإن الكافي الله.

الله يحدث بعد العسر ميسرة.........................لا تفزعن فإن الصانع الله.

إذا بليت فثق بالله وارض به...................فإن الذي يكشف البلوى هو الله.

و الله ما لك غير الله من أحد.......................فحسبك الله في كل لك الله

أخوكم مراد

27_06_06_05_21_41_1151410901logo_adl_wal_ihsan.jpg

#5

لنمر لتطبيق عملي باستعمال ملفات الموارد res:

كيف يمكنني إضافة ملف res و استفادة منه في البرمجة بلغة ديلفي؟

عند بدأ أي مشروع جديد ذو واجهة رسومية في الديلفي, فإن ديلفي ستنشأ ملف موارد تلقائيا يحمل نفس إسم المشروع يحتوي على أيقونة التطبيق وعلى معلومات

الأصدارة فقط.

لهذا سننشأ ملفنا الخاص بكل الموارد التي تريدها سواء ملف موارد واحد أو مجموعة ملفات موارد, وستدرجها في مجال Implementation على هذا النحو:

 
Implementation
{$R	MyRes.res}

ثم نعرف متغير عام قبلها في مجال Interface:

 
 var
Res : TResourceStream;

المتغير Res سنحتاجه عند استخلاص مورد من الموارد الخاصة.

صورة BMP:

 
image1.Picture.Bitmap.LoadFromResourceName(hinstance, 'MYBMP');

أو

 
Image1.Picture.Bitmap.Handle:=LoadBitmap(hInstance, 'MYBMP');

hinstance هي Instance Handle للتطبيق application.hinstance , و MYBMP هو إسم المورد داخل ملف MyRes.res الذي عرف على أنه من

صنف BMP:

 
MYBMP			   BMP					  c:\mypath\..\image.bmp

ألأيقونات Icon:

 
Form1.Icon.Handle:= LoadIcon(hInstance, ('MyIcon'));

أو

 
Image1.Picture.Icon.Handle:= LoadIcon(hInstance,'MyIcon');

Cursor:

 
//  extract the Cursor from Resource
Screen.Cursors[1] := LoadCursor(HInstance, 'MyCURSoR'); 
button12.Cursor := 1; // assigne  cursor 
self.Cursor := 1; // assigne  cursor 
form1.cursor:=1; // assigne  cursor

ملف صوت Wave :

 
procedure PlayWaveRes;
var
  Hres: THandle;
  Pres: PChar;
begin
  Hres := FindResource(0, pchar('MyWAV'), 'WAV'); // search the Resource
  Hres := LoadResource(0, Hres); // load it
  Pres := LockResource(Hres);
  sndPlaySound(Pres, SND_MEMORY); // play the sound WAV
  UnLockResource(Hres);
  FreeResource(Hres);
end;

ملف MP3 :

 
procedure PlayMp3Res;
begin
Res := TResourceStream.Create(0,'MyMP3','MP3');
Res.SaveToFile(ExtractFilePath(Application.ExeName) + 'my.mp3');
Res.Free;

Mediaplayer1.Close; // Mediaplayer1 is TMediaPlayer
Mediaplayer1.FileName := 'my.mp3';
Mediaplayer1.Open;
Mediaplayer1.Play;

end;	   // in OnClose event of TForm, set Mediaplayer1.Close.

ملف نص Text:

 
Res := TResourceStream.Create(0,'MyTXT','TEXT');
MemoTexte.Lines.LoadFromStream(Res);
Res.Free;

صورةJPEG :

 
uses  jpeg;

procedure PlayMp3Res;
var
  jpg: TjpegImage;
begin
  jpg := TJPEGimage.Create;
  Res := TResourceStream.Create(hinstance, 'MyJPEG', RT_RCDATA);
  Jpg.LoadFromStream(Res);
  Image1.Picture.Bitmap.Assign(jpg);
  Res.Free;
  jpg.Free;
end;

والأمثلة كثيرة جدا .. أرجو أن أكون قد لخصت فوائد إستعمال الموارد في البرمجة عامة و ديلفي خاصة

شكرا لك وائل.

تم تعديل هذه المشاركة بواسطة ikossan في 20 أغسطس 2007 في 06:37

سأتغيب عن المنتدى وستكون لي زيارات خفيفة بين الحين و الحين

يا صاحب الهم إن الهم منفرج.....................أبشر بخير فإن الفارج الله.

اليأس يقطع أحيانا بصاحبه..........................لا تيأس فإن الكافي الله.

الله يحدث بعد العسر ميسرة.........................لا تفزعن فإن الصانع الله.

إذا بليت فثق بالله وارض به...................فإن الذي يكشف البلوى هو الله.

و الله ما لك غير الله من أحد.......................فحسبك الله في كل لك الله

أخوكم مراد

27_06_06_05_21_41_1151410901logo_adl_wal_ihsan.jpg

#6

الله عليك استاذ الاساتذة

لا اعلم ماذا اقول الا ان الاخ عروة يجب حذف الرابطة التى ارفقتها فى المشاركة السابقة لان اذا حضر الماء بطل التيمم :D

{ربى زدنى علما}

#7

اخي الكريم ikossan

الله يعطيك الف عافية

هذا الرد ولا بلاش الله يخليك لنا ويبارك لك في علمك

عبدالله

:D :D :D :D :D

20_09_05_04_45_39_1127216739saudi_aC_.gif
#8

بارك الله فيك.

JuStNiCk: الله يعطيك ألف عافية والله ما قصرت, وأراك دائما في الخدمة ما شاء الله ولا قوة إلا بالله :lol: .

سأتغيب عن المنتدى وستكون لي زيارات خفيفة بين الحين و الحين

يا صاحب الهم إن الهم منفرج.....................أبشر بخير فإن الفارج الله.

اليأس يقطع أحيانا بصاحبه..........................لا تيأس فإن الكافي الله.

الله يحدث بعد العسر ميسرة.........................لا تفزعن فإن الصانع الله.

إذا بليت فثق بالله وارض به...................فإن الذي يكشف البلوى هو الله.

و الله ما لك غير الله من أحد.......................فحسبك الله في كل لك الله

أخوكم مراد

27_06_06_05_21_41_1151410901logo_adl_wal_ihsan.jpg

#9

هذا الرد ولا بلاش

هذا الموضوع مغلق.

مواضيع مشابهة