02-09-22, 12:36 AM (آخر تعديل لهذه المشاركة : 02-09-22, 07:40 AM {2} بواسطة سعود.)
أرجو ان تنجح مع التحميل لاجزاء الملف عن بعد
السؤال كيف نقوم بتوليد المسارات وفقا لاجراء او نتيجة اجراء معين؟
مثلا :
100 / 5
نولد مسارات Thread بعدد الناتج.
كيف يكون هذا؟
اللهم إني أعوذ بك من غلبة الدين وغلبة العدو، اللهم إني أعوذ بك من جهد البلاء ومن درك الشقاء ومن سوء القضاء ومن شماتة الأعداء
اللهم اغفر لي خطيئتي وجهلي، وإسرافي في أمري وما أنت أعلم به مني، اللهم اغفر لي ما قدمت وما أخرت، وما أسررت وما أعلنت وما أنت أعلم به مني، أنت المقدم وأنت المؤخر وأنت على كل شيء قدير
اللهم إني أعوذ بك من غلبة الدين وغلبة العدو، اللهم إني أعوذ بك من جهد البلاء ومن درك الشقاء ومن سوء القضاء ومن شماتة الأعداء
اللهم اغفر لي خطيئتي وجهلي، وإسرافي في أمري وما أنت أعلم به مني، اللهم اغفر لي ما قدمت وما أخرت، وما أسررت وما أعلنت وما أنت أعلم به مني، أنت المقدم وأنت المؤخر وأنت على كل شيء قدير
(02-09-22, 06:03 AM)سعود كتب : صباح الخير هل يمكن ام لا
صباح الأنوار
أظن يمكن ..
وصلت لجزء من فكرة الحل .. ووقفت ..
وهذا هو الجزء ..
أفتح مشروع جديد وضع عليه زر واحد ..
ثم أفتح محرر الاكود لنافذة وضع فيها هذا الكود ..
كود :
Dim pTop As Integer = 4
Private Location_control As New Point(10, 50)
Dim i1 As Integer
Private Sub ALL(pC1 As Control(,))
Dim pProgressBar As ProgressBar = CType(pC1(0, i1), ProgressBar)
Dim pLabel As Label = CType(pC1(1, i1), Label)
For i As Integer = 1 To 100
pProgressBar.Invoke(Sub() pProgressBar.Value = i)
pLabel.Invoke(Sub() pLabel.Text = pProgressBar.Value)
Threading.Thread.Sleep(150)
Next
End Sub
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
Dim TA As Threading.Thread() = New Threading.Thread(3) {}
Dim C(1, 3) As Control
Dim pProgress As ProgressBar() = New ProgressBar(3) {}
Dim lLable As Label() = New Label(3) {}
Dim i As Integer
For i = 0 To 3
i1 = i
' TA(i) = New Threading.Thread(AddressOf ALL)
C(0, i) = pProgress(i)
pProgress(i) = New ProgressBar
pProgress(i).Name = "pProgressX" & i
pProgress(i).Location = New Point(Location_control.X + 10, Location_control.Y)
pProgress(i).Width = Me.Width - 100
pProgress(i).Height = 20
pProgress(i).Minimum = 0
pProgress(i).Maximum = 100
pProgress(i).Value = 25
Location_control.Y += 10
Controls.Add(pProgress(i))
02-09-22, 07:02 AM (آخر تعديل لهذه المشاركة : 02-09-22, 07:04 AM {2} بواسطة سعود.)
بارك الله فيك
انا احاول استفيد من كل سطر بالاكواد وهذه الاكواد ممتازة باذن الله سادقق فيها اكثر من مرة.
ما رايك بالكود التالي؟ توصلت له لتوي .
هل ينفع لو طبقناه على الاجزاء الخاصة بالملف البعيد بحيث يتم التحميل كلية في آن واحد؟ اذ هو المقصد. .سنرى باذن الله تعالى.
على فكرة الاكواد التالية ليست هي المطلوبة بشكل دقيق بل تحتاج تعديل لنعتبر كل شريط جزء من ملف يفترض ان الشريط الثاني يبدا من النقطة المخصصة له و هكذا
دعواتكم حفظكم الله.
PHP كود :
Private Sub Button2_Click(sender As System.Object, e As System.EventArgs) Handles Button2.Click Dim ths As New List(Of Threading.Thread) Dim d As New Dictionary(Of ProgressBar, Label) Dim pros As New List(Of ProgressBar) Dim lbls As New List(Of Label) For Each cl As Control In Me.Controls Dim prog As ProgressBar = Nothing Dim lbl As Label = Nothing If TypeOf cl Is ProgressBar Then prog = DirectCast(cl, ProgressBar) pros.Add(prog) ElseIf TypeOf cl Is Label Then lbl = DirectCast(cl, Label) lbls.Add(lbl) End If Next For r As Integer = 0 To pros.Count - 1 d.Add(pros(r), lbls(r)) Next For i As Integer = 0 To d.Count - 1 Dim th As Threading.Thread th = New Threading.Thread(AddressOf all) ths.Add(th) Next For h As Integer = 0 To ths.Count - 1 Dim co(2) As Control co(0) = d.Keys(h) co(1) = d.Values(h) Dim t As Threading.Thread = ths(h) t.Start(co) Next End Sub
اللهم إني أعوذ بك من غلبة الدين وغلبة العدو، اللهم إني أعوذ بك من جهد البلاء ومن درك الشقاء ومن سوء القضاء ومن شماتة الأعداء
اللهم اغفر لي خطيئتي وجهلي، وإسرافي في أمري وما أنت أعلم به مني، اللهم اغفر لي ما قدمت وما أخرت، وما أسررت وما أعلنت وما أنت أعلم به مني، أنت المقدم وأنت المؤخر وأنت على كل شيء قدير
ما شاء الله عليك - تبارك الرحمن - هذا ما كنت أقف بسببه
إذن خذ التحديث على الكود بعد الدمج بين الكودين
أفتح مشروع جديد وضع عليه زر واحد - والكود :
لاحظ المتغير (J) هو عدد أشرطة التمرير الذي تريده / بإمكانك وضعها بالكود نتيجة طريقة التقسيم التي تريد ..
كود :
Dim pTop As Integer = 4
Private Location_control As New Point(10, 50)
Dim i1 As Integer
Private Sub All(c As Control())
Dim pi As ProgressBar = CType(c(0), ProgressBar)
Dim l As Label = CType(c(1), Label)
For i As Integer = 1 To 100
pi.Invoke(Sub() pi.Value = i)
l.Invoke(Sub() l.Text = pi.Value)
Threading.Thread.Sleep(150)
Next
End Sub
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
Dim J As Integer = 5
Dim pProgress As ProgressBar() = New ProgressBar(J) {}
Dim lLable As Label() = New Label(J) {}
For i = 0 To J
pProgress(i) = New ProgressBar
pProgress(i).Name = "pProgressX" & i
pProgress(i).Location = New Point(Location_control.X + 10, Location_control.Y)
pProgress(i).Width = Me.Width - 100
pProgress(i).Height = 20
pProgress(i).Minimum = 0
pProgress(i).Maximum = 100
' pProgress(i).Value = 25
Location_control.Y += 10
Controls.Add(pProgress(i))
Next
'=========================================
Dim ths As New List(Of Threading.Thread)
Dim d As New Dictionary(Of ProgressBar, Label)
Dim pros As New List(Of ProgressBar)
Dim lbls As New List(Of Label)
For Each cl As Control In Me.Controls
Dim prog As ProgressBar = Nothing
Dim lbl As Label = Nothing
If TypeOf cl Is ProgressBar Then
prog = DirectCast(cl, ProgressBar)
pros.Add(prog)
ElseIf TypeOf cl Is Label Then
lbl = DirectCast(cl, Label)
lbls.Add(lbl)
End If
Next
For r As Integer = 0 To pros.Count - 1
d.Add(pros(r), lbls(r))
Next
For n As Integer = 0 To d.Count - 1
Dim th As Threading.Thread
th = New Threading.Thread(AddressOf All)
ths.Add(th)
Next
For h As Integer = 0 To ths.Count - 1
Dim co(2) As Control
co(0) = d.Keys(h)
co(1) = d.Values(h)
Dim t As Threading.Thread = ths(h)
t.Start(co)
Next
End Sub
(02-09-22, 07:20 AM)Taha Okla كتب : ما شاء الله عليك - تبارك الرحمن - هذا ما كنت أقف بسببه
إذن خذ التحديث على الكود بعد الدمج بين الكودين
أفتح مشروع جديد وضع عليه زر واحد - والكود :
لاحظ المتغير (J) هو عدد أشرطة التمرير الذي تريده / بإمكانك وضعها بالكود نتيجة طريقة التقسيم التي تريد ..
كود :
Dim pTop As Integer = 4
Private Location_control As New Point(10, 50)
Dim i1 As Integer
Private Sub All(c As Control())
Dim pi As ProgressBar = CType(c(0), ProgressBar)
Dim l As Label = CType(c(1), Label)
For i As Integer = 1 To 100
pi.Invoke(Sub() pi.Value = i)
l.Invoke(Sub() l.Text = pi.Value)
Threading.Thread.Sleep(150)
Next
End Sub
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
Dim J As Integer = 5
Dim pProgress As ProgressBar() = New ProgressBar(J) {}
Dim lLable As Label() = New Label(J) {}
For i = 0 To J
pProgress(i) = New ProgressBar
pProgress(i).Name = "pProgressX" & i
pProgress(i).Location = New Point(Location_control.X + 10, Location_control.Y)
pProgress(i).Width = Me.Width - 100
pProgress(i).Height = 20
pProgress(i).Minimum = 0
pProgress(i).Maximum = 100
' pProgress(i).Value = 25
Location_control.Y += 10
Controls.Add(pProgress(i))
Next
'=========================================
Dim ths As New List(Of Threading.Thread)
Dim d As New Dictionary(Of ProgressBar, Label)
Dim pros As New List(Of ProgressBar)
Dim lbls As New List(Of Label)
For Each cl As Control In Me.Controls
Dim prog As ProgressBar = Nothing
Dim lbl As Label = Nothing
If TypeOf cl Is ProgressBar Then
prog = DirectCast(cl, ProgressBar)
pros.Add(prog)
ElseIf TypeOf cl Is Label Then
lbl = DirectCast(cl, Label)
lbls.Add(lbl)
End If
Next
For r As Integer = 0 To pros.Count - 1
d.Add(pros(r), lbls(r))
Next
For n As Integer = 0 To d.Count - 1
Dim th As Threading.Thread
th = New Threading.Thread(AddressOf All)
ths.Add(th)
Next
For h As Integer = 0 To ths.Count - 1
Dim co(2) As Control
co(0) = d.Keys(h)
co(1) = d.Values(h)
Dim t As Threading.Thread = ths(h)
t.Start(co)
Next
End Sub
وفقك الله لكل خير
اظن خلاص الان الفكرة وصلت والاكواد جاهزة للانتقال الى تطبيق او اضافة الميزة الى التطبيق البسيط
أسعدك الله سائر اليوم وكل الايام وكل من يقرا هذا الكلام.
اللهم إني أعوذ بك من غلبة الدين وغلبة العدو، اللهم إني أعوذ بك من جهد البلاء ومن درك الشقاء ومن سوء القضاء ومن شماتة الأعداء
اللهم اغفر لي خطيئتي وجهلي، وإسرافي في أمري وما أنت أعلم به مني، اللهم اغفر لي ما قدمت وما أخرت، وما أسررت وما أعلنت وما أنت أعلم به مني، أنت المقدم وأنت المؤخر وأنت على كل شيء قدير
حين لم انجح بتطبيق الفكرة بالملف البعيد لاعتبارات السيرفر و قوانينه ... فكرت ان احول الفكرة للاستخدام المحلي اقصد تقسيم الملف بنفس الاكواد هنا لكني انصمدت انه يتطلب القراءة المتكررة للملف المصدر وهذا ممنوع بويندوز.
بامكاني القراءة الكلية والتقسيم لكن هذا غير محبذ لان اساس الفكرة تقسيم الملف الكبير الى اجزاء.
على كل حال تخليت عن فكرة التحميل المتعددللملف البعيد والقريب وبقيت فكرة واحدة سانظر الى امكانية تطبيقها ان شاء الله.
و هي حفظ النقاط (لا ادري بماذا تسمى) وهي الموضع position . حتى حين الرغبة بالايقاف يتم الحفظ مثل فكرة wmp current position. وعند التشغيل واختيار الجلسة يتم الاستمرار....هذه اظنها سهلة و لابد من اكمالها ان تيسر ذلك.
صبحكم الله بالخير جميعا.
اللهم إني أعوذ بك من غلبة الدين وغلبة العدو، اللهم إني أعوذ بك من جهد البلاء ومن درك الشقاء ومن سوء القضاء ومن شماتة الأعداء
اللهم اغفر لي خطيئتي وجهلي، وإسرافي في أمري وما أنت أعلم به مني، اللهم اغفر لي ما قدمت وما أخرت، وما أسررت وما أعلنت وما أنت أعلم به مني، أنت المقدم وأنت المؤخر وأنت على كل شيء قدير
ليس المهم أن ينجح من أول مرة أو ثاني ...... أو حتى عاشر مرة..
بإمكانك أن تضع المشروع على جنب لفترة .. تكون فيها مستعد لاكماله..
المهم أن جزء من الفكرة موجودة عندك -
أصبح الآن لديك مشروع برنامج - حتى لو أنه غير مكتمل ..
فقد تمر خلال أيام أو شهور بأفكار تطور بها برنامجك لأفضل مما تتوقع..