04-09-20, 08:08 PM
(آخر تعديل لهذه المشاركة : 04-09-20, 10:06 PM {2} بواسطة معاند الحظ.)
اخي بازوكا أسف على الرد الاول كان خاطىء
واعذرني لاني بصراحة كذا مرة اشوف السؤال هذا في المنتدى او سؤال قريب منه واحس انه بسيط لكن بااتضح انه على الاقل يبغى زيادة تركيز
لكن الحمد لله رجعت دققت في سؤالك وحاولت اغير طريقتي للحل
وان شاء الله يكون هذا الحل هو اللي ماتسأل بعده
تفضل الكود:
لكن رجاء تخبرني اذا كان الحل صحيح او كان خاطىء
تحياتي
واعذرني لاني بصراحة كذا مرة اشوف السؤال هذا في المنتدى او سؤال قريب منه واحس انه بسيط لكن بااتضح انه على الاقل يبغى زيادة تركيز
لكن الحمد لله رجعت دققت في سؤالك وحاولت اغير طريقتي للحل
وان شاء الله يكون هذا الحل هو اللي ماتسأل بعده
تفضل الكود:
كود :
Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click
WriteProxies(0)
End Sub
Sub WriteProxies(firstLine As Integer)
Static counter As Integer = 1
ProgressBar1.Maximum = ListBox1.Items.Count
Dim fname As String = "D:\test\proxy"
Dim sw As IO.StreamWriter
sw = New IO.StreamWriter(fname & counter & ".txt", False)
Dim numberofFiles As Integer = 49
Dim MaxLinesInFile As Integer
'*x*x*x*x*x*x*x*x*x*x*x*x*x*x*x*x*x*x*x*x*x**x*x*x*x*x
' for loop التحقق من عدد العناصر قبل بدء
If ListBox1.Items.Count < numberofFiles Then
MsgBox("خطأ،عدد العناصر اقل من عدد الملفات")
Exit Sub
End If
'x*x*x*x*x*x*x*x*x*x*x*x*x*x*x*x*x*x*x*x*x*x*x*x*x*x*x*
MaxLinesInFile = Math.Floor((ListBox1.Items.Count) / numberofFiles)
'/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\//\/\/\/\\//\
'هذا المتغير ضروري لانه يخبرنا ان عدد العناصر التي لم تكتب اصبح اقل من عدد الاسطر
'لانه قيمته هي نفس عدد الاسطر لاخر ملف في حال كان اخر ملف يجب ان يحتوي على اسطر اقل من مما قبله
Dim diff As Integer = (ListBox1.Items.Count) - (MaxLinesInFile * numberofFiles)
'""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
'هنا نتأكد في كل مره ان عدد العناصر التي لم تحفظ
'اكبر او اقل من عدد الاسطر المطلوبه لكل ملف
'فان كان عدد العناصر اقل من عدد الاسطر
' firstline+ diff قيمة MaxLinesInFile نعطي المتغير
'
If firstLine + diff = ListBox1.Items.Count Then
MaxLinesInFile = firstLine + diff
Else
MaxLinesInFile = firstLine + MaxLinesInFile
End If
Static i As Integer = 1
For a As Integer = firstLine To MaxLinesInFile
Application.DoEvents()
sw.WriteLine(ListBox1.Items(a), False)
ListBox1.SelectedIndex = a
Try
ProgressBar1.Value += 1
Catch ex As Exception
End Try
If a = (ListBox1.Items.Count - 1) Then
sw.Flush()
sw.Close()
counter = 0
i = 1
ProgressBar1.Value = 0
MaxLinesInFile = 0
firstLine = 0
Exit Sub
End If
Next
sw.Close()
If counter < numberofFiles Then
counter += 1
End If
WriteProxies(MaxLinesInFile)
End Subلكن رجاء تخبرني اذا كان الحل صحيح او كان خاطىء
تحياتي


