03-10-12, 08:14 AM
كما يمكننا تطوير كود الاستعادة بعدة أشكال حسب الحاجة فمثلا يمكننا تعديل الإجراء لينقل الملف إلى MemoryStream عوضا عن Filestream وبهذا يخزن في ذاكرة مؤقتة بحيث يمكن استخدامه ويكون الإجراء المعدل ليعيد memorystream كما يلي
فإذا افترضنا أن الملف هو صورة باسم Pic0.jpg مثلا وأردنا تحميلها في مربع الصور نستخدم الكود التالي
وهذا مثال عن استخدام الكود الأول الذي يستعيد إلى ملف على القرص
كود :
Private Sub ExBinResToMemoryStream(ByVal EmResourceName As String, _
ByRef RetMemStr As MemoryStream)
Try
Dim Ref As Assembly = Assembly.GetExecutingAssembly
Dim ResStr As Stream = Ref.GetManifestResourceStream(Ref.GetName.Name & "." & EmResourceName)
Dim TmBuff(ResStr.Length - 1) As Byte
ResStr.Read(TmBuff, 0, ResStr.Length)
RetMemStr = New MemoryStream(ResStr.Length)
RetMemStr.Write(TmBuff, 0, ResStr.Length)
Catch ex As Exception
MsgBox(ex.Message)
End Try
End Subفإذا افترضنا أن الملف هو صورة باسم Pic0.jpg مثلا وأردنا تحميلها في مربع الصور نستخدم الكود التالي
كود :
Dim Ms As MemoryStream
ExBinResToMemoryStream("Pic0.jpg", Ms)
Me.PictureBox1.Image = New Bitmap(Ms)
Ms.Close()
Ms.Dispose()كود :
' فتح صندوق حوار فتح
If Me.SFD.ShowDialog = Windows.Forms.DialogResult.OK Then
' استدعاء الإجراء وتمرير اسم الملف واسم المصدر الثنائي
ExtractBinaryResource(Me.SFD.FileName, "test.mdb")
' عرض رسالة بعد الانتهاء
MsgBox("Ok")
End If