السلام عليكم
اريد كيفية حفظ عناصر DataGridView الى ملف نصى text file
صورة من الاداة
اريد حفظ الارقام الموجودة فى عمود IP
ولكن بشروط معينة
اولا
يتم التحقق من هذه الارقام
5.189.201.0 - 5.189.201.127
5.254.105.152 - 5.254.105.159
23.236.140.0 - 23.236.140.255
31.14.248.0 - 31.14.248.255
واريد انا احفظ الارقام المحصورة بينهم
مثال
من 5.189.201.127
الى 5.189.201.0
ومن 5.254.105.159
الى 5.254.105.152
وهكذا
انا فكرت ان استخرج الاكواد المحصورة بين الارقام
واتحقق منها ولكن لقيت ان البرنامج هيعلق وهيستخدم وقت كثير للحفظ
لان الاداة سوف يكون فيها عناصر من 100الف الى 500 الف تقريبا
فلذلك كتبت موضوعى هنا
لكى تساعدونى بطريقة تكون اسهل واسرع
بانتظاركم يا شباب ومشكورين مقدما
طلبك ليس صعبا لكنه يحتاج الي وقت
اولا بما انه ليس هناك صورة توضح البيانات في الداتاجريدفيو
هنا مهم جدا أن نعرف كم عدد الأعمدة في الداتاجريد فيو لأن هذا سوف يحدد اي الاعمدة سوف نستخدم لتحويل بياناته الي مصفوفة
عموما الفكرة هنا عبارة عن استخدام DataSource الخاصة ب الداتاجريد فيو و تحويلها الي مصفوفة عناصر أو الي DataTable مثلا
ثم تستخدم Serialization و De-Serialization لحفظ العناصر في ملف او لإسترجاع العناصر من الملف
أما نوع الملف فقد يكون xmal او تكست أو اي ملف
و المقصود بعملية Serialization و De-Serializatio
انك تستخدم FileStream مع BinaryFormatter لحفظ او استرجاع عناصر المصفوفة من الملف
و الكود الخاص بهذا سيكون شيئا من هذا القبيل و هو الحل لمشكلتك
وعليك فقط ان تستخدم كلمة IP بدلا من كلمة Object
والكود مكتوب ب اسلوب ان الحفظ يتم في ملف تحدد انت الاسم الخاص به و تحدد امتداده أيضا
PHP كود :
Public Sub Serialize(fileName As String, list As IEnumerable(Of Object))
Dim fs As System.IO.FileStream = New System.IO.FileStream(fileName, System.IO.FileMode.OpenOrCreate)
Dim formatter As System.Runtime.Serialization.Formatters.Binary.BinaryFormatter = New System.Runtime.Serialization.Formatters.Binary.BinaryFormatter()
Try
formatter.Serialize(fs, list)
fs.Close()
Catch ex As System.Runtime.Serialization.SerializationException
MessageBox.Show(ex.Message + ": " + ex.StackTrace, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error)
End Try
End Sub
Public Function Deserialize(fileName As String) As IEnumerable(Of Object)
Dim fs As System.IO.FileStream = New System.IO.FileStream(fileName, System.IO.FileMode.Open)
Dim list As New List(Of Object)()
Try
Dim Formatter As New System.Runtime.Serialization.Formatters.Binary.BinaryFormatter()
list = Formatter.Deserialize(fs)
fs.Close()
Return list
Catch ex As System.Runtime.Serialization.SerializationException
MessageBox.Show(ex.StackTrace, ex.Message, MessageBoxButtons.OK, MessageBoxIcon.Error)
Return list
End Try
End Function
نصيحتي لك أن تبني كلاس يكون اساسه العناصر التي سوف يتم حفظها خاصة اذا كان لديك اكثر من عنصر غير IP سوف يتم حفظه في الملف
ثم تبني Collection لهذا الكلاس حتي تستطيع ان تتحكم بعناصر المصفوفة بشكل أفضل أثناء عملية ظهورها في الداتاجريد فيو او أثناء حفظها في الملف
حل أخر
وهذا الحل مناسب جدا خاصة ان كانت البيانات المراد تخزينها بيانات غير حساسة
انك تستخدم XmlTextReader , لقراءة البيانات وتستخدم XmlTextWriter لحفظ البيانات
حل أخر
انك تستخدم BinaryReader مع BinaryWriter
عموما الأمر محتاج مجهود منك لتخزين البيانات بشكل دقيق حسب اهمية و نوعية البيانات
اسف لانى لم اضع صورة
السلام عليكم
اريد كيفية حفظ عناصر DataGridView الى ملف نصى text file
صورة من الاداة
اريد حفظ الارقام الموجودة فى عمود IP
ان اريد ان اعدل طلبي حتى يسهل على عمله وفهمه
اريد الحفظ عن طريق اسم البلد
كل بلد يتم حفظ الايبهات بتاعتها فى ملف نصى لوحدها
مثلا
Egypt.txt
Angola.txt
وهكذا
اعتقد هذا هو الحل الاسهل والافضل
لان القايمة هتكون فوق 500الف ايبى
ولو حفظت عن طريق الايبهات
يبقا هحتاج شهر عشان اكتر كل الايبهات فى الكود
واسبوع عشان يحفظ قائمة واحدة
هذا خطى بعتذر عن ذلك
المطلوب
اريد الحفظ عن طريق اسم البلد
كل بلد يتم حفظ الايبهات بتاعتها فى ملف نصى لوحدها
مثلا
Egypt.txt
Angola.txt
وهكذا
الفكرة لم لم يفهم جيدا
لدى 3 عواميد
العمود الاول فيه الايبى
العمود الثانى فيه اسم البلد
العمود الثالث فيه علم البلد
المفروض نعمل كود يحفظ ايبهات مصر فى ملف نصى لوحدها
وايبهات انجولا فى ملف لوحدها وهكذا
واسف على الاطالة
بانتظار المساعدة
ومشكورين مقدما
هل من حل او مساعد يا شباب
انا محتاج مساعدة فى اقرب وقت ان امكن
ومشكورين مقدما
لكل من حاول المساعدة -
اخى الغالى
شكرا لك معلش تعبتك معى
ولكنى لا استعمل قواعد البيانات
عموما انا لقيت حل فى موقع اخر
والحمدلله افاد بالغرض
هذا هو الكود
Dim y As Integer = 0
Dim strFile As String
Dim sw1 As StreamWriter
Do Until y = DataGridView1.RowCount - 1
Dim x As String = DataGridView1.Rows(y).Cells(1).Value
strFile = x & ".txt"
If (Not File.Exists(strFile)) Then
sw1 = File.CreateText(strFile)
sw1.WriteLine(DataGridView1.Rows(y).Cells(0).Value)
sw1.Close()
Else
sw1 = (File.AppendText(strFile))
sw1.WriteLine(DataGridView1.Rows(y).Cells(0).Value)
sw1.Close()
End If
y = y + 1
Loop
شكرا لكم جميعا
اتمنى اغلاق الموضوع للانتهاء