PDA

View Full Version : سوال: تبدیل کد VB به C#



amin.m1993
دوشنبه 17 مهر 1391, 22:53 عصر
سلام.
دوستان کسی میتونه کد زیر رو به #C تبدیل کنه؟ کارم ضروریه همین امشب باید به جواب برسم. ممنون میشم کمکم کنید.

Private Sub Command1_Click()
Dim N As Long, A() As Long, I As Long
N = Val(Text1.Text)
ReDim A(1 To N)
For I = 1 To N
A(I) = I
Next
List1.Clear
MySub A, 1, N
End Sub

Private Sub MySub(ByRef List() As Long, ByVal Index As Long, ByVal Count As Long)
Dim Pos As Long, Temp As Long
If Index > Count Then
ShowList List, Count
Exit Sub
End If
MySub List, Index + 1, Count
For Pos = Index + 1 To Count
Temp = List(Pos)
List(Pos) = List(Index)
List(Index) = Temp
MySub List, Index + 1, Count
List(Index) = List(Pos)
List(Pos) = Temp
Next
End Sub

Private Sub ShowList(ByRef List() As Long, ByVal Count As Long)
Dim Index As Long, Str As String, Num As String
For Index = 1 To Count
Str = Str & Chr(64 + List(Index)) & " "
Next
Num = CStr(List1.ListCount + 1)
Num = Space(4 - Len(Num)) & Num
List1.AddItem Num & ") " & Str
End Sub

xxnagin
دوشنبه 17 مهر 1391, 23:07 عصر
سلام
این کد برای vb6 هستش
شما برای چه کاری میخواین استفاده بکنین
من اینو در اوردم #c و vb.net

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim N As Long, A() As Long, I As Long
N = Val(TextBox1.Text)
ReDim A(0 To N)
For I = 1 To N
A(I) = I
Next
ListBox1.Items.Clear()
MySub(A, 1, N)
End Sub

Private Sub MySub(ByRef List() As Long, ByVal Index As Long, ByVal Count As Long)
Dim Pos As Long, Temp As Long
If Index > Count Then
ShowList(List, Count)
Exit Sub
End If
MySub(List, Index + 1, Count)
For Pos = Index + 1 To Count
Temp = List(Pos)
List(Pos) = List(Index)
List(Index) = Temp
MySub(List, Index + 1, Count)
List(Index) = List(Pos)
List(Pos) = Temp
Next
End Sub
Private Sub ShowList(ByRef List() As Long, ByVal Count As Long)
Dim Index As Long, Str As String = "", Num As String
For Index = 1 To Count
Str = Str & Chr(64 + List(Index)) & " "
Next
Num = CStr(ListBox1.Items.Count + 1)
Num = Space(4 - Len(Num)) & Num
ListBox1.Items.Add(Num & ") " & Str)
End Sub


private void Button1_Click(System.Object sender, System.EventArgs e)
{
long N;
long[] A;
long I;
N = Val(TextBox1.Text);
// ERROR: Not supported in C#: ReDimStatement
for (I = 1; I <= N; I++) {
A(I) = I;
}
ListBox1.Items.Clear();
MySub(A, 1, N);
}
private void MySub(ref long[] List, long Index, long Count)
{
long Pos;
long Temp;
if (Index > Count)
{
ShowList(List, Count);
return;
}
MySub(List, Index + 1, Count);
for (Pos = Index + 1; Pos <= Count; Pos++)
{
Temp = List(Pos);
List(Pos) = List(Index);
List(Index) = Temp;
MySub(List, Index + 1, Count);
List(Index) = List(Pos);
List(Pos) = Temp;
}
}
private void ShowList(ref long[] List, long Count)
{
long Index;
string Str = "";
string Num;
for (Index = 1; Index <= Count; Index++) {
Str = Str + Chr(64 + List(Index)) + " ";
}
Num = Convert.ToString(ListBox1.Items.Count + 1);
Num = Space(4 - Len(Num)) + Num;
ListBox1.Items.Add(Num + ") " + Str);
}

amin.m1993
دوشنبه 17 مهر 1391, 23:33 عصر
خیلی ممنون جناب xxnagin

این کد مربوط میشه به نمایش جایگشت های n عضوی یه مجموعه ی n عضوی که باید تا فردا تحویلش میدادم.
ممنون از کمک شما فقط چطوری convert کردین؟

arash020
سه شنبه 18 مهر 1391, 05:16 صبح
سلام
خیلی راحت
هم سایت های زیادی هستن.
توی گوگل::: convert C# to VB.net
و
هم برنامه ش هست.
خودم کلاس اصلیشو که سایتا ازش استفاده میکنن رو دارم
سورسش هم به سی شارپه...
میتونی با webrequest خودت هم یدونه لوکالش رو واسه خودت بنویسی.

موفق باشی

xxnagin
سه شنبه 18 مهر 1391, 18:43 عصر
من فقط سه تا تغییر تو کد دادم
اونم مربوط به listbox هستش
همین 3 تا که تو vb.net استفاده میشه
بعدش با Convert Net (http://fishcodelib.com/files/ConvertNet2.zip)تبدیلش کردم به #c
List1.Clear = ListBox1.Items.Clear()
List1.ListCount = ListBox1.Items.Count
List1.AddItem = ListBox1.Items.Add