تقييم الموضوع :
  • 1 أصوات - بمعدل 5
  • 1
  • 2
  • 3
  • 4
  • 5
[مثال] استخدام ملفات الـ Resources
#1
نحمده ونصلي على رسوله الكريم
السلام عليكم ورحمة الله

اولا نستورد التالي:
:#C
كود :
using System.Resources;

:VB
كود :
Imports System.Resources

الان نعرف متغير للكتابة:
:#C
كود :
ResXResourceWriter xWriter = new ResXResourceWriter(path);

:VB
كود :
Dim xWriter As New ResXResourceWriter(path)

في الوسيطه نرسل مسار حفظ الملف
الان نضيف البيانات:
:#C
كود :
xWriter.AddResource("Name", "الاسم");
xWriter.AddResource("Address", "العنوان");
xWriter.AddResource("Phone", "رقم الهاتف");
xWriter.AddResource("Image", "الصورة");
xWriter.AddResource("File", "ملف مرفق");

:VB
كود :
xWriter.AddResource("Name", "الاسم")
xWriter.AddResource("Address", "العنوان")
xWriter.AddResource("Phone", "رقم الهاتف")
xWriter.AddResource("Image", "الصورة")
xWriter.AddResource("File", "ملف مرفق")

اما قراءة الملف:
:#C
كود :
ResXResourceReader xReader = new ResXResourceReader(path);

foreach (DictionaryEntry de in xReader)
    switch (de.Key.ToString())
    {
        case "Name":
            الاسم = de.Value.ToString();
            break;

        case "Address":
            العنوان = de.Value.ToString();
            break;

        case "Phone":
            رقم الهاتف = de.Value.ToString();
            break;

        case "Image":
            الصورة = (byte[])de.Value;
            break;

        case "File":
            الملف المرفق = (byte[])de.Value;
            break;
    }

:VB
كود :
Dim xReader As New ResXResourceReader(path)

For Each de As DictionaryEntry In xReader
    Select Case de.Key.ToString()
        Case "Name"
            الاسم = de.Value.ToString()

        Case "Address"
            العنوان = de.Value.ToString()

        Case "Phone"
            رقم الهاتف = de.Value.ToString()

        Case "Image"
            الصورة = CType(de.Value, Byte())

        Case "File"
            الملف المرفق = CType(de.Value, Byte())
    End Select
Next de

مرفق مثال


الملفات المرفقة
.rar   HRResources (VB).rar (الحجم : 18.02 ك ب / التحميلات : 112)
.rar   HRResources (C#).rar (الحجم : 16.73 ك ب / التحميلات : 96)
الرد }}}
#2
لا اعرف اين المرفقات!!! قد تساعدنا الادارة بذلك....
الرد }}}
تم الشكر بواسطة:
#3
السلام عليكم

بارك الله بيك اخي العزيز ربيع نورتنا بمقالاتك

جزاك الله خيرا

تحياتي
الرد }}}
تم الشكر بواسطة: ربيع , smss
#4
وعليكم السلام ورحمة الله
وبارك الله فيك اخ سجاد المقال منور بوجودك
الرد }}}
تم الشكر بواسطة:
#5
السلام عليكم


موضوع هام ورائع جدا ، شكرا جزيلا

كثروا من هالمواضيع ياجماعة Big Grin ههه

+

تم اعتماد المرفقات



تحياتي
الرد }}}
تم الشكر بواسطة: ربيع
#6
وعليكم السلام ورحمة الله
بارك الله فيك الله يعطيك العافيه
الرد }}}
تم الشكر بواسطة:
#7
اخي ربيع ممكن توضيح بسيط وجزاك الله خيرا
الرد }}}
تم الشكر بواسطة: ربيع
#8
نحمده ونصلي على رسوله الكريم

ملفات الـ Resources اشبه بملفات الـ XML لكن التعامل معها مختلف قليلا، فهي اسهل لان بيئة التطوير تحتوي على فئات للتعامل مع هذه الملفات، فيها اجراءات تسهل العمليات عليها.
عند الكتابة على ملف نعرف متغير من فئة الـ ResXResourceWriter ثم نعطيه مسار الملف لحفظه، ثم بعد ذلك نبدأ بكتابة البيانات فيه من خلال الاجراء ()AddResource الذي ياخذ وسيطات مختلفة منهاSadstring name, string value) الوسيطة الاولى هي مفتاح القيمة التي نستطيع معرفتها عند القراءه والثانية هي القيمة، كما فعلنا في المثال:
كود :
xWriter.AddResource("Name", "الاسم");
الوسيطة الاولى "Name" هي المفتاح، يمكننا كتابة ما نريد في المفتاح مثلا "N" او اي شيء هو فقط مفتاح وحاجته هي عند قراءة الملف نتعرف على القيم من خلال مفاتيحها.
هناك ايضا وسيطات لنفس الاجراء تاخذ قمية (string name, byte[] value)، يمكننا تخزين ما نريد في مصفوفة الـ byte كتخزين ملف مثلا عند قراءته كمصفوفة byte او تخزين فئة مثلا عند تحويلها لمصفوفة byte او ما نشاء، يتم حفظ هذه البيانات داخل الملف كلا حسب نوعه ولو حفظنا صورة او ملف هناك فلن نحتاج الملف الموجود على القرص الصلب لان الملف اصبح داخل ملف الـ Resource كمصفوفة byte
وعند قراءة ملف الـ Resources نعرف متغير من الفئة ResXResourceReader التي تاخذ وسيطة وهي مسار الملف المراد قراءته
يمكننا الان تعريف متغير من نوع DictionaryEntry لعمل حلقة نجلب بها البيانات من خلال التعرف على المفتاح
كود :
if(DictionaryEntry.Key.ToString() == "Name")
ولجلب البيانات التي في المفتاح "Name":
كود :
DictionaryEntry.Value.ToString();
اما البيانات من نوع مصفوفة []byte نستخدم معها دوال التحويل، مثلا لجلب الصورة من الملف:
كود :
Image.FromStream(new MemoryStream((byte[])DictionaryEntry.Value))
Image.FromStream تاخذ وسيطة من نوع Stream و MemoryStream تاخذ وسيطة من نوع مصفوة []byte
المثال المرفق فيه كل ما تكلمت عنه يمكن الاطلاع عليه
الرد }}}
تم الشكر بواسطة: Sajad
#9
اخي ربيع جزاك الله خيرا وجعله في موازين حسناتك يوم تلقاه
شرح وافي وكافي
ولي سؤال اخر اسف لذلك
ما الفائدة منها لا اجد فيها ميزة معينة تطرني يوم ما لاستخدامها
حيث التعامل مع xml يغني وانت خبير بذلك
الرد }}}
تم الشكر بواسطة: hoob computer , ربيع
#10
في سؤال قديم مر على بالي

الحين لما تضغط على ملف في الResource وتروح الى قائمة الخصائص

تلاقي Build Action يساوي None

تقدر تغيرها الى Embedded resource


الحين امبي اعرف الفرق بين لما تخليه None ولما تخليه Embedded resource (رسورس مضمن !!)

لاني واجهت كود منزمان يتعامل مع الرسورس ، ماذكر ويش كانت وظيفته بالضبط ، بس مايشتغل الا لما يكون الملف
Build Action = Embedded resource


المهم بختصر لك الي يدور في بالي في 4 اسطر :-


1- ما الفرق بين Embedded resource - والوضع العادي (None)
2- عندما نختار Embedded resource فأين يتم حفظ الملف ؟ (داخل الexe) ؟؟
3 - عندما نختار None فاين يتم حفظ الملف ؟
4- ملف resx هل له علاقة بالرسورس ؟؟ وما وظيفته ؟



وشكرا جزيلا
الرد }}}
تم الشكر بواسطة: hoob computer , ali.alfoly , ربيع


المواضيع المحتمل أن تكون متشابهة .
الموضوع : الكاتب الردود : المشاهدات : آخر رد
  استخدام Whatsapp API مع #C mona82 2 2,642 22-03-23, 10:47 AM
آخر رد: dr.programming
  التعامل مع ملفات xml بلغتي C#&VB Sajad 7 14,053 08-11-17, 10:21 AM
آخر رد: nani49
  التعامل مع ملفات zip الشاكي لله 4 3,522 12-02-16, 02:48 PM
آخر رد: nani49

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


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