المشاركات : 7,397
المواضيع 802
الإنتساب : Sep 2013
السمعة :
853
الشكر: 13167
تم شكره 18826 مرات في 4421 مشاركات
السلام عليكم ورحمةالله و بركاته
مثلا لدينا ListBox يحتوي عدد غير محدد (لاني اريد المعادلة فقط) و اقصد مرة 150 و مرة 230 وهكذا
لو حبيت تقسيمه بقيمة ايضا ليست ثابتة .
مثال آخر:
اريد كل 80 سطر اجعله قسم آخر اي احفظه المهم ماهي المعادلة ؟
وانا اتصفح بالجوال وجدت سؤال اجاب عليه الاخ Selverlight لكن لما دخلت المنتدى وظليت ابحث لم اجده.
اللهم إني أعوذ بك من غلبة الدين وغلبة العدو، اللهم إني أعوذ بك من جهد البلاء ومن درك الشقاء ومن سوء القضاء ومن شماتة الأعداء
اللهم اغفر لي خطيئتي وجهلي، وإسرافي في أمري وما أنت أعلم به مني، اللهم اغفر لي ما قدمت وما أخرت، وما أسررت وما أعلنت وما أنت أعلم به مني، أنت المقدم وأنت المؤخر وأنت على كل شيء قدير
المشاركات : 1,262
المواضيع 16
الإنتساب : May 2016
السمعة :
291
الشكر: 801
تم شكره 2223 مرات في 1168 مشاركات
25-08-22, 08:34 AM
(آخر تعديل لهذه المشاركة : 25-08-22, 08:35 AM {2} بواسطة Taha Okla.)
وعليكم السلام ورحمة الله وبركاته
هل تقصد مثلاً :
أنه لو لديك 141 عنصر أن تأخذ من الـ ListBox :
عناصر مثلاً 50 وتضعهم في ملف ثم 50 وتضعهم في ملف وتأخذ الباقي في ملف آخر ..
؟؟؟
؟؟
؟
قال صلى الله عليه وسلم:
«كلمتان خفيفتان على اللسان
ثقيلتان في الميزان،حبيبتان إلى الرحمن:
سبحان الله وبحمده، سبحان الله العظيم».
المشاركات : 378
المواضيع 41
الإنتساب : Nov 2019
السمعة :
97
الشكر: 884
تم شكره 782 مرات في 341 مشاركات
(25-08-22, 08:34 AM)Taha Okla كتب : وعليكم السلام ورحمة الله وبركاته
هل تقصد مثلاً :
أنه لو لديك 141 عنصر أن تأخذ من الـ ListBox :
عناصر مثلاً 50 وتضعهم في ملف ثم 50 وتضعهم في ملف وتأخذ الباقي في ملف آخر ..
؟؟؟
؟؟
؟
السلام عليكم و رحمة الله و بركاته
ربما هذا الموضوع يقي بالغرض او يقربها
https://stackoverflow.com/questions/3840...to-2-parts
المشاركات : 7,397
المواضيع 802
الإنتساب : Sep 2013
السمعة :
853
الشكر: 13167
تم شكره 18826 مرات في 4421 مشاركات
25-08-22, 08:51 AM
(آخر تعديل لهذه المشاركة : 25-08-22, 08:55 AM {2} بواسطة سعود.)
(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
يمكن نفس الفكرة وباذن الله ساحاول فهم الموضوع من الرابط.
انا ذكرت الليست بوكس كمثال وانا اطبق مثال جديد عليه ان انا فهمت الفكرة فسانتقل باذن الله الى مشروع تقسيم الملفات لكي اصحح هذه الجزئية فهي غير دقيقة بما يكفي.
اللهم إني أعوذ بك من غلبة الدين وغلبة العدو، اللهم إني أعوذ بك من جهد البلاء ومن درك الشقاء ومن سوء القضاء ومن شماتة الأعداء
اللهم اغفر لي خطيئتي وجهلي، وإسرافي في أمري وما أنت أعلم به مني، اللهم اغفر لي ما قدمت وما أخرت، وما أسررت وما أعلنت وما أنت أعلم به مني، أنت المقدم وأنت المؤخر وأنت على كل شيء قدير
المشاركات : 1,262
المواضيع 16
الإنتساب : May 2016
السمعة :
291
الشكر: 801
تم شكره 2223 مرات في 1168 مشاركات
25-08-22, 09:22 AM
(آخر تعديل لهذه المشاركة : 25-08-22, 09:23 AM {2} بواسطة Taha Okla.)
في البداية عليك معرفة عدة عناصر :
عدد المجموعات - أو قدد عناصر كل مجموعة :
إذا كنت تريد تقسيمه بحسب عدد المجموعات
فيكون لديك عدة متغيرات
(مجموع العناصر الكلي) تقسيم (عدد عناصر المجموعة الواحدة) = عدد المجموعات.
في التقسيم هنا نستخدم الاشارة (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)
الباقي عليك و هو فرز المجموعات بحسب الحلقة والتي بات معلوم لديك قيمة عناصرها..
قال صلى الله عليه وسلم:
«كلمتان خفيفتان على اللسان
ثقيلتان في الميزان،حبيبتان إلى الرحمن:
سبحان الله وبحمده، سبحان الله العظيم».
المشاركات : 7,397
المواضيع 802
الإنتساب : Sep 2013
السمعة :
853
الشكر: 13167
تم شكره 18826 مرات في 4421 مشاركات
باذن الله ساعيد القراءة للاكواد مرات عدة حتى اتمكن من تطبيق الفكرة.
شوف الكود اللي كتبته (اقصد انا) كتبته قبل كتابة الموضوع وواجهت اشكالية هي نفس اشكالية المشروع الخاص بالتقسيم والدمج وهو ان الملفات الصغيرة الحجم لا تنفع معها بسبب المشكلة بالكود:
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 فقط .
ماهي الجزئية الخطأ.
اللهم إني أعوذ بك من غلبة الدين وغلبة العدو، اللهم إني أعوذ بك من جهد البلاء ومن درك الشقاء ومن سوء القضاء ومن شماتة الأعداء
اللهم اغفر لي خطيئتي وجهلي، وإسرافي في أمري وما أنت أعلم به مني، اللهم اغفر لي ما قدمت وما أخرت، وما أسررت وما أعلنت وما أنت أعلم به مني، أنت المقدم وأنت المؤخر وأنت على كل شيء قدير
المشاركات : 378
المواضيع 41
الإنتساب : Nov 2019
السمعة :
97
الشكر: 884
تم شكره 782 مرات في 341 مشاركات
(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
المشاركات : 7,397
المواضيع 802
الإنتساب : Sep 2013
السمعة :
853
الشكر: 13167
تم شكره 18826 مرات في 4421 مشاركات
إقتباس :استاذ اذا كان قصدك كما فهمت هو تقسيم عناصر الليست اي ال 100 عنصر المنشأة عند الفورم لود الى قسمين متساويين اي كل قسم 50 عنصر فقط غير معرف ال maxint في بداية كود البوتن من =40 الى عدد عناصر الليست الحقيقية ال 100 عنصر ليصبح الكود برمته على النحو
الـ maxint هذا متغير وهو يمثل حجم التقسيم لو كانت بنود الليست بوكس كلها 100 اريد ان قسمناها على 40 و 40 يبقى 20 هذه الاخيرة كيف اقتنصها و اطبعها.
اللهم إني أعوذ بك من غلبة الدين وغلبة العدو، اللهم إني أعوذ بك من جهد البلاء ومن درك الشقاء ومن سوء القضاء ومن شماتة الأعداء
اللهم اغفر لي خطيئتي وجهلي، وإسرافي في أمري وما أنت أعلم به مني، اللهم اغفر لي ما قدمت وما أخرت، وما أسررت وما أعلنت وما أنت أعلم به مني، أنت المقدم وأنت المؤخر وأنت على كل شيء قدير
المشاركات : 1,262
المواضيع 16
الإنتساب : May 2016
السمعة :
291
الشكر: 801
تم شكره 2223 مرات في 1168 مشاركات
خذها من يد عربية :
كود :
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
(مع أنه مو عاجبني طريقة الكود) أظن هناك أفضل من هذه الطريقة وكود أبسط لتقسيم البيانات ولكن أبقيت على نفس الطريقة التي تعرفها..
بالتوفيق ..
قال صلى الله عليه وسلم:
«كلمتان خفيفتان على اللسان
ثقيلتان في الميزان،حبيبتان إلى الرحمن:
سبحان الله وبحمده، سبحان الله العظيم».
المشاركات : 378
المواضيع 41
الإنتساب : Nov 2019
السمعة :
97
الشكر: 884
تم شكره 782 مرات في 341 مشاركات
(25-08-22, 12:21 PM)Taha Okla كتب : خذها من يد عربية :
كود :
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
(مع أنه مو عاجبني طريقة الكود) أظن هناك أفضل من هذه الطريقة وكود أبسط لتقسيم البيانات ولكن أبقيت على نفس الطريقة التي تعرفها..
بالتوفيق ..
احسنت
|