PDA

View Full Version : تبدیل تابع Vb به کد #C



vb341
دوشنبه 02 آذر 1394, 08:05 صبح
با درود خدمت اساتید محترم . برای کد وی بی نمونه زیر معادل #C رو میخوام . لطفا راهنمایی بفرمایید


Public Function Mask_Tarikh(ByVal Sender As TextBox) As String

Dim DateString As String = Sender.Text
Dim t As String = Replace(DateString, "/", "")
Dim L As Integer = Len(t)

If DateString.Length >= 10 Then

Select Case L
Case 4 '1389
Mask_Tarikh = VB.Left(t, 4)
Case 5 '13890
Mask_Tarikh = VB.Left(t, 4) & "/" & VB.Right(t, 1)
Case 6 '138905
Mask_Tarikh = VB.Left(t, 4) & "/" & VB.Right(t, 2)
Case 7 '1389050
Mask_Tarikh = VB.Left(t, 4) & "/" & VB.Mid(t, 5, 2) & "/" & VB.Right(t, 1)
Case 8 '13890501
Mask_Tarikh = VB.Left(t, 4) & "/" & VB.Mid(t, 5, 2) & "/" & VB.Right(t, 2)
Case Else
Mask_Tarikh = DateString
End Select

Else

Select Case L
Case 4 '1389
Mask_Tarikh = VB.Left(t, 4)
Case 5 '13890
Mask_Tarikh = VB.Left(t, 4) & "/" & VB.Right(t, 1)
Case 6 '138905
Mask_Tarikh = VB.Left(t, 4) & "/" & VB.Right(t, 2)
Case 7 '1389050
Mask_Tarikh = VB.Left(t, 4) & "/" & VB.Mid(t, 5, 2) & "/" & VB.Right(t, 1)
Case 8 '13890501
Mask_Tarikh = VB.Left(t, 4) & "/" & VB.Mid(t, 5, 2) & "/" & VB.Right(t, 2)
Case Else
Mask_Tarikh = DateString
End Select

End If

Sender.Text = Mask_Tarikh
SendKeys.SendWait("{End}")

Return Mask_Tarikh

End Function

محمد رضا فاتحی
دوشنبه 02 آذر 1394, 08:20 صبح
سلام....

public string Mask_Tarikh(TextBox Sender)
{
string functionReturnValue = null;


string DateString = Sender.Text;
string t = Strings.Replace(DateString, "/", "");
int L = Strings.Len(t);


if (DateString.Length >= 10) {


switch (L) {
case 4:
//1389
functionReturnValue = VB.Left(t, 4);
break;
case 5:
//13890
functionReturnValue = VB.Left(t, 4) + "/" + VB.Right(t, 1);
break;
case 6:
//138905
functionReturnValue = VB.Left(t, 4) + "/" + VB.Right(t, 2);
break;
case 7:
//1389050
functionReturnValue = VB.Left(t, 4) + "/" + VB.Mid(t, 5, 2) + "/" + VB.Right(t, 1);
break;
case 8:
//13890501
functionReturnValue = VB.Left(t, 4) + "/" + VB.Mid(t, 5, 2) + "/" + VB.Right(t, 2);
break;
default:
functionReturnValue = DateString;
break;
}


} else {


switch (L) {
case 4:
//1389
functionReturnValue = VB.Left(t, 4);
break;
case 5:
//13890
functionReturnValue = VB.Left(t, 4) + "/" + VB.Right(t, 1);
break;
case 6:
//138905
functionReturnValue = VB.Left(t, 4) + "/" + VB.Right(t, 2);
break;
case 7:
//1389050
functionReturnValue = VB.Left(t, 4) + "/" + VB.Mid(t, 5, 2) + "/" + VB.Right(t, 1);
break;
case 8:
//13890501
functionReturnValue = VB.Left(t, 4) + "/" + VB.Mid(t, 5, 2) + "/" + VB.Right(t, 2);
break;
default:
functionReturnValue = DateString;
break;
}


}


Sender.Text = functionReturnValue;
SendKeys.SendWait("{End}");


return functionReturnValue;
}

vb341
دوشنبه 02 آذر 1394, 08:34 صبح
با تشکر از حسن توجهتون دوست عزیز . ولی میخواستم ببینم این کذ رو تست کردین یا با کانورتور وی بی به سی شارپ انجام دادین ؟
چون من خودم با برنامه مبدل وی بی به سی شارپ اینکار رو انجام دادم ولی قسنتهایی از کد رو هرکار میکنم جواب نمیده ؟

محمد رضا فاتحی
دوشنبه 02 آذر 1394, 08:57 صبح
من با کانورتور انجام دادم...
چند تا نکته:
1- VB توی کد اصلی فرستادین تعریف نشده احتمالا یه رشته است
2- Right , Left,Mid توی سی شارپ وجود نداره می تونید از این کد استفاده کنید Microsoft.VisualBasic.Strings.Right(s, 10);
یا با SubString پیدا سازی کنید

vb341
دوشنبه 02 آذر 1394, 09:48 صبح
با تشکر از راهنمایی شما . کد اصلاح شده به ترتیب زیر شد و جواب داد


public static string Mask_Tarikh(TextBox Sender)
{
string functionReturnValue = null;


string DateString = Sender.Text;
string t = DateString.Replace("/", "");
int L = t.Length;


if (DateString.Length >= 10)
{


switch (L)
{
case 4:
//1389
functionReturnValue = t.Substring(0, 4);
break;
case 5:
//13890
functionReturnValue = t.Substring(0, 4) + "/" + t.Substring(4,1);
break;
case 6:
//138905
functionReturnValue = t.Substring(0, 4) + "/" + t.Substring(4, 2);
break;
case 7:
//1389050
functionReturnValue = t.Substring(0, 4) + "/" + t.Substring(4, 2) + "/" + t.Substring(6, 1);
break;
case 8:
//13890501
functionReturnValue = t.Substring(0, 4) + "/" + t.Substring(4, 2) + "/" + t.Substring(6, 2);
break;
default:
functionReturnValue = DateString;
break;
}


}
else
{


switch (L)
{
case 4:
//1389
functionReturnValue = t.Substring(0, 4);
break;
case 5:
//13890
functionReturnValue = t.Substring(0, 4) + "/" + t.Substring(4, 1);
break;
case 6:
//138905
functionReturnValue = t.Substring(0, 4) + "/" + t.Substring(4, 2);
break;
case 7:
//1389050
functionReturnValue = t.Substring(0, 4) + "/" + t.Substring(4, 2) + "/" + t.Substring(6, 1);
break;
case 8:
//13890501
functionReturnValue = t.Substring(0, 4) + "/" + t.Substring(4, 2) + "/" + t.Substring(6, 2);
break;
default:
functionReturnValue = DateString;
break;
}


}


Sender.Text = functionReturnValue;
SendKeys.SendWait("{End}");


return functionReturnValue;
}