منتدى فيجوال بيسك لكل العرب | منتدى المبرمجين العرب

نسخة كاملة : استخدام ملفات الـ Resources
أنت حالياً تتصفح نسخة خفيفة من المنتدى . مشاهدة نسخة كاملة مع جميع الأشكال الجمالية .
الصفحات : 1 2 3
نحمده ونصلي على رسوله الكريم
السلام عليكم ورحمة الله

اولا نستورد التالي:
:#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

مرفق مثال
لا اعرف اين المرفقات!!! قد تساعدنا الادارة بذلك....
السلام عليكم

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

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

تحياتي
وعليكم السلام ورحمة الله
وبارك الله فيك اخ سجاد المقال منور بوجودك
السلام عليكم


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

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

+

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



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

ملفات الـ 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
المثال المرفق فيه كل ما تكلمت عنه يمكن الاطلاع عليه
اخي ربيع جزاك الله خيرا وجعله في موازين حسناتك يوم تلقاه
شرح وافي وكافي
ولي سؤال اخر اسف لذلك
ما الفائدة منها لا اجد فيها ميزة معينة تطرني يوم ما لاستخدامها
حيث التعامل مع xml يغني وانت خبير بذلك
في سؤال قديم مر على بالي

الحين لما تضغط على ملف في ال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 هل له علاقة بالرسورس ؟؟ وما وظيفته ؟



وشكرا جزيلا
الصفحات : 1 2 3