PDA

View Full Version : تبدیل معادل تابع MID از VB.NET به C#‎‎.NET



مهدی رحیم زاده
شنبه 27 شهریور 1389, 07:00 صبح
با سلام
من این کد رو دارم که با VB.NET نوشتنش . حالا می خوام که اونو به سی شارپ تبدیل کنم اما درست نمیدونم که این کد چه کاری رو انجام میده . ممنون میشم اگر کسی از دوستان هست که بتونه بنده رو راهنمایی کنه.

Val("&H" & Mid(Codes(i), 1, 2)) * 2 - 2) / 2
با تشکر

sinashahab
شنبه 27 شهریور 1389, 12:04 عصر
اگه اشتباه نکنم توی VB6 ام آی دی باقی مانده رو به دست میاورد .

اگه اینطوره پس میشه % به جای Mid.

نوشتیش بزار منم ببینم:لبخند:.

com_eng_abasszadeh
شنبه 27 شهریور 1389, 12:35 عصر
اگه اشتباه نکنم توی VB6 ام آی دی باقی مانده رو به دست میاورد .

اگه اینطوره پس میشه % به جای Mid.

نوشتیش بزار منم ببینم:لبخند:.
نه دوست عزیز این فرق میکنه.تابع MID توی VB کار با رشته هاست که میگه از اندیس چندم رشته شروع کنم و به چه مقدار از رشته ورودی رو بگیرم که توی سی شارپ SubStringهست.
textbox1.text.substring(int start index,int lenght)

مهدی رحیم زاده
شنبه 27 شهریور 1389, 12:50 عصر
پس با این حساب میشه به جای این:

Mid(Codes(i), 1, 2))
نوشت :

Code[i].SubString(1,2)
درسته؟
اما من هنوز مفهوم کد بالا رو درست نفهمیدم . تابع Val که مقدار رشته رو به Integer تبدیل می کنه درسته؟
پس این چیه؟

("&H" &
حاصل کل اون عبارت میشه چی؟
با تشکر

ASKaffash
شنبه 27 شهریور 1389, 13:50 عصر
سلام
شبیه این :


(Val("&H"+Codes[i].Substring(0, 2)) * 2 - 2) / 2

sinashahab
شنبه 27 شهریور 1389, 14:03 عصر
جواب به دست اومده رو بگو شاید بتونم تشخیص برم کار &H چی هست ؟!

ASKaffash
شنبه 27 شهریور 1389, 14:07 عصر
جواب به دست اومده رو بگو شاید بتونم تشخیص برم کار &H چی هست ؟!
&H در Vb6 شروع یک عدد Hex است

مهدی رحیم زاده
شنبه 27 شهریور 1389, 16:17 عصر
پس نتیجه این میشه :
عدد مورد نظر رو که به شکل رشته ذخیره شده رو در مبنای 16در نظر می گیره .اونو به مبنای 10 تبدیل می کنه بعد عملات مورد نظر رو روش انجام میده که همون ضرب و تقسیمه.
درسته؟

sinashahab
شنبه 27 شهریور 1389, 21:37 عصر
پس نتیجه این میشه :
عدد مورد نظر رو که به شکل رشته ذخیره شده رو در مبنای 16در نظر می گیره .اونو به مبنای 10 تبدیل می کنه بعد عملات مورد نظر رو روش انجام میده که همون ضرب و تقسیمه.
درسته؟
تا اینجا که من فهمیدم به نظرم درسته .:چشمک:

مهدی رحیم زاده
سه شنبه 30 شهریور 1389, 09:45 صبح
دوستان من که از توابع این زیاد سر در نیاوردم!
کسی میتونه معادل این دستور رو توی سی شارپ بنویسه :

Val("&H" & Mid(Codes(i), 1, 2)) * 2 - 2) / 2
ممنون میشم .
با تشکر

cheshm6k
سه شنبه 30 شهریور 1389, 11:52 صبح
سلام.
اگر پرانتز گذاری تصحیح شده من به اینصورت :



Dim Codes As String
Codes = "f54a"
Dim i As Integer
For i = 0 To Codes.Length - 1
MsgBox((Val("&H" & Mid(Codes(i), 1, 2)) * 2 - 2) / 2)
Next i



درست باشه(چون در فرمول شما پرانتزگذاری کامل نیست) ، کد شما یک کاراکتر از یک رشته(که رشته ،عددیست در مبنای 16) جدا میکنه و معادل عددی اون منهای یک رو بر میگردونه (نمیدونم چرا از اون فرمول استفاده کرده). به هر حال این کد :


string Codes = "f54a";
for(int i = 0;i<Codes.Length;i++)
{
MessageBox.Show((((int.Parse(Codes.Substring(i, 1), System.Globalization.NumberStyles.HexNumber)) * 2 - 2) / 2).ToString());
}


معادل همان دستورات بالاست . تغییر دادن اون نسبت به پرانتزگذاری مد نظر ( در صورت اشتباه من) کار سختی نیست . اما اگر سئوالی بود در خدمتم.

موفق باشید.