السلام عليكم ورحمةالله و بركاته
مثلا لدينا ListBox يحتوي عدد غير محدد (لاني اريد المعادلة فقط) و اقصد مرة 150 و مرة 230 وهكذا
لو حبيت تقسيمه بقيمة ايضا ليست ثابتة .
مثال آخر:
اريد كل 80 سطر اجعله قسم آخر اي احفظه المهم ماهي المعادلة ؟
وانا اتصفح بالجوال وجدت سؤال اجاب عليه الاخ Selverlight لكن لما دخلت المنتدى وظليت ابحث لم اجده.
وعليكم السلام ورحمة الله وبركاته
هل تقصد مثلاً :
أنه لو لديك 141 عنصر أن تأخذ من الـ ListBox :
عناصر مثلاً 50 وتضعهم في ملف ثم 50 وتضعهم في ملف وتأخذ الباقي في ملف آخر ..
؟؟؟
؟؟
؟
(25-08-22, 08:34 AM)Taha Okla كتب : [ -> ]وعليكم السلام ورحمة الله وبركاته
هل تقصد مثلاً :
أنه لو لديك 141 عنصر أن تأخذ من الـ ListBox :
عناصر مثلاً 50 وتضعهم في ملف ثم 50 وتضعهم في ملف وتأخذ الباقي في ملف آخر ..
؟؟؟
؟؟
؟
السلام عليكم و رحمة الله و بركاته
ربما هذا الموضوع يقي بالغرض او يقربها
https://stackoverflow.com/questions/3840...to-2-parts
(25-08-22, 08:34 AM)Taha Okla كتب : [ -> ]وعليكم السلام ورحمة الله وبركاته
هل تقصد مثلاً :
أنه لو لديك 141 عنصر أن تأخذ من الـ ListBox :
عناصر مثلاً 50 وتضعهم في ملف ثم 50 وتضعهم في ملف وتأخذ الباقي في ملف آخر ..
؟؟؟
؟؟
؟
اي نعم هذا هو القصد وهذا اريده لكي اصحح مشروع الدمج والتقسيم لانه تنقصه الدقة من هذا الجانب.
(25-08-22, 08:43 AM)asmarsou كتب : [ -> ] (25-08-22, 08:34 AM)Taha Okla كتب : [ -> ]وعليكم السلام ورحمة الله وبركاته
هل تقصد مثلاً :
أنه لو لديك 141 عنصر أن تأخذ من الـ ListBox :
عناصر مثلاً 50 وتضعهم في ملف ثم 50 وتضعهم في ملف وتأخذ الباقي في ملف آخر ..
؟؟؟
؟؟
؟
السلام عليكم و رحمة الله و بركاته
ربما هذا الموضوع يقي بالغرض او يقربها
https://stackoverflow.com/questions/3840...to-2-parts
يمكن نفس الفكرة وباذن الله ساحاول فهم الموضوع من الرابط.
انا ذكرت الليست بوكس كمثال وانا اطبق مثال جديد عليه ان انا فهمت الفكرة فسانتقل باذن الله الى مشروع تقسيم الملفات لكي اصحح هذه الجزئية فهي غير دقيقة بما يكفي.
في البداية عليك معرفة عدة عناصر :
عدد المجموعات - أو قدد عناصر كل مجموعة :
إذا كنت تريد تقسيمه بحسب عدد المجموعات
فيكون لديك عدة متغيرات
(مجموع العناصر الكلي) تقسيم (عدد عناصر المجموعة الواحدة) = عدد المجموعات.
في التقسيم هنا نستخدم الاشارة (BackSlash) لأنها تعطي نتيجة صحيحة بدون فواصل يعني الاشارة (\).
بعد ذلك تحسب الباقي وذلك من خلال الدالة (Mod) ..
(مجموع العناصر الكلي) Mod (عدد عناصر المجموعة الواحدة) = باقي القسمة .
فهذه تعطيك الرقم الصحيح أيضاً والذي لا يقبل القسمة على الرقم المقسوم عليه ..
=========================================
وإذا كان لديك عدد عناصر المجموعة الواحدة معلوم استخدم الكود التالي :
كود :
ListBox2.Items.Clear()
' Val(TextBox2.Text) هي عدد عناصر المجموعة الواحدة
Dim N1 As Integer = ListBox1.Items.Count \ Val(TextBox2.Text) ' عدد المجموعات
Dim M1 As Integer = ListBox1.Items.Count Mod Val(TextBox2.Text)
For i = 1 To N1
ListBox2.Items.Add(TextBox2.Text)
Next
ListBox2.Items.Add(M1)
إذا كان لديك عدد المجموعات معلوم استخدم التالي لمعرفة عدد عناصر كل مجموعة :
كود :
ListBox2.Items.Clear()
' Val(TextBox2.Text) هي عدد المجموعات
Dim N1 As Integer = ListBox1.Items.Count \ Val(TextBox2.Text) ' عدد عناصر المجموعة الواحدة
Dim M1 As Integer = ListBox1.Items.Count Mod N1
For i = 1 To Val(TextBox2.Text)
ListBox2.Items.Add(N1)
Next
ListBox2.Items.Add(M1)
الباقي عليك و هو فرز المجموعات بحسب الحلقة والتي بات معلوم لديك قيمة عناصرها..
باذن الله ساعيد القراءة للاكواد مرات عدة حتى اتمكن من تطبيق الفكرة.
شوف الكود اللي كتبته (اقصد انا) كتبته قبل كتابة الموضوع وواجهت اشكالية هي نفس اشكالية المشروع الخاص بالتقسيم والدمج وهو ان الملفات الصغيرة الحجم لا تنفع معها بسبب المشكلة بالكود:
PHP كود :
Imports System.IO
Public Class Form1
Dim fpath As String = IO.Path.GetDirectoryName(Application.ExecutablePath) & "\textfiles\"
Private Sub Form1_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
For i As Integer = 0 To 100
ListBox1.Items.Add(i.ToString("000"))
Next
If IO.Directory.Exists(fpath) = False Then
IO.Directory.CreateDirectory(fpath)
End If
End Sub
Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click
Dim maxint As Integer = 40
Dim i As Integer
Dim all As String = ""
For i = 0 To ListBox1.Items.Count - 1
ListBox1.SetSelected(i, True)
Dim fn As String = fpath & i.ToString("000") & ".txt"
all &= ListBox1.Text & vbNewLine
If i >= maxint Then
If i Mod maxint = 0 Then
IO.File.WriteAllText(fn, all)
all = ""
End If
End If
fn = Nothing
Next
End Sub
End Class
هذا الكود نتيجته يحفظ الى 80 فقط .
ماهي الجزئية الخطأ.
(25-08-22, 09:47 AM)سعود كتب : [ -> ]باذن الله ساعيد القراءة للاكواد مرات عدة حتى اتمكن من تطبيق الفكرة.
شوف الكود اللي كتبته (اقصد انا) كتبته قبل كتابة الموضوع وواجهت اشكالية هي نفس اشكالية المشروع الخاص بالتقسيم والدمج وهو ان الملفات الصغيرة الحجم لا تنفع معها بسبب المشكلة بالكود:
PHP كود :
Imports System.IO
Public Class Form1
Dim fpath As String = IO.Path.GetDirectoryName(Application.ExecutablePath) & "\textfiles\"
Private Sub Form1_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
For i As Integer = 0 To 100
ListBox1.Items.Add(i.ToString("000"))
Next
If IO.Directory.Exists(fpath) = False Then
IO.Directory.CreateDirectory(fpath)
End If
End Sub
Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click
Dim maxint As Integer = 40
Dim i As Integer
Dim all As String = ""
For i = 0 To ListBox1.Items.Count - 1
ListBox1.SetSelected(i, True)
Dim fn As String = fpath & i.ToString("000") & ".txt"
all &= ListBox1.Text & vbNewLine
If i >= maxint Then
If i Mod maxint = 0 Then
IO.File.WriteAllText(fn, all)
all = ""
End If
End If
fn = Nothing
Next
End Sub
End Class
هذا الكود نتيجته يحفظ الى 80 فقط .
ماهي الجزئية الخطأ.
استاذ اذا كان قصدك كما فهمت هو تقسيم عناصر الليست اي ال 100 عنصر المنشأة عند الفورم لود الى قسمين متساويين اي كل قسم 50 عنصر فقط غير معرف ال maxint في بداية كود البوتن من =40 الى عدد عناصر الليست الحقيقية ال 100 عنصر ليصبح الكود برمته على النحو
PHP كود :
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
Dim maxint As Integer = (ListBox1.Items.Count - 1) / 2
Dim i As Integer
Dim all As String = ""
For i = 0 To ListBox1.Items.Count - 1
ListBox1.SetSelected(i, True)
Dim fn As String = fpath & i.ToString("000") & ".txt"
all &= ListBox1.Text & vbNewLine
If i >= maxint Then
If i Mod maxint = 0 Then
IO.File.WriteAllText(fn, all)
all = ""
End If
End If
fn = Nothing
Next
End Sub
إقتباس :استاذ اذا كان قصدك كما فهمت هو تقسيم عناصر الليست اي ال 100 عنصر المنشأة عند الفورم لود الى قسمين متساويين اي كل قسم 50 عنصر فقط غير معرف ال maxint في بداية كود البوتن من =40 الى عدد عناصر الليست الحقيقية ال 100 عنصر ليصبح الكود برمته على النحو
الـ maxint هذا متغير وهو يمثل حجم التقسيم لو كانت بنود الليست بوكس كلها 100 اريد ان قسمناها على 40 و 40 يبقى 20 هذه الاخيرة كيف اقتنصها و اطبعها.
خذها من يد عربية :
كود :
Dim maxint As Integer = 40
Dim i As Integer
Dim all As String = ""
Dim j As Integer
For i = 0 To ListBox1.Items.Count - 1
ListBox1.SetSelected(i, True)
Dim fn As String = fpath & i.ToString("000") & ".txt"
all &= ListBox1.Text & vbNewLine
If (i + 1) >= maxint Then
If (i + 1) Mod maxint = 0 Then
IO.File.WriteAllText(fn, all)
all = ""
ElseIf (i + 1) > (maxint * ((ListBox1.Items.Count - 1) \ maxint)) Then
For j = (maxint * ((ListBox1.Items.Count - 1) \ maxint)) + 1 To ListBox1.Items.Count - 1
i = j
ListBox1.SetSelected(i, True)
all &= ListBox1.Text & vbNewLine
Next
i = j + 1
IO.File.WriteAllText(fpath & j.ToString("000") & ".txt", all)
all = ""
' i = j
End If
End If
fn = Nothing
Next
(مع أنه مو عاجبني طريقة الكود) أظن هناك أفضل من هذه الطريقة وكود أبسط لتقسيم البيانات ولكن أبقيت على نفس الطريقة التي تعرفها..
بالتوفيق ..