تقييم الموضوع :
  • 0 أصوات - بمعدل 0
  • 1
  • 2
  • 3
  • 4
  • 5
تحويل مشروع من c# الى فيجول بيسك
#1
السلام عليكم عندى مشروع بالسى شارب حولته الى فيجول بيسك 2019 من موقع التحويل ولكن عند وضعة فى مشروع جديد يعطى اخطاء كثيرة 
ساقوم برفع المشوعيين باللغتين و ارجو الحل

(04-06-22, 11:14 AM)Lathe1 كتب : السلام عليكم عندى مشروع بالسى شارب حولته الى فيجول بيسك 2019 من موقع التحويل ولكن عند وضعة فى مشروع جديد يعطى اخطاء كثيرة 
ساقوم برفع المشروعيين باللغتين و ارجو الحل


الملفات المرفقة
.txt   cuttin using c#.txt (الحجم : 12.63 ك ب / التحميلات : 11)
.txt   cutting using vb.txt (الحجم : 9.44 ك ب / التحميلات : 4)
الرد }}}
تم الشكر بواسطة:
#2
كود :
Class LinerCuttingClass
       Private desiredLengths As List(Of Integer)
       Private amount As List(Of Integer)
       Private whipLength As Integer
       Private endSawCut As Integer
       Private toolWidth As Integer
       Private headlessRetreat As Integer
       Private cuts As List(Of List(Of Integer))
       Private repeats As List(Of Integer)
       Private retreats As List(Of Integer)
       Private usingLength As List(Of Integer)
       Private schet As Double() = {0, 0, 0, 0}
       Private schetDl As Double() = {0, 0, 0, 0}
       Private cut, bez, torc, line, maxNumb, maxNumbMem As Integer
       Private x, j, i, y, zvr, hl, pop, verif As Integer
       Private maxRes, sum, sdv, pov As Integer
       Private l As Integer()
       Private k As Integer()
       Private z As Integer() = New Integer(200) {}
       Private zost As Integer() = New Integer(200) {}
       Private lovr As Integer(,) = New Integer(200, 200) {}
       Private kvr As Integer(,)
       Private maxNumbVr As Integer() = New Integer(200) {}
       Private sumLine As Integer() = New Integer(200) {}
       Private lvr As Integer(,)
       Private q As Integer() = New Integer(30000) {}
       Private w As Integer() = New Integer(30000) {}
       Private lo As Integer(,) = New Integer(200, 200) {}
       Private kol As Integer() = New Integer(200) {}
       Private p As Integer() = New Integer(200) {}
       Private res As Integer(,)

       Public Function GetCuts() As List(Of List(Of Integer))
           Return cuts
       End Function

       Public Function GetRepeats() As List(Of Integer)
           Return repeats
       End Function

       Public Function GetRetreats() As List(Of Integer)
           Return retreats
       End Function

       Public Function GetUsingLength() As List(Of Integer)
           Return usingLength
       End Function

       Public Sub New(ByVal desiredLengths_ As List(Of Integer), ByVal amount_ As List(Of Integer), ByVal whipLength_ As Integer, ByVal endSawCut_ As Integer, ByVal toolWidth_ As Integer, ByVal headlessRetreat_ As Integer)
           desiredLengths = New List(Of Integer)(desiredLengths_)
           amount = New List(Of Integer)(amount_)
           whipLength = whipLength_
           endSawCut = endSawCut_
           toolWidth = toolWidth_
           headlessRetreat = headlessRetreat_
           Calculate()
       End Sub

       Private Sub CutMass()
           For i = w(y) To maxNumbVr(x) - 1
               kvr(i, x) = kvr(i + 1, x)
               lvr(i, x) = lvr(i + 1, x)
           Next

           kvr(maxNumbVr(x), x) = 0
           lvr(maxNumbVr(x), x) = 0
       End Sub

       Private Sub BaseLine()
           zvr = line / l(1)
           If zvr > k(1) Then zvr = k(1)

           For j = 1 To zvr

               For i = 1 To j
                   lovr(i, j) = l(1)
               Next

               kvr(1, j) = k(1) - j
               maxNumbVr(j) = maxNumb
               sumLine(j) = j * l(1)
               sumLine(j + 1) = 0
           Next

           For j = 1 To zvr
               lvr(1, j) = l(1)

               For i = 2 To maxNumb
                   kvr(i, j) = k(i)
                   lvr(i, j) = l(i)
               Next
           Next

           If kvr(1, zvr) = 0 Then
               x = zvr
               CutMass()
           End If
       End Sub

       Private Sub Optimiz()
           Dim len As Integer = line - sumLine(x)
           Dim L As Integer
           Dim dif As Integer

           For i = 1 To len
               q(i) = 0
               w(i) = 0

               For j = 1 To maxNumbVr(x)
                   L = lvr(j, x)
                   dif = i - L

                   If dif = 0 Then
                       q(i) = L
                       w(i) = j
                   ElseIf dif > 0 AndAlso q(i) < (q(dif) + L) Then
                       q(i) = q(dif) + L
                       w(i) = j
                   End If
               Next
           Next
       End Sub

       Private Sub OstLine()
           Dim kv As Integer
           Dim ind As Integer = w(y)

           While w(y) > 0
               kv = kvr(ind, x)

               If kv > 0 Then
                   kvr(ind, x) = kv - 1
                   zost(x) = zost(x) + 1
                   lovr(x, zost(x) + x) = lvr(ind, x)
                   sumLine(x) = sumLine(x) + lvr(ind, x)
                   y = y - lvr(ind, x)
                   ind = w(y)
                   Continue While
               ElseIf maxNumbVr(x) > 1 Then
                   CutMass()
                   Optimiz()
                   ind = w(y)
                   Continue While
               End If

               If kv = 0 AndAlso maxNumbVr(x) = 1 Then
                   y = 1
                   Return
               End If
           End While
       End Sub

       Private Sub Result()
           cuts = New List(Of List(Of Integer))()
           repeats = New List(Of Integer)()
           retreats = New List(Of Integer)()
           usingLength = New List(Of Integer)()
           Dim workpieces As List(Of Integer)

           For i = 1 To hl - 1
               x = 0
               sum = 0
               kol(i) = 1
               res(i + 1, 1) = i
               res(i + 1, 4) = kol(i)
               repeats.Add(kol(i))
               workpieces = New List(Of Integer)()

               For j = 1 To z(i)
                   If z(i) > maxRes Then maxRes = z(i)
                   res(i + 1, j + 4) = lo(i, j) - cut
                   sum = sum + lo(i, j)
                   schet(3) = schet(3) + 1
                   schetDl(3) = schetDl(3) + lo(i, j) - cut
                   workpieces.Add(res(i + 1, j + 4))

                   If i > 1 AndAlso res(i + 1, j + 4) = res(i, j + 4) Then
                       x = x + 1
                   Else
                       x = 0
                       pov = 0
                   End If
               Next

               cuts.Add(workpieces)
               res(i + 1, 2) = sum + torc
               res(i + 1, 3) = line + torc - res(i + 1, 2)
               usingLength.Add(res(i + 1, 2))
               retreats.Add(res(i + 1, 3))

               If x = z(i) AndAlso z(i) = z(i - 1) Then
                   kol(i - 1 - pov) = kol(i - 1 - pov) + 1
                   repeats(repeats.Count - 2) = kol(i - 1 - pov)
                   pov = pov + 1
                   usingLength.Remove(usingLength.Last())
                   retreats.Remove(retreats.Last())
                   repeats.Remove(repeats.Last())
                   cuts.Remove(cuts.Last())
                   sdv = sdv + 1
               End If
           Next

           If schet(1) = schet(2) AndAlso schet(1) = schet(3) AndAlso schetDl(1) = schetDl(2) AndAlso schetDl(1) = schetDl(3) Then
               Return
           Else
               Throw New Exception("Ошибка! Возможен неверный раскрой")
           End If
       End Sub

       Private Sub Calculate()
           cut = toolWidth
           bez = headlessRetreat
           torc = endSawCut
           line = whipLength - torc
           maxNumb = amount.Count
           maxNumbMem = maxNumb
           l = New Integer(maxNumb + 2 - 1) {}
           k = New Integer(maxNumb + 2 - 1) {}
           kvr = New Integer(maxNumb + 1 - 1, 200) {}
           lvr = New Integer(maxNumb + 1 - 1, 200) {}
           res = New Integer(maxNumb + 1 - 1, maxNumb + 1 - 1) {}
           j = 1

           For Each len As Integer In desiredLengths
               l(j) = len + cut
               If l(j) + torc > line Then Throw New Exception("Деталь " & j & " длиннее исходной заготовки")
               k(j) = amount(j - 1)
               schet(1) += k(j)
               schetDl(1) += (l(j) - cut) * k(j)
               j += 1
           Next

           Dim vl As Integer
           Dim vk As Integer

           For i = 1 To maxNumb - 1

               For j = i + 1 To maxNumb

                   If l(j) > l(i) Then
                       vl = l(j)
                       vk = k(j)
                       l(j) = l(i)
                       k(j) = k(i)
                       l(i) = vl
                       k(i) = vk
                   End If
               Next
           Next

           hl = 1
           z(1) = 0
           y = line

           While k(1) > 0

               For i = 1 To 100
                   zost(i) = 0
               Next

               BaseLine()

               For x = 1 To zvr
                   y = line - sumLine(x)
                   Optimiz()
                   OstLine()
               Next

               p(1) = zost(1) + 1
               pop = 1

               For x = 2 To zvr
                   verif = line - sumLine(x) - bez

                   If verif < 0 Then
                       p(x) = x + zost(x)
                       If p(x) < p(x - 1) Then pop = x
                   ElseIf sumLine(x) > sumLine(x - 1) Then
                       pop = x
                   End If
               Next

               For i = 1 To pop
                   lo(hl, i) = l(1)
                   k(1) = k(1) - 1
                   schet(2) = schet(2) + 1
                   schetDl(2) = schetDl(2) + lo(hl, i) - cut
               Next

               For j = 1 To zost(pop)
                   lo(hl, j + pop) = lovr(pop, j + pop)
                   schet(2) = schet(2) + 1
                   schetDl(2) = schetDl(2) + lo(hl, j + pop) - cut
               Next

               For i = 1 To maxNumb
                   k(i) = kvr(i, pop)
                   l(i) = lvr(i, pop)
               Next

               z(hl) = pop + zost(pop)
               hl = hl + 1

               If hl = 200 Then
                   Result()
                   Return
               End If

               If maxNumb > 1 Then

                   For j = 1 To 3

                       If k(1) = 0 Then

                           For i = 1 To maxNumb
                               k(i) = k(i + 1)
                               l(i) = l(i + 1)
                           Next

                           k(maxNumb) = 0
                           l(maxNumb) = 0
                       Else
                           Exit For
                       End If
                   Next
               End If
           End While

           Result()
       End Sub
   End Class
الرد }}}
تم الشكر بواسطة:
#3
[attachment=27844 كتب :bidaya pid='182628' dateline='1654340467']
كود :
Class LinerCuttingClass
       Private desiredLengths As List(Of Integer)
       Private amount As List(Of Integer)
       Private whipLength As Integer
       Private endSawCut As Integer
       Private toolWidth As Integer
       Private headlessRetreat As Integer
       Private cuts As List(Of List(Of Integer))
       Private repeats As List(Of Integer)
       Private retreats As List(Of Integer)
       Private usingLength As List(Of Integer)
       Private schet As Double() = {0, 0, 0, 0}
       Private schetDl As Double() = {0, 0, 0, 0}
       Private cut, bez, torc, line, maxNumb, maxNumbMem As Integer
       Private x, j, i, y, zvr, hl, pop, verif As Integer
       Private maxRes, sum, sdv, pov As Integer
       Private l As Integer()
       Private k As Integer()
       Private z As Integer() = New Integer(200) {}
       Private zost As Integer() = New Integer(200) {}
       Private lovr As Integer(,) = New Integer(200, 200) {}
       Private kvr As Integer(,)
       Private maxNumbVr As Integer() = New Integer(200) {}
       Private sumLine As Integer() = New Integer(200) {}
       Private lvr As Integer(,)
       Private q As Integer() = New Integer(30000) {}
       Private w As Integer() = New Integer(30000) {}
       Private lo As Integer(,) = New Integer(200, 200) {}
       Private kol As Integer() = New Integer(200) {}
       Private p As Integer() = New Integer(200) {}
       Private res As Integer(,)

       Public Function GetCuts() As List(Of List(Of Integer))
           Return cuts
       End Function

       Public Function GetRepeats() As List(Of Integer)
           Return repeats
       End Function

       Public Function GetRetreats() As List(Of Integer)
           Return retreats
       End Function

       Public Function GetUsingLength() As List(Of Integer)
           Return usingLength
       End Function

       Public Sub New(ByVal desiredLengths_ As List(Of Integer), ByVal amount_ As List(Of Integer), ByVal whipLength_ As Integer, ByVal endSawCut_ As Integer, ByVal toolWidth_ As Integer, ByVal headlessRetreat_ As Integer)
           desiredLengths = New List(Of Integer)(desiredLengths_)
           amount = New List(Of Integer)(amount_)
           whipLength = whipLength_
           endSawCut = endSawCut_
           toolWidth = toolWidth_
           headlessRetreat = headlessRetreat_
           Calculate()
       End Sub

       Private Sub CutMass()
           For i = w(y) To maxNumbVr(x) - 1
               kvr(i, x) = kvr(i + 1, x)
               lvr(i, x) = lvr(i + 1, x)
           Next

           kvr(maxNumbVr(x), x) = 0
           lvr(maxNumbVr(x), x) = 0
       End Sub

       Private Sub BaseLine()
           zvr = line / l(1)
           If zvr > k(1) Then zvr = k(1)

           For j = 1 To zvr

               For i = 1 To j
                   lovr(i, j) = l(1)
               Next

               kvr(1, j) = k(1) - j
               maxNumbVr(j) = maxNumb
               sumLine(j) = j * l(1)
               sumLine(j + 1) = 0
           Next

           For j = 1 To zvr
               lvr(1, j) = l(1)

               For i = 2 To maxNumb
                   kvr(i, j) = k(i)
                   lvr(i, j) = l(i)
               Next
           Next

           If kvr(1, zvr) = 0 Then
               x = zvr
               CutMass()
           End If
       End Sub

       Private Sub Optimiz()
           Dim len As Integer = line - sumLine(x)
           Dim L As Integer
           Dim dif As Integer

           For i = 1 To len
               q(i) = 0
               w(i) = 0

               For j = 1 To maxNumbVr(x)
                   L = lvr(j, x)
                   dif = i - L

                   If dif = 0 Then
                       q(i) = L
                       w(i) = j
                   ElseIf dif > 0 AndAlso q(i) < (q(dif) + L) Then
                       q(i) = q(dif) + L
                       w(i) = j
                   End If
               Next
           Next
       End Sub

       Private Sub OstLine()
           Dim kv As Integer
           Dim ind As Integer = w(y)

           While w(y) > 0
               kv = kvr(ind, x)

               If kv > 0 Then
                   kvr(ind, x) = kv - 1
                   zost(x) = zost(x) + 1
                   lovr(x, zost(x) + x) = lvr(ind, x)
                   sumLine(x) = sumLine(x) + lvr(ind, x)
                   y = y - lvr(ind, x)
                   ind = w(y)
                   Continue While
               ElseIf maxNumbVr(x) > 1 Then
                   CutMass()
                   Optimiz()
                   ind = w(y)
                   Continue While
               End If

               If kv = 0 AndAlso maxNumbVr(x) = 1 Then
                   y = 1
                   Return
               End If
           End While
       End Sub

       Private Sub Result()
           cuts = New List(Of List(Of Integer))()
           repeats = New List(Of Integer)()
           retreats = New List(Of Integer)()
           usingLength = New List(Of Integer)()
           Dim workpieces As List(Of Integer)

           For i = 1 To hl - 1
               x = 0
               sum = 0
               kol(i) = 1
               res(i + 1, 1) = i
               res(i + 1, 4) = kol(i)
               repeats.Add(kol(i))
               workpieces = New List(Of Integer)()

               For j = 1 To z(i)
                   If z(i) > maxRes Then maxRes = z(i)
                   res(i + 1, j + 4) = lo(i, j) - cut
                   sum = sum + lo(i, j)
                   schet(3) = schet(3) + 1
                   schetDl(3) = schetDl(3) + lo(i, j) - cut
                   workpieces.Add(res(i + 1, j + 4))

                   If i > 1 AndAlso res(i + 1, j + 4) = res(i, j + 4) Then
                       x = x + 1
                   Else
                       x = 0
                       pov = 0
                   End If
               Next

               cuts.Add(workpieces)
               res(i + 1, 2) = sum + torc
               res(i + 1, 3) = line + torc - res(i + 1, 2)
               usingLength.Add(res(i + 1, 2))
               retreats.Add(res(i + 1, 3))

               If x = z(i) AndAlso z(i) = z(i - 1) Then
                   kol(i - 1 - pov) = kol(i - 1 - pov) + 1
                   repeats(repeats.Count - 2) = kol(i - 1 - pov)
                   pov = pov + 1
                   usingLength.Remove(usingLength.Last())
                   retreats.Remove(retreats.Last())
                   repeats.Remove(repeats.Last())
                   cuts.Remove(cuts.Last())
                   sdv = sdv + 1
               End If
           Next

           If schet(1) = schet(2) AndAlso schet(1) = schet(3) AndAlso schetDl(1) = schetDl(2) AndAlso schetDl(1) = schetDl(3) Then
               Return
           Else
               Throw New Exception("Ошибка! Возможен неверный раскрой")
           End If
       End Sub

       Private Sub Calculate()
           cut = toolWidth
           bez = headlessRetreat
           torc = endSawCut
           line = whipLength - torc
           maxNumb = amount.Count
           maxNumbMem = maxNumb
           l = New Integer(maxNumb + 2 - 1) {}
           k = New Integer(maxNumb + 2 - 1) {}
           kvr = New Integer(maxNumb + 1 - 1, 200) {}
           lvr = New Integer(maxNumb + 1 - 1, 200) {}
           res = New Integer(maxNumb + 1 - 1, maxNumb + 1 - 1) {}
           j = 1

           For Each len As Integer In desiredLengths
               l(j) = len + cut
               If l(j) + torc > line Then Throw New Exception("Деталь " & j & " длиннее исходной заготовки")
               k(j) = amount(j - 1)
               schet(1) += k(j)
               schetDl(1) += (l(j) - cut) * k(j)
               j += 1
           Next

           Dim vl As Integer
           Dim vk As Integer

           For i = 1 To maxNumb - 1

               For j = i + 1 To maxNumb

                   If l(j) > l(i) Then
                       vl = l(j)
                       vk = k(j)
                       l(j) = l(i)
                       k(j) = k(i)
                       l(i) = vl
                       k(i) = vk
                   End If
               Next
           Next

           hl = 1
           z(1) = 0
           y = line

           While k(1) > 0

               For i = 1 To 100
                   zost(i) = 0
               Next

               BaseLine()

               For x = 1 To zvr
                   y = line - sumLine(x)
                   Optimiz()
                   OstLine()
               Next

               p(1) = zost(1) + 1
               pop = 1

               For x = 2 To zvr
                   verif = line - sumLine(x) - bez

                   If verif < 0 Then
                       p(x) = x + zost(x)
                       If p(x) < p(x - 1) Then pop = x
                   ElseIf sumLine(x) > sumLine(x - 1) Then
                       pop = x
                   End If
               Next

               For i = 1 To pop
                   lo(hl, i) = l(1)
                   k(1) = k(1) - 1
                   schet(2) = schet(2) + 1
                   schetDl(2) = schetDl(2) + lo(hl, i) - cut
               Next

               For j = 1 To zost(pop)
                   lo(hl, j + pop) = lovr(pop, j + pop)
                   schet(2) = schet(2) + 1
                   schetDl(2) = schetDl(2) + lo(hl, j + pop) - cut
               Next

               For i = 1 To maxNumb
                   k(i) = kvr(i, pop)
                   l(i) = lvr(i, pop)
               Next

               z(hl) = pop + zost(pop)
               hl = hl + 1

               If hl = 200 Then
                   Result()
                   Return
               End If

               If maxNumb > 1 Then

                   For j = 1 To 3

                       If k(1) = 0 Then

                           For i = 1 To maxNumb
                               k(i) = k(i + 1)
                               l(i) = l(i + 1)
                           Next

                           k(maxNumb) = 0
                           l(maxNumb) = 0
                       Else
                           Exit For
                       End If
                   Next
               End If
           End While

           Result()
       End Sub
   End Class

لقد ارفقت المشروع الاصلى واتمنى لو المشروع يتم تحويله الى فيجول بيسك اكون شاكر جدا


الملفات المرفقة
.zip   Linear_Cutting-main.zip (الحجم : 50.86 ك ب / التحميلات : 10)
الرد }}}
تم الشكر بواسطة:
#4
اشكرك بشمهندس لو فى شرح للكود اكون شاكر جدا وخاصا انى لا اريد البرنامج consol ولكن عايز اطبقه على شاشة مرئية وجداول لو امكن عاجز عن الشكر
الرد }}}
تم الشكر بواسطة:


المواضيع المحتمل أن تكون متشابهة .
الموضوع : الكاتب الردود : المشاهدات : آخر رد
  [سؤال] احتاج الى مساعدة فى تعديل مشروع خاص C# وقاعدة البيانات SQL Server كتكوت المصري 1 497 15-08-23, 02:02 AM
آخر رد: WAEL ABED
  [C#.NET] تحويل كود ahmed_king2023 2 525 06-06-23, 09:44 AM
آخر رد: fouadhdfouad
  [VB.NET] تحويل كود ahmed_king2023 6 813 22-04-23, 11:30 PM
آخر رد: ahmed_king2023
  [C#.NET] تحويل كود الي c# ali_ahmed12 2 501 10-01-23, 03:02 PM
آخر رد: ali_ahmed12
  [سؤال] السلام عليكم انا طالبة مشروع ولدي استفسار dodejogdam 1 491 28-12-22, 11:18 AM
آخر رد: Taha Okla
  [C#.NET] تحويل كود الي c# ali_ahmed12 2 654 03-12-22, 03:52 PM
آخر رد: ali_ahmed12
  [VB.NET] تحويل كود الي c# ali_ahmed12 5 867 30-11-22, 07:32 PM
آخر رد: ali_ahmed12
  [VB.NET] تحويل كود الي c# ali_ahmed12 0 456 29-11-22, 06:30 PM
آخر رد: ali_ahmed12
  [C#.NET] تحويل كود تالي الي c# ali_ahmed12 5 912 17-11-22, 04:25 AM
آخر رد: yaser27
  [C#.NET] تحويل كود الي c# ali_ahmed12 2 1,021 02-11-22, 05:54 PM
آخر رد: الماجيك مسعد

التنقل السريع :


يقوم بقرائة الموضوع: بالاضافة الى ( 1 ) ضيف كريم