PDA

View Full Version : سوال: تبديل برنامه اي با زبان VB دات نت به C شارپ



jabbary
شنبه 30 مرداد 1389, 19:03 عصر
با سلام به اساتيد عزيز .

من نياز به برنامه اي (سورس کد) با زبان سي شارپ داشتم که کار ارسال اس ام اس رو انجام بده . و سرانجام داخل همين فروم پيدا کردم . منتها به زبان VB.net .

متاسفانه ساختار کد به نحواي است که نمي تونم معادل سازي دقيقي انجام بدم . آيا کسي ميتونه براي تبديل دقيق اين کد به سي شارب بنده را رهنمايي کنه ؟ آيا راه حلي وجود داره ؟

r00tkit
شنبه 30 مرداد 1389, 19:26 عصر
sharpdevelop این کار رومی کنه یعنی تبدیل کد های vb.net به c# و برعکس

jabbary
شنبه 30 مرداد 1389, 23:36 عصر
ممنون از راهنمايت دوسته من . اما اين ابزار خيلي خطا داره و خيلي چيزارو نمي تونه معادل سازي کنه! مثلا شما جايرگزيني براي Dim test در C شارپ داره؟

mo.esmp
یک شنبه 31 مرداد 1389, 00:56 صبح
این سایت Converter خوبی داره.
http://www.developerfusion.com/tools/convert/vb-to-csharp/
جایگزین برای Dim test وجود داره اونم استفاده از var هست که کامپایلر خودش نوع رو تشخیص میده. var test

ASKaffash
یک شنبه 31 مرداد 1389, 08:54 صبح
سلام
معادل آن این است :


Dim test As Object (http://www.aisto.com/roeder/dotnet/Default.aspx?Target=code://mscorlib:2.0.0.0:b77a5c561934e089/System.Object)



object (http://www.aisto.com/roeder/dotnet/Default.aspx?Target=code://mscorlib:2.0.0.0:b77a5c561934e089/System.Object) test;

jabbary
یک شنبه 31 مرداد 1389, 10:04 صبح
باز هم متشکر از راهنمايي دوستان . اما هيچ کدام از اين ابزار ها درست تبديل نمي کنند !! و برنامه سراسر از خطاست !!

jabbary
یک شنبه 31 مرداد 1389, 12:51 عصر
سلامي دوباره !
مشکم را با نرم افزار Red Gate's Reflector تونستم تا حدودي حل کنم و مابقي ساختار ها رو مجبور شدم دستي چک کنم و بازسازي کنم . مثلا ساختار هايي مثل اين قطعه کد مشکل ساز مي شدن :

در VB:

Shared Function Swap(ByRef TwoBitStr As String) As String
'Swap two bit like "EF" TO "FE"
Dim c() As Char = TwoBitStr.ToCharArray
Dim t As Char
t = c(0)
c(0) = c(1)
c(1) = t
Return (c(0) + c(1)).ToString
End Function

و در C#‎‎ :

public static string Swap(ref string TwoBitStr)
{
//Swap two bit like "EF" TO "FE"
char[] c = TwoBitStr.ToCharArray();
char t = '\0';
t = c[0];
c[0] = c[1];
c[1] = t;
return (c[0] + c[1]);
}

در اين تابع اگر TwoBitStr مقدار 98 را داشته باشه در خروجي بايد عدد 89 را برگشت دهد اما به اشتباه مجموع کد اسکي اين 2 عدد را بر مي گرداند (‌113‌) . و براي معادل سازي آن بايد Tostring() به آخر آنها افزود! بدين صورت :


public static string Swap(ref string TwoBitStr)
{
//Swap two bit like "EF" TO "FE"
char[] c = TwoBitStr.ToCharArray();
char t = '\0';
t = c[0];
c[0] = c[1];
c[1] = t;
return (c[0].ToString() + c[1].ToString());
}